Linux常用命令详解
目录相关命令
pwd
pwd:print working directory 打印工作目录,即显示当前目录
cd
cd : change directory 切换目录
cd:切换到家目录
cd ~:切换到家目录
cd username:切换到指定用户家目录
cd -:切换到上一个目录,系统会自动保存上一个目录至$OLDPWD
cd …:切换到上一级目录
[root@Beyo home]# cd ~
[root@Beyo ~]# pwd
/root
[root@Beyo ~]# cd -
/home
[root@Beyo home]# echo $OLDPWD
/root
ls
ls : list 列出指定目录的文件,默认是当前目录。
ls -a:–all,显示所有文件,包括隐藏文件
ls -A:显示除了.和…以外的所有文件
ls -l:–long,长格式列表,即显示文件的详细信息
drwxr-xr-x 2 root root 109 Dec 2 18:46 apps
-rw-r--r-- 1 root root 230 Dec 2 18:46 build.info
第一列:第1位-文件类型;第234位-文件属主权限;第567位-文件属主所在用户组权限;第8910位-其他用户和组的权限
第二列:文件被硬链接的次数
第三位:文件属主
第四列:文件属主所在用户组
第五列:文件大小,单位是字节
ls -h:–human-readable,对文件大小单位进行换算,成为人类易于读取的单位
ls -d:查看目录本身,常和-l一起使用,用于查看目录本身的属性
ls -r:–reverse,逆序显示
ls -R:–recursive,递归显示
tree
tree:用于以树状图的形式列出目录内容及结构
tree -a:显示所有文件,包括隐藏文件
tree -d:仅显示文件夹
tree -f:以指定目录为根节点显示绝对路径
[root@Beyo dbbackup]# tree -adf
.
├── ./daily
└── ./dbbackup
├── ./dbbackup/file
├── ./dbbackup/log
└── ./dbbackup/sh
文件查看相关命令
cat
cat:concatenate,查看文本文件
cat -n:显示行号
cat -E:显示行结束符$
tac
与cat相同,但文件内容按行逆序显示
more
more [options] file […]:用于查看纯文本文件(内容较多的),more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容,可以使用空格或回车翻页
less
与more类似,还支持上下翻页
head
head [OPTION]… [FILE]…:用于查看纯文本文件的前n行
head -10 readme:查看readme文件的前10行
tail
tail [OPTION]… [FILE]…:用于查看纯文本文件的后N行或持续刷新文件的最新内容
tail -n :查看文件后n行
tail -f :事实动态显示文件追加内容,常用于查看日志文件
wc
wc:用于统计指定文本文件的行数、字数或字节数
wc -l:只显示行数
wc -w:只显示单词数
wc -c:只显示字节数
stat
stat:用于查看文件的具体存储细节和时间等信息,英文全称为“status”
[root@Beyo dbbackup]# stat database.sql
File: ‘database.sql’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 137289237 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-02-21 17:18:38.124132965 +0800
Modify: 2022-02-21 17:26:34.539100651 +0800
Change: 2022-02-21 17:26:34.539100651 +0800
Birth: -
Linux系统中的文件包含3种时间状态,分别是Access Time(内容最后一次被访问的时间,简称为Atime),Modify Time(内容最后一次被修改的时间,简称为Mtime)以及Change Time(文件属性最后一次被修改的时间,简称为Ctime)
file
file:查看文件类型
echo
echo:回显
echo -n :不换行回显
echo -e:让转义符“\”生效,\n换行,\t横向制表符,\v竖向制表符,\b退格
字符串可不加引号,也可使用单双引号,单引号-强引用,变量引用不会生效,双引号-弱引用,变量引用会生效
注意:变量引用的正规用法:${name}
[root@Beyo]# name=Beyo
[root@Beyo]# echo '$name'
$name
[root@Beyo]# echo "$name"
Beye
文件操作命令
cp
cp命令用于复制文件或目录
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |
rm
rm命令用于删除文件或目录,在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在rm命令后跟上-f参数来强制删除。另外,要想删除一个目录,需要在rm命令后面加一个-r参数才可以,否则删除不掉。
参数 | 作用 |
---|---|
-f | 强制执行 |
-i | 删除前询问 |
-r | 删除目录 |
-v | 显示过程 |
mv
mv命令用于剪切或重命名文件,英文全称为“move”,语法格式为“mv [参数] 源文件名称 目标文件名称”。
剪切操作不同于复制操作,因为它默认会把源文件删除,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实也就是对该文件进行了重命名操作
touch
touch命令用于创建空白文件或设置文件的时间
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
mkdir
mkdir命令用于创建空白的目录,英文全称为“make directory”,语法格式为“mkdir [参数] 目录名称”。除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套层叠关系的文件目录
关机重启
shutdown
shutdown [OPTIONS…] [TIME] [WALL…]
OPTIONS…
shutdown -r:重启
shutdown -h:关机
shutdown -c:取消重启或关机任务
TIME
now 现在
hh:mm 几点几分
+m m分钟后关机
WALL…:发送给所有终端的消息
poweroff
命令会涉及硬件资源的管理权限,因此最好还是以root管理员的身份来关闭电脑
reboot
重启,由于重启计算机这种操作会涉及硬件资源的管理权限,因此最好是以root管理员的身份来重启,普通用户在执行该命令时可能会被拒绝
halt
关机
日期时间相关命令
linux系统中,系统启动时从硬件读取时间信息,读取完成以后,就不再与硬件关联
系统时钟:date
硬件时钟:clock
date
date [OPTION]… [+FORMAT] :显示日期时间
date +%Y-%m-%d\ %H:%M:%S:日期时间
date +%F\ %T:日期时间
date +%s :时间戳,从1970年1月1日0时起到命令执行时经过的秒数
date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]:设置日期时间
date 101008082013.08:设置时间为2013年10月10号08时08分08秒
[root@Beyo ~]# date
Sat Mar 26 12:28:18 CST 2022
[root@Beyo ~]# date +%Y-%m-%d\ %H:%M:%S
2022-03-26 12:28:33
[root@Beyo ~]# date +%F\ %T
2022-03-26 12:28:41
[root@Beyo ~]# date +%s
1648268926
clock(hwclock)
clock [function] [option…]:显示或设置硬件时钟
clock -s:以硬件时钟为准设置系统时间
clock -w:以系统时间为准设置硬件时钟
[root@Beyo ~]# date
Sat Mar 26 12:37:16 CST 2022
[root@Beyo ~]# clock
Sat 26 Mar 2022 12:37:22 PM CST -0.505669 seconds
[root@Beyo ~]# clock -w
[root@Beyo ~]# clock
Sat 26 Mar 2022 12:37:52 PM CST -0.724892 seconds
cal
cal [options] [[[day] month] year]:显示日历
[root@Beyo ~]# cal
March 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
搜索命令
find
find:用于按照指定条件来查找文件所对应的位置
参数 | 作用 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(-n指n天以内,+n指n天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
-type b/d/c/p/l/f | 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
-prune | 忽略某个目录 |
-exec …… {}; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) |
grep
grep:用于按行提取文本内容
参数 | 作用 |
---|---|
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有“关键词”的行。 |
alisa
alias:获取所有命令别名
定义别名:alias NAME=‘COMMAND’ 仅对当前shell进程有效
撤销别名:unalias NAME
which
which:用于按照指定名称快速搜索二进制程序(命令)所对应的位置
which –skip-alias:忽略别名
[root@Beyo ~]# which tree
/usr/bin/tree
whereis
whereis:用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置
whereis -b:仅搜索二进制程序路径
whereis -m:仅搜索使用手册路径
[root@Beyo ~]# whereis tree
tree: /usr/bin/tree /usr/share/man/man1/tree.1.gz
[root@Beyo ~]# whereis which
which: /usr/bin/which /usr/share/man/man1/which.1.gz
who
who:用于查看当前登入主机的用户终端信息
who -b:系统此次启动的时间
who -d:显示系统死亡的进程
who -r:运行级别
[root@Beyo ~]# who -b
system boot 2022-03-26 13:15
[root@Beyo ~]# who -r
run-level 3 2022-03-26 13:15
w
显示当前登录到系统的所有用户
history
history:命令用于显示执行过的命令历史,历史命令会被保存到用户家目录中的.bash_history文件中。
history -c:清空当前用户在本机上执行的Linux命令历史记录信息,仅删除内存中的命令,不删除.bash_history文件中的
history -d:从指定位置删除某条历史命令,参数cd可以连用,表示从指定位置删除历史列表
history -r:从.bash_history文件中读取并写入内存
history -w:把历史列表中的命令追加至.bash_history文件中
history 数字:显示最近n条历史
[root@Beyo ~]# echo $HISTFILE
/root/.bash_history
[root@Beyo ~]# echo $HISTSIZE
1000
调用历史命令列表中的命令:
!5:再次执行列表中的第五条命令
!!:再次执行上个命令
!STRING:再一次执行命令列表中最近一个以STRING开头的命令
系统工作命令
ps
ps命令用于查看系统中的进程状态,英文全称为“processes”
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。
除了上面5种常见的进程状态,还有可能是高优先级(<)、低优先级(N)、被锁进内存(L)、包含子进程(s)以及多线程(l)这5种补充形式。
top
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.9 us, 0.7 sy, 0.0 ni, 97.0 id, 0.3 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 1862992 total, 68180 free, 831924 used, 962888 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 781836 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2203 root 20 0 1095180 339380 40520 S 2.7 18.2 2:51.54 kube-apiserver
2285 root 20 0 811776 80640 30892 S 1.3 4.3 1:38.12 kube-controller
第1行:系统时间、运行时间、登录终端数、系统负载(3个数值分别为1m、5m、15m内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“99.9 id”意味着有99.9%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。
nice
nice命令用于调整进程的优先级,在top命令输出的结果中,PR和NI值代表的是进程的优先级,数字越低(取值范围是-20~19),优先级越高。在日常的生产工作中,可以将一些不重要进程的优先级调低,让紧迫的服务更多地利用CPU和内存资源,以达到合理分配系统资源的目的。
[root@Beyo ~]# nice -n -20 bash
kill
kill:用于终止某个指定PID值的服务进程
killall
killall:用于终止某个指定名称的服务所对应的全部进程
[root@Beyo ~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@Beyo ~]# killall httpd
[root@Beyo ~]# pidof httpd
[root@Beyo ~]#
ping
ping命令用于测试主机之间的网络连通性
参数 | 作用 |
---|---|
-c | 总共发送次数 |
-l | 指定网卡名称 |
-i | 每次间隔时间(秒) |
-W | 最长等待时间(秒) |
netstat
netstat命令用于显示如网络连接、路由表、接口状态等的网络相关信息
参数 | 作用 |
---|---|
-a | 显示所有连接中的Socket |
-p | 显示正在使用的Socket信息 |
-t | 显示TCP协议的连接状态 |
-u | 显示UDP协议的连接状态 |
-n | 使用IP地址,不使用域名 |
-l | 仅列出正在监听的服务状态 |
-i | 显示网卡列表信息 |
-r | 显示路由表信息 |
last
last命令用于调取主机的被访记录
free
free命令用于显示当前系统中内存的使用量信息
参数 | 作用 |
---|---|
-h | 以人类可读的单位显示 |
-g/-m/-k | 以gb、mb、kb显示 |
uptime
uptime命令用于查看系统的负载信息,可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况
uname
uname命令用于查看系统内核版本与系统架构等信息,在使用uname命令时,一般要固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、压制时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息
ifconfig
ifconfig命令用于获取网卡配置与网络状态等信息,使用ifconfig命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量
ip addr
与ifconfig相似
命令类型
1、外部命令;2、shell内嵌命令
使用type查看命令类型,内部命令显示为builtin,外部命令显示为命令文件路径
[root@Beyo ~]# type alias
alias is a shell builtin
[root@Beyo ~]# type tree
tree is hashed (/usr/bin/tree)