我们知道Linux系统是一个文件系统,它的文件系统就类似windows系统下的磁盘文件系统。
我们连接上一台linux系统的服务器。 输入命令 :
ls -l
我们可以看到 linux系统的根目录下有这些目录
有些是linux默认的目录,有些是用户自定义的目录。
Linux默认的文件目录大概这样:
各目录的功能和作用:
/bin:二进制可执行程序、命令
bin 是 Binary (二进制文件) 的缩写, 这个目录存放一些可执行的程序、命令。
/boot:系统启动所需的一些内核文件。
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :系统中的设备(硬件在Linux中通过“文件”来标识)
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:存放系统、软件(如用户安装的软件)的配置文件。(其中/etc/profile 文件可修改环境变量)
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
比如平时我们配置jdk 的路径就在 etc 下的profile
/home:普通用户的家目录
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。一般用户自定义的软件就放在这个目录。或者自己新建具有明显标识的目录,如 app ,web,deploy等。
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:挂载外部存储设备的文件目录
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc: 内存信息
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:root用户的家目录
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:系统的可执行命令。
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:系统临时文件存放目录
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
该目录对所有用户都是可读可写可执行
/usr:共享资源目录(多个用户可以共享该目录中的程序)
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:
内核源代码默认的放置目录。
/var:易变文件的存放目录,日志
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
[root@localhost~]
解释:
[当前用户 分隔符 主机名 家目录]
更改主机名为love:hostnamectl set-hostname love
#管理员权限
$ 普通用户权限
echo
> #覆盖
>> #追加
例如:
echo hello #输出hello字符串
echo $SHELL #查看当前用户用什么做解释,输出环境变量
echo hello > 1.txt #将字符串"hello"覆盖1.txt文件内容,若没有1.txt则创建一个1.txt文件,并写入hello
echo hello >> 1.txt #将字符串"hello"追加到1.txt文件中。
date #输出具体年月日信息
date "+%Y-%m-%d" #输出格式为: "年-月-日"
date "+%Y-%m-%d %H:%M:%S" #输出格式为: "年-月-日 小时:分钟:秒"
date "+%j" #显示今天是今年的第几天
timedatectl status #查看当前状态,其中EDT为东部夏令时标准时间,UTC为世界标准时间
timedatectl list-timezones #查看区域列表
timedatectl set-zone Asia/Shanghai #设置(更改)时区为上海
reboot #重启系统
poweroff #立刻关机
shutdown now #立刻关机
shutdown #等一会关机
shutdown 23:00 #在23:00关机并发送关机通知
shutdown 23:00 #"系统将要关机" #给出关机警告,然后在23:00关机
总结而言,poweroff
命令用于立即关闭系统并关闭电源,而 shutdown
命令则提供了更多的关机计划和用户通知的功能。
wget
-b #后台下载模式
-P #下载到指定目录
-t #最大尝试次数
-c #断点续传
-p #下载页面里面所有资源
-r #递归下载
pwd #显示当前目录的绝对路径
一般与“-aux”一起使用
ps -aux
是一个常用的ps
命令选项组合。它会列出当前所有进程的详细信息,包括用户名、进程ID(PID)、CPU使用情况、内存使用情况等。
ps
-a #显示所有进程
-u #用户以及其他详细信息
-x #显示没有控制终端的进程
ps -aux
其中:
USER:进程所有者
PID:进程ID
%CPU:运算器占用率
%MEM:内存占用率
VSZ:虚拟内存占用率
RSS:占用的固定内存量
TTY:所在终端
STAT:进程状态,
进程状态又分为:
R(正在运行)
S(中断)
D(不可中断)
Z(僵死)
T(停止)
<(高优先级)
N(低优先级)
L(被锁进内存)
s(包含子进程)
I(多线程)
ps -aux |grep ssh #在Linux系统中查找所有关于 SSH 的进程信息。通过这个命令,您可以找到与 SSH 相关的正在运行的进程.
pstree #进程树
top #显示的信息有系统时间、运行时间、登录的终端数、系统负载等
pidof sshd #查询ssh进程
kill 进程ID #杀进程
killall sshd #同时杀掉多个进程,这里表示同时杀掉ssh的多个进程
man
man
命令后面跟着一个命令或者一个命令的选项,可以显示关于该命令的详细信息。
ifconfig #查看网卡流量以及IP地址
ip a #查看IP地址
ifconfig 网卡 #查看单个网卡
uname -a
uptime
一般来说,负载既不要越高越好也不要越低越好,建议负载值保持在1左右,不要超过5.
free #显示出物理内存和交换内存
free -h #以G为单位显示出物理内存和交换内存
free -m #以MB(兆)为单位显示出物理内存和交换内存
who #其中tty是终端登录,pts是远程登录
last #可以查看谁登录的,使用什么方式登录的,使用的IP,以及什么时间登录的
ping
-c #总共发送的次数
例如:ping -c3 114.114.114.144 #ping3次114.114.114.114
-l #指定网卡名称
-i #每次ping的时间间隔
-W #最长等待时间
tracepath 目标IP
在Windows中,路由追踪命令为:tracert 目的IP:
netstat
-a #显示所有socket连接
-p #显示正在使用的socket信息
-t #显示tcp协议连接状态
-n #使用IP地址,不使用域名
netstat -r #查看网关信息
route -n #查看路由信息
netstat -ano #查看监听了哪些端口
history #默认显示1000条历史命令记录
在家目录下,也能查看历史命令
cat查看.zsh_history,显示出历史命令记录
把默认显示1000条历史命令改为只显示10条历史命令
vim /etc/profile #把里面的1000改为10即可
#退出时:ESC :wq
cd .. #返回上一级目录
cd - #返回上一次目录
cd / #返回到根目录
cd ~ #返回到家目录
useradd 用户名 #添加一个用户
su 用户名 #切换用户
cat /etc/passwd #查看用户家目录
ls
-a #显示文件权限和属性
-l #显示文件权限和属性
例:ls / #列出根路径目录
ls -lh #说人话,h表示human,文件大小以人类能看懂的格式输出
tree
是一个用于以树状结构显示目录和文件的命令。它以递归方式遍历目录并显示其内容,让用户可以清晰地查看目录结构。
tree
find
-name #匹配名称
例如:find / -name root #/表示根,在根目录下面查找所有文件为名为root的目录找出来
-type #指定文件类型查找
f #(普通文件)
d #(目录)
l #(符号链接)
-a #连接两个条件,两个条件都成立
-o #连接两个条件,一个条件成立就可以
-perm #匹配权限
-user #匹配所有者
-group #匹配组
-exec ...{}\;
例如:find / -name zc*.txt -exec cp -a {} /root \; #在根目录下找所有zc.txt,*表示匹配所有(zc1,zc2等都能匹配到),-exec表示执行命令,-cp表示执行的命令,表示执行的命令是复制,-a表示尽可能保持文件的结构和属性,{}表示匹配到的所有文件,/root表示复制到根目录下。
touch #创建空白文件
例如:touch jw1.txt
rm #删除文件
例如:rm jw*.txt
cp -r text / #将text文件复制到根目录下,现在在家目录下
updatedb #使用locate前先更新以下db数据库
locate jw2.txt #快速索引搜索文件jw2.txt
whereis ls #显示ls命令的帮助文档具体位置
which ls #不显示帮助文档具体位置
cat jw1.txt #查看jw1.txt内容
cat -n jw1.txt #查看jw1.txt时,标记行号
more jw1.txt #查看jw1.txt内容时,先只列出一部分内容,然后按空格会再列出一部分内容。
head -n 8 jw1.txt #查看jw1.txt文件,只显示前8行
tail -n 5 jw1.txt #查看jw1.txt文件,只显示后5行
head -n 5 jw1.txt | tr [a-z] [A-Z] #查看jw1.txt的前五行,并将小写字母换成大写字母进行输出
wc
-l #只显示行数
例如:wc -l jw1.txt
wc -l /etc/passwd #统计linux里面一共有多少个用户
cat /etc/passwd | grep nologin | wc -l #grep表示过滤,wc -l表示行数输出
cat /etc/passwd |grep -v /bin/bash |wc -l #-v表示反选,意思是带有/bin/bash的不过滤出来
-w #只显示单词数
-c #只显示字节数
stat 文件名
grep #过滤行
-E #调用扩展正则
-o #只显示匹配具体的内容
-c #仅显示找到的行数
-i #忽略大小写
-n #显示行号
-v #反向选择
cut -d : -f 1 /etc/passwd #查看所有用户名,-d表示分割,以“:”分割,-f 1表示第一列
cp /etc/passwd ~ #将passwd复制到家目录
useradd text #加添一个text用户
diff /etc/passwd passwd #比较etc/passwd 和passwd的区别
**>**会覆盖目标的原有内容,当文件存在时,会先删除原文件,再重新创建文件,然后把内容写入该文件,否则直接创建文件。
**>>**会在目标原有内容后追加内容,当文件存在时直接在文件末尾进行内容追加,不会删除原文件,否则直接创建文件。
vim 文件名 #进入命令模式
i #按i键切换到输入模式,在光标当前位置开始输入文件。
ESC #按ESC键退出输入模式,切换到命令模式
: #切换到末行命令模式
:w #保存文件
:q #退出Vim编辑器。
:q! #强制退出Vim编辑器,不保存修改。
基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。
以下是普通模式常用的几个命令:
若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。
命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。
在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。
在输入模式中,可以使用以下按键:
在命令模式下按下 :(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
:w
:保存文件。:q
:退出 Vim 编辑器。:wq
:保存文件并退出 Vim 编辑器。:q!
:强制退出Vim编辑器,不保存修改。按 ESC 键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
ctrl+z #在vim中按ctrl+z会把进程放到后台
jobs #查看系统后台进程
uniq jw3.txt #去除jw3.txt文本中连续的重复行
-c #统计次数
touch #创建空文件,更新时间标记
-a #修改读取时间
-m #修改修改时间
-d #同时修改读取和修改时间
mkdir #创建目录
例如:mkdir join #表示在该目录下创建一个join目录
mkdir -p join/j1/j2/j3 #表示在join目录下创建j1目录,并在j1目录下创建j2目录,并在j2目录下创建j3目录
tree join #查看join目录的结构
cp
-p #保留原始文件的属性
-r #递归持续复制
-i #若目标文件存在则询问是否覆盖
-a #此参数的效果和同时指定"-dpR"参数相同
例如:
mv jw2.txt jw8.txt #将jw2.txt重命名为jw8.txt
rm
-f #强制执行
-i #删除前询问
-r #删除目录,递归删除目录中的内容
-v #显示删除过程
例如:rm -rf jw2.txt #表示强制无提示删除jw2.txt
rm -rf foo[abc] #表示删除fooa,foob,fooc
if #输入的文件名称
of #输出的文件名称
bs #块的大小
count #块的数量
例如:dd if=/dev/zero of=jwfile count=1 bs=560M
vim jq.txt #生成一个jq的文本文件,并写入
fie jq.txt #查看jq.txt的文件类型
tar
-c #创建压缩文件
-x #解开压缩文件
-t #查看压缩文件里面有哪些文件
-z #Gzip压缩格式
-j #bzip2压缩格式
-v #显示过程
-f #目标文件名称
例如:tar -cvf text.tar text #压缩文件text,压缩后的文件名为text.tar
tar -czf #Gzip压缩格式
tar -xvf text.tar #解压text.tar
gzip
gzip命令 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。
chmod -x jw1.tar.gz
gzip .gz结尾的压缩文件 #压缩
gunzip 文件 #解压缩