1. ps
process status,ps命令用于显示当前进程的状态,是瞬时的。
1.1. 参数说明:
- -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栏位。
1.2. 常用例子:
ps -A #
ps -ef # 带UID,PPIP,C与STIME
ps -aux # 以用户格式来显示所有进程,不以终端机为主
ps -axjf # 查看进程之前的管理
ps -u root # 显示root用户的所有进程
另外,ps一般都搭配grep使用,例如
ps -ef | grep PID
ps -aux | grep 'xxx' | grep -v 'grep' # grep 'xxx':查找xxx进程;grep -v 'grep':最后一定打印grep进程本身,所以要筛掉,另 ps 和 grep 指令的组合指令 pgrep
注:
linux在启动一个进程是,都会在
/proc
文件下创建一个PID
的文件夹,所以可以使用ll /proc/PID
查看某进程的更详细的内容,其中:
- cwd,进程运行的目录
- exe,执行程序的绝对路径
- cmdline,程序运行时的指令
- environ,运行时的环境变量
- fd,进程打开或使用到的文件的软连接
2. jobs
可以显示当前终端正在运行的进程。
与ps
指令不同的是他只能显示当前终端的进程。脚本指令中运行的进程不会在jobs中显示。一般只用来看后台运行的进程。
一般配合kill
, fg
, bg
, ctrl+z
, &
等组合使用。
jobs -l
可以查看进程的pid、运行状态(running, stopped, terminated等)
2.1. 返回说明:
+
表示是一个当前的作业
-
表示是一个当前作业之后的一个作业
3. top
top命令用于实时显示进程的动态。
3.1. 参数说明:
- -d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
- -q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- -c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S
- -s : 安全模式,将交谈式指令取消, 避免潜在的危机
- -i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
- -n : 更新的次数,完成后将会退出 top
- -b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
注:
上面参数均可以在进入
top
模式后再单独执行,例如top -c
和输入top
后再按c
得到的结果是一样的下面参数只能进入
top
界面后才能执行:
- m:切换内存占用显示
- t:切换cpu占用显示
- M:以占用内存情况排序
- P:以占用cpu情况排序
- T:以运行时间排序
- q:退出
3.2. 常用例子:
top -c # 显示完整录路径
top -n 2 # 更新2次后不再更新
top -d 3 # 更新周期为3s
top -p 139 # 只看139的进程
4. df
disk free,df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。
4.1. 参数说明:
- -a, --all 包含所有的具有 0 Blocks 的文件系统
- --block-size={SIZE} 使用 {SIZE} 大小的 Blocks
- -h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
- -H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
- -i, --inodes 列出 inode 资讯,不列出已使用 block
- -k, --kilobytes 就像是 --block-size=1024
- -l, --local 限制列出的文件结构
- -m, --megabytes 就像 --block-size=1048576
- --no-sync 取得资讯前不 sync (预设值)
- -P, --portability 使用 POSIX 输出格式
- --sync 在取得资讯前 sync
- -t, --type=TYPE 限制列出文件系统的 TYPE
- -T, --print-type 显示文件系统的形式
- -x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
- -v (忽略)
4.2. 常用例子:
df -h
df -i
5. lsof
list open files,是一个查看进程打开的文件的命令。
5.1. 参数说明:
- -a 指示其它选项之间为与的关系
- -c <进程名> 输出指定进程所打开的文件进程名>
- -d <文件描述符> 列出占用该文件号的进程文件描述符>
- +d <目录> 输出目录及目录下被打开的文件和目录(不递归)目录>
- +D <目录> 递归输出及目录下被打开的文件和目录目录>
- -i <条件> 输出符合条件与网络相关的文件条件>
- -n 不解析主机名
- -p <进程号> 输出指定 PID 的进程所打开的文件进程号>
- -P 不解析端口号
- -t 只输出 PID
- -u 输出指定用户打开的文件
5.2. 返回参数:
- COMMAND:程序的名称
- PID:进程标识符
- USER:进程所有者
- FD:文件描述符,应用程序通过文件描述符识别该文件
- TYPE:文件类型,如 DIR、REG 等
- DEVICE:以逗号分隔设备编号
- SIZE:文件的大小(bytes)
- NODE:索引节点(文件在磁盘上的标识)
- NAME:打开文件的确切名称
6. netstat
7. kill
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。
7.1. 信号说明:
# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
7.2. 常用例子:
常用的信号:
1 HUP (hang up)
2 INT (interrupt)
3 QUIT (quit)
6 ABRT (abort)
9 KILL (non-catchable, non-ignorable kill)
14 ALRM (alarm clock)
15 TERM (software termination signal)
18 CONT(continute)
19 STOP(stop)
kill %jobnum
kill pid
kill -s KILL 14444 # 终止pid为14444的进程,等价于 kill -9 14444
kill -s TERM 14444 # 终止pid为14444的进程,等价于 kill -15 14444,与kill信号不一样,term信号比较温和,会给进程一些时间终止其创建的线程和资源,是比较安全杀掉进程的手段
kill -s STOP 14444 # 暂停pid为14444的进程,等价于 kill -19 14444
kill -s CONT 14444 # 继续pid为14444的进程,等价于 kill -18 14444
kill -9 $(ps -ef | grep user1) # 终止所有user1的进程
kill -u user1 # 终止所有user1的进程
8. nohup
no hang up,nohup 命令忽略所有挂断(SIGHUP)信号,在终端关闭或注销后,进程也继续保持运行状态。
一般与&连用,表示不挂断放在后台运行。
8.1. 动作说明:
2>&1:表示将错误重定向到标准输出上
- /dev/null 表示空设备文件
- 0 表示stdin标准输入
- 1 表示stdout标准输出
- 2 表示stderr标准错误
8.2. 常用例子:
nohup sh xxx.sh &
nohup sh xxx.sh > out.txt 2>&1 & # 所有输出重定向到out.txt
有时候运行了
nohup
命令后,按下回车,后台任务会stopped
或者exit
,这个时候需要加上反双引号将命令括起来nohup `sh xxx.sh` &
9. fg
将后台中的命令调至前台继续运行
9.1. 常用例子:
fg %jobnum
fg pid
10. bg
将一个在后台暂停的命令,变成在后台继续执行。
与Ctrl + z
命令不一样在于,两者都可以把前台执行的进程放到后台,但Ctrl + z
还会使进程处于暂停状态。
10.1. 常用例子:
bg %jobnum
bg %pid