# 概述 本文会不间断持续更新 Linux 常用命令 # 文件和目录 ## pwd - 显示当前工作目录 **作用** >执行 pwd 指令可立刻得知目前所在的工作目录的绝对路径名称。 **语法** >pwd(选项) **选项** >--help:显示帮助信息; --version:显示版本信息。 **DEMO** ```linux [root@localhost ~]# pwd #输出结果 # /root ``` ## ls - 显示子目录和文件 **作用** >用于显示指定工作目录下之内容,包括当前工作目录下的所有文件及子目录 **语法** >ls(选项)(参数) **选项** >-a:显示所有档案及目录(ls 内定将档案名或目录名称为“.”的视为隐藏,不会列出); -A:显示除隐藏文件 “.” 和 “..” 以外的所有文件列表; -C:多列显示输出结果。这是默认选项; -l:与`-C`选项功能相反,所有输出信息用单列格式输出,不输出为多列; -F:在列出的文件名称后加一符号;例如可执行档则加 "\*", 目录则加 "/"。具体含义: `\*`:表示具有可执行权限的普通文件,`/`:表示目录,`@`:表示符号链接,`|`:表示命令管道FIFO,`=`:表示 sockets 套接字。当文件为普通文件时,不输出任何标识符; -b:将文件中的不可输出的字符以反斜线 / 加字符编码的方式输出; -c:与 `-lt`选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的 ctime 字段。与 `-l`选项连用时,则排序的一句是文件的状态改变时间; -d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表; -f:此参数的效果和同时指定`aU`参数相同,并关闭`lst`参数的效果; -i:显示文件索引节点号(inode)。一个索引节点代表一个文件; --file-type:与`-F`选项的功能相同,但是不显示 \*; -k:以 KB(千字节)为单位显示文件大小; -l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等; -m:用 , 号区隔每个文件和目录的名称; -n:以用户识别码和群组识别码替代其名称; -r:以文件名反序排列并输出目录内容列表; -s:显示文件和目录的大小,以区块为单位; -t:用文件和目录的更改时间排序; -L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录; -R:递归处理,将指定目录下的所有文件及子目录一并处理; --full-time:列出完整的日期与时间; --color[=WHEN]:使用不同的颜色高亮显示不同类型的。 **DEMO** ```linux # 显示当前目录下非影藏文件与目录 ls # 显示当前目录下包括隐藏文件在内的所有文件列表 ls -a # 输出长格式列表 ls -l # 最近修改的文件显示在最上面 ls -t # 显示递归文件 ls -R # 输出结果示例 # [root@iz2ze976m9o5t3ti5aoecaz test]# ls -R # .: # 1.txt a.txt t1 # ./t1: # t2 # ./t1/t2: ``` ## mkdir - 创建目录 **作用** >如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。 在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 **语法** >mkdir (选项)(参数) **选项** >-Z:设置安全上下文,当使用SELinux时有效; -m:<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限; -p或--parents:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录; --version:显示版本信息。 **参数** >目录:指定要创建的目录列表,多个目录之间用空格隔开。 **DEMO** ```linux # 在 BBB 目录下 创建 Test 子目录 mkdir -p BBB/Test # 创建目录的同时设置权限 mkdir -m 700 /usr/meng/test ``` ## touch - 创建文件 **作用** >修改文件或者目录的时间属性,包括存取时间和更改时间 若文件不存在,系统会建立一个新的文件 **语法** ```linux touch(选项)(参数) ``` **选项** >-a:或 --time=atime 或 --time=access 或 --time=use 只更改存取时间; -c:或 --no-create 不建立任何文件; -d:<时间日期> 使用指定的日期时间,而非现在的时间; -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题; -m:或 --time=mtime 或 --time=modify 只更该变动时间; -r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同; -t:<日期时间> 使用指定的日期时间,而非现在的时间; --help:在线帮助; --version:显示版本信息。 **DEMO** ```linux # 如果文件不存在则新建空白文件,如果已经存则修改文件时间属性为当前系统时间 touch a.txt ## 查看文件属性,包括文件大小、时间等 ls -l a.txt ``` ## cat - 查看文件内容 **作用** > cat 经常用来显示一个或多个文件的内容 合并文件 清空文件内容 **语法** >cat(选项)(参数) **选项** >-n 或 -number:从 1 开始显示行数; -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号; -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行; -A:显示不可打印字符,行尾显示“$”; -e:等价于"-vE"选项; -t:等价于"-vT"选项; **参数** >文件列表:指定要连接的文件列表。 **DEMO** 假设有 a 文件 和 b 文件 ```linux # 显示 a 文件内容 cat a # 同时显示 a 和 b 文件内容 cat a b # 将 a 和 b 文件合并到 c 文件 cat a b > c # 情况 b 文件内容 cat ./null > ./b ``` > 注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。 ## cp - 复制文件和目录 **作用** >将一个或多个源文件或者目录复制到指定的目的文件或目录 **语法** >cp(选项)(参数) **选项** >-a:此参数的效果和同时指定`-dpR`参数相同; -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录; -f:强行复制文件或目录,不论目标文件或目录是否已存在; -i:覆盖既有文件之前先询问用户; -l:对源文件建立硬连接,而非复制文件; -p:保留源文件或目录的属性; -R/r:递归处理,将指定目录下的所有文件与子目录一并处理; -s:对源文件建立符号连接,而非复制文件; -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件; -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀; -b:覆盖已存在的文件目标前将目标文件备份; -v:详细显示命令执行的操作。 **参数** >源文件:制定源文件列表。默认情况下,cp 命令不能复制目录,如果要复制目录,则必须使用`-R`选项; 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。 **DEMO** ```linux # 将 a.txt 复制到当前子目录 test 下 cp a.txt test # 复制并修改文件名 cp a.txt test/aa.txt # 当前目录"test/"下的所有文件复制到新目录"newtest"下 cp –r test/ newtest # 以m打头的所有.c文件复制到目录/usr/zh中 cp -i /usr/men m*.c /usr/zh ``` >所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录 如果把一个文件复制到一个目标文件中,而目标文件已经存在,则目标文件会被覆盖 ## mv - 重命名/移动文件和目录 **作用** >将文件或目录重新命名,或者将文件从一个目录移到另一个目录中 如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。 >mv 与 cp 的结果不同,mv 好像文件“搬家”,文件个数并未增加。而 cp 对文件进行复制,文件个数增加了。 **语法** >mv(选项)(参数) **选项** >-b:当文件存在时,覆盖前,为其创建一个备份; -i:若指定目录已有同名文件,则先询问是否覆盖旧文件; -f:在 mv 操作要覆盖某已有的目标文件时不给任何指示; -S<后缀>:为备份文件指定后缀,而不使用默认的后缀 **参数** >源文件:源文件列表 目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下 **DEMO** ```linux # 将文件 t1 改名为 t2 mv t1 t2 # 将目录 /usr/test 中的所有文件移到当前目录(用.表示)中 mv /usr/test/* . # 将 dir 目录放入 dir1 目录中。注意,如果 dir 目录不存在,则该命令将 dir 改名为 dir1 mv /usr/test/dir/ dir1 ``` ## rm - 删除文件/目录 **作用** >删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉 对于链接文件,只是删除整个链接文件,而原有文件保持不变 >rm 一旦删除了一个文件,就无法再恢复它 **语法** >rm(选项)(参数) **选项** >-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录; -f:强制删除文件或目录; -i:删除已有文件或目录之前先询问用户; -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理; --preserve-root:不对根目录进行递归操作; -v:显示指令的详细执行过程; **参数** >文件:指定被删除的文件列表,如果参数中含有目录,则必须加上 `-r` 或者 `-R` 选项 **DEMO** ```linux # 交互式删除文件 rm -i 1.txt # 交互式删除目录 rm -ir dir # 删除当前目录下除隐含文件外的所有文件和子目录 rm -r * # 直接删除所有子目录及子目录下的所有文件和目录 rm -rf dir ``` ## file - 查看文件类型 **作用** >查看文件类型 **语法** >file (选项)(参数) **选项** >-b:列出辨识结果时,不显示文件名称; -c:详细显示指令执行过程,便于排错或分析程序执行的情形; -f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让 file 依序辨识这些文件,格式为每列一个文件名称; -L:直接显示符号连接所指向的文件类别; -m<魔法数字文件>:指定魔法数字文件; -v:显示版本信息; -z:尝试去解读压缩文件的内容; **参数** >文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用 shell 通配符匹配多个文件 **DEMO** ```linux # 显示文件类型 file 1.txt ``` ## grep - 文本搜索 **作用** >查找内容包含指定的范本样式的文件 **语法** >grep(选项)(参数) **选项** >-a 不要忽略二进制数据。 -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。 -b 在显示符合范本样式的那一行之外,并显示该行之前的内容。 -c 计算符合范本样式的列数。 -C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 -d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。 -e<范本样式> 指定字符串作为查找文件内容的范本样式。 -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 -f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。 -F 将范本样式视为固定字符串的列表。 -G 将范本样式视为普通的表示法来使用。 -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。 -H 在显示符合范本样式的那一列之前,标示该列的文件名称。 -i 忽略字符大小写的差别。 -l 列出文件内容符合指定的范本样式的文件名称。 -L 列出文件内容不符合指定的范本样式的文件名称。 -n 在显示符合范本样式的那一列之前,标示出该列的编号。 -q 不显示任何信息。 -R/-r 此参数的效果和指定“-d recurse”参数相同。 -s 不显示错误信息。 -v 反转查找。 -w 只显示全字符合的列。 -x 只显示全列符合的列。 -y 此参数效果跟“-i”相同。 -o 只输出文件中匹配到的部分; **参数** >字符串范本 文件/目录 **DEMO** ```linux # 在当前目录中,查找后缀有 txt 字样的文件中包含 test 字符串的文件,并打印出该字符串的行 grep test *txt # 以递归的方式查找符合条件的文件, . 表示当前目录 grep -r test . # 在文件中搜索一个单词 grep test dir/1.txt # 在多个文件中查找 grep test 1.txt 2.txt # 打印出不符合条件行的内容 grep -v test *txt # 标记匹配颜色 --color=auto grep test dir/1.txt --color=auto # 正则匹配 grep -E "[1-9]+" 或 egrep "[1-9]+" # 统计行数 grep -c test dir/1.txt # 显示行号 grep -n test dir/1.txt ``` ## find - 查找文件 **作用** >在指定目录下查找文件 **语法** >find(选项)(参数) **选项** > **参数** >起始目录:查找文件的起始目录 **DEMO** ```linux # 列出当前目录及子目录下所有文件和文件夹 find . # 查找以当前目录及子目录下 .txt 结尾的文件名 find . -name "*.txt" # 同上,但 忽略大小写 find . -iname "*.txt" # 查找多个文件 find . -name "*.txt" -o -name "*.pdf" # 匹配文件路径或者文件 find /test/ -path "*txt" # 正则 find . -regex ".*\(\.txt\|\.pdf\)$" # 同上,忽略大小写 find . -iregex ".*\(\.txt\|\.pdf\)$" # 找出不是以 .txt 结尾的文件 find . ! -name "*.txt" # 查找权限为777的文件 find . -type f -perm 777 # 当前目录用户 xxx 拥有的所有文件 find . -type f -user xxx # 当前目录用户组 yyy 拥有的所有文件 find . -type f -group yyy # 找出当前目录下某用户的文件,并把所有权改为其它用户 find .-type f -user xxx -exec chown yyy {} \; #找出自己家目录下所有的 .txt 文件并删除 find $HOME/. -name "*.txt" -ok rm {} \; # 将30天前的.log文件移动到old目录中 find . -type f -mtime +30 -name "*.log" -exec cp {} old \; # 列出所有长度为零的文件,即空文件 find . -empty # 删除匹配文件 find . -type f -name "*.txt" -delete # 根据文件大小匹配 find . -type f -size 文件大小单元 #大于10KB find . -type f -size +10k #小于10KB find . -type f -size -10k # 根据文件时间戳进行搜索 # 搜索最近七天内被访问过的所有文件 find . -type f -atime -7 # 搜索恰好在七天前被访问过的所有文件 find . -type f -atime 7 # 搜索超过七天被访问过的所有文件 find . -type f -atime +7 # 搜索访问时间超过10分钟的所有文件 find . -type f -amin +10 # 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。 # 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。 # 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。 ``` # 系统管理/设置 ## reboot - 重启系统 **作用** >重新启动正在运行的Linux操作系统 **选项** >reboot(选项) **参数** >-d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果; -f:强制重新开机,不调用shutdown指令的功能; -i:在重开机之前,先关闭所有网络界面; -n:重开机之前不检查是否有未结束的程序; -w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件; **DEMO** ```linux # 重开机 reboot #做个重开机的模拟,只有纪录并不会真的重开机 reboot -w ``` ## poweroff - 关机 **作用** >关闭计算机操作系统并且切断系统电源 **语法** >poweroff(选项) **选项** >-n:关闭操作系统时不执行sync操作; -w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中; -d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录; -f:强制关闭操作系统; -i:关闭操作系统之前关闭所有的网络接口; -h:关闭操作系统之前将系统中所有的硬件设置为备用模式; **DEMO** ```linux # 立即关闭系统: poweroff ``` ## date - 输出/设置系统时间 **作用** >显示或设置系统时间与日期 **语法** >date (选项)(参数) **选项** >-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号; -s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号; -u:显示GMT; **参数** ><+时间日期格式>:指定显示时使用的日期时间格式。 日期格式字符串列表 | 格式 | 描述 | | ------------ | ------------ | | %H | 小时,24小时制(00~23) | | %I | 小时,12小时制(01~12) | | %k | 小时,24小时制(0~23)| | %l | 小时,12小时制(1~12)| | %M | 分钟(00~59)| | %p | 显示出AM或PM| | %r | 显示时间,12小时制(hh:mm:ss %p)| | %s | 从1970年1月1日00:00:00到目前经历的秒数| | %S | 显示秒(00~59)| | %T | 显示时间,24小时制(hh:mm:ss)| | %X | 显示时间的格式(%H:%M:%S)| | %Z | 显示时区,日期域(CST)| | %a | 星期的简称(Sun~Sat)| | %A | 星期的全称(Sunday~Saturday)| | %h,%b |月的简称(Jan~Dec)| | %B | 月的全称(January~December)| | %c | 日期和时间(Tue Nov 20 14:12:58 2012)| | %d | 一个月的第几天(01~31)| | %x,%D | 日期(mm/dd/yy)| | %j | 一年的第几天(001~366)| | %m | 月份(01~12)| | %w | 一个星期的第几天(0代表星期天)| | %W | 一年的第几个星期(00~53,星期一为第一天)| | %y | 年的最后两个数字(1999则是99)| **DEMO** 输出日期时间 ```linux # 格式化输出 date +"%Y-%m-%d" # 显示数字日期,如:12/10/2019 date '+%x' # 输出时间,如:10:22:19 AM date '+%X' # 输出前 N 天日期 date -d "1 day ago" +"%Y-%m-%d" # 输出 N 秒(天、小时等)后的时间 date -d "2 second" +"%Y-%m-%d %H:%M.%S" ``` 设置日期时间 ```linux # 设置具体时间,不会对日期做更改 date -s 01:01:01 # 设置成20120523,这样会把具体时间设置成空00:00:00 date -s 20180523 # 设置日期和时间 date -s "01:01:01 20121022" date -s "01:01:01 2012-10-22" date -s "20120523 01:01:01" ``` ## wget - 下载文件 **作用** >从指定的 URL 下载文件,支持断点续传 **语法** >wget(选项)(参数) **选项** >-a<日志文件>:在指定的日志文件中记录资料的执行过程; -A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔; -b:进行后台的方式运行wget; -B<连接地址>:设置参考的连接地址的基地地址; -c:继续执行上次终端的任务; -C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on; -d:调试模式运行指令; -D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔; -e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令; -h:显示指令帮助信息; -i<文件>:从指定文件获取要下载的URL地址; -l<目录列表>:设置顺着的目录列表,多个目录用“,”分隔; -L:仅顺着关联的连接; -r:递归下载方式; -nc:文件存在时,下载文件不覆盖原有文件; -nv:下载时只显示更新和出错信息,不显示指令的详细执行过程; -q:不显示指令执行过程; -nh:不查询主机名称; -v:显示详细执行过程; -V:显示版本信息; --passive-ftp:使用被动模式PASV连接FTP服务器; --follow-ftp:从HTML文件中下载FTP连接文件; **参数** >URL:下载指定的URL地址 **DEMO** ```linux # 从网络下载一个文件并保存在当前目录 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # 下载并重命名文件 wget -O mysql.zip https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # 限速下载 wget --limit-rate=300k https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # 断点续传 wget -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # 后台下载 wget -b https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm ``` ## ps - 显示当前进程 **作用** >用于显示当前进程 (process) 的状态 **语法** >ps(选项) **选项** >-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。 a:显示现行终端机下的所有程序,包括其他用户的程序。 -A:显示所有程序。 -c:显示CLS和PRI栏位。 c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。 -C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。 -d:显示所有程序,但不包括阶段作业领导者的程序。 -e:此选项的效果和指定"A"选项相同。 e:列出程序时,显示每个程序所使用的环境变量。 -f:显示UID,PPIP,C与STIME栏位。 f:用ASCII字符显示树状结构,表达程序间的相互关系。 -g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。 g:显示现行终端机下的所有程序,包括群组领导者的程序。 -G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。 h:不显示标题列。 -H:显示树状结构,表示程序间的相互关系。 -j或j:采用工作控制的格式显示程序状况。 -l或l:采用详细的格式来显示程序状况。 L:列出栏位的相关信息。 -m或m:显示所有的执行绪。 n:以数字来表示USER和WCHAN栏位。 -N:显示所有的程序,除了执行ps指令终端机下的程序之外。 -p<程序识别码>:指定程序识别码,并列出该程序的状况。 p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。 r:只列出现行终端机正在执行中的程序。 -s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。 s:采用程序信号的格式显示程序状况。 S:列出程序时,包括已中断的子程序资料。 -t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。 t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。 -T:显示现行终端机下的所有程序。 -u<用户识别码>:此选项的效果和指定"-U"选项相同。 u:以用户为主的格式来显示程序状况。 -U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。 U<用户名称>:列出属于该用户的程序的状况。 v:采用虚拟内存的格式显示程序状况。 -V或V:显示版本信息。 -w或w:采用宽阔的格式来显示程序状况。  x:显示所有程序,不以终端机来区分。 X:采用旧式的Linux i386登陆格式显示程序状况。 -y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。 -<程序识别码>:此选项的效果和指定"p"选项相同。 --cols<每列字符数>:设置每列的最大字符数。 --columns<每列字符数>:此选项的效果和指定"--cols"选项相同。 --cumulative:此选项的效果和指定"S"选项相同。 --deselect:此选项的效果和指定"-N"选项相同。 --forest:此选项的效果和指定"f"选项相同。 --headers:重复显示标题列。 --help:在线帮助。 --info:显示排错信息。 --lines<显示列数>:设置显示画面的列数。 --no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。 --group<群组名称>:此选项的效果和指定"-G"选项相同。 --Group<群组识别码>:此选项的效果和指定"-G"选项相同。 --pid<程序识别码>:此选项的效果和指定"-p"选项相同。 --rows<显示列数>:此选项的效果和指定"--lines"选项相同。 --sid<阶段作业>:此选项的效果和指定"-s"选项相同。 --tty<终端机编号>:此选项的效果和指定"-t"选项相同。 --user<用户名称>:此选项的效果和指定"-U"选项相同。 --User<用户识别码>:此选项的效果和指定"-U"选项相同。 --version:此选项的效果和指定"-V"选项相同。 --widty<每列字符数>:此选项的效果和指定"-cols"选项相同。 **DEMO** ```linux # 显示进程信息 ps -A # 指定用户 ps -u root # 所有进程信息,连同命令行 ps -ef ``` ## pidof - 查找指定进程 **作用** >查找指定名称的进程的进程号id号 **语法** >pidof(选项)(参数) **选项** >-s:仅返回一个进程号; -c:仅显示具有相同“root”目录的进程; -x:显示由脚本开启的进程; -o:指定不显示的进程ID; **参数** >进程名称:指定要查找的进程名称 **DEMO** ```linux # 查看 nginx 进程 pidof nginx ``` ## top - 实时显示进程动态 **作用** >可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过 top 命令所提供的互动式界面,用热键可以管理 top命令用于实时显示 process 的动态。 使用权限:所有使用者。 > 相当于 windows 下的任务管理器 **语法** >top(选项) **选项** >-b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。 top 交互命令 在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。 >h:显示帮助画面,给出一些简短的命令总结说明; k:终止一个进程; i:忽略闲置和僵死进程,这是一个开关式命令; q:退出程序; r:重新安排一个进程的优先级别; S:切换到累计模式; s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s; f或者F:从当前显示中添加或者删除项目; o或者O:改变显示项目的顺序; l:切换显示平均负载和启动时间信息; m:切换显示内存信息; t:切换显示进程和CPU状态信息; c:切换显示命令名称和完整命令行; M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序; T:根据时间/累计时间进行排序; w:将当前设置写入~/.toprc文件中; **DEMO** ```linux # 显示进程信息 top # 显示完整命令 top -c # 显示指定的进程信息 top -p 139 // 139 为进程 id ``` ## kill - 根据进程 id 杀死进程 **作用** >kill命令用来删除执行中的程序或工作 **语法** >kill(选项)(参数) **选项** >-a:当处理当前进程时,不限制命令名和进程号的对应关系; -l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称; -p:指定kill 命令只打印相关进程的进程号,而不发送任何信号; -s <信息名称或编号>:指定要送出的信息; -u:指定用户。 **参数** >进程识别号:指定要删除的进程 **DEMO** 先用 ps / top 方法找到需要删除的进程号(PID) ```linux # 杀死某进程 kill 12345 # 强制杀死某进程 kill -9 12345 # 杀死指定用户所有进程 # 方法一 过滤出 xxx 用户进程 kill -9 $(ps -ef | grep xxx) # 方法二 kill -u xxx # 先用ps查找进程,然后用kill杀掉 ps -ef | grep vim # 上面命令查找出 vim 相关的进程,下面根据 pid 杀死进程 kill 3268 ``` ## killall - 根据进程名杀死进程 **作用** >使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程 **语法** >killall(选项)(参数) **选项** >-e:对长名称进行精确匹配; -l:忽略大小写的不同; -p:杀死进程所属的进程组; -i:交互式杀死进程,杀死进程前需要进行确认; -l:打印所有已知信号列表; -q:如果没有进程被杀死。则不输出任何信息; -r:使用正规表达式匹配要杀死的进程名称; -s:用指定的进程号代替默认信号“SIGTERM”; -u:杀死指定用户的进程; **参数** >进程名称:指定要杀死的进程名称 **DEMO** ```linux # 杀死所有同名进程 killall vi ```