命令行学习笔记:进程相关命令

学习内容

程相关: ps, kill

个人总结

进程描述

** 进程** :当我们运行程序时,Linux 会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立运行,不受其他程序干扰。这个特殊的环境就是进程。

举例:每个 Linux 命令都与系统中的程序对应,输入命令,Linux就会创建UI个进程。简单的说,进程就是程序实例。Linux 系统通过一个五位数字跟踪程序的运行状态,这个数字称为 PID(程序状态字),用来记录当前系统的运行状态

相关命令

  • ps
    ps 查看当前正在运行的进程
    ps -f 查看当前正在运行的进程的详细信息
    ps -a 显示所有用户的所有进程
    ps -x 显示无终端的进程。
    ps -u 显示更多信息,类似于 -f 选项。
    ps -e 显示所有进程。
➜  ~ ps
  PID TTY          TIME CMD
20348 pts/23   00:00:00 zsh
20741 pts/23   00:00:00 ps

➜  ~ ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
zhyingj+ 20348  4905  0 21:47 pts/23   00:00:00 zsh
zhyingj+ 20751 20348  0 21:50 pts/23   00:00:00 ps -f

字段说明:

UID  进程所属用户的ID,即哪个用户创建了该进程。
PID  进程ID。
PPID    父进程ID,创建该进程的进程称为父进程。
C      CPU使用率。
STIME   进程被创建的时间。
TTY  与进程有关的终端类型。
TIME    进程所使用的CPU时间。
CMD     创建该进程的命令。
  • kill
    kill [参数]<进程号>杀死指定进程号的进程
    命令功能
    发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
    参数说明
    -l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
    -a 当处理当前进程时,不限制命令名和进程号的对应关系
    -p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
    -s 指定发送信号
    -u 指定用户
➜  ~ kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

信号说明
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:

HUP    1    终端断线
INT     2    中断(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \)
TERM   15    终止
KILL    9    强制终止
CONT   18    继续(与STOP相反, fg/bg命令)
STOP    19    暂停(同 Ctrl + Z)

使用
1.列出所有信号 kill -l

➜  ~ kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

2.得到指定信号数值

➜  ~ kill -l kill
9
➜  ~ kill -l INT
2

3.先用 ps 查找进程,然后 kill 掉

➜  ~ ps -ef|grep vim
zhyingj+ 23111 22309  0 22:34 pts/26   00:00:00 vim text.txt
zhyingj+ 23501 23112  0 22:36 pts/27   00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn vim
➜  ~ kill 23111    //杀死
➜  ~ kill 23111
kill: kill 23111 failed: no such process

4.强制杀死指定进程kill -9 PID

➜  ~ ps -ef|grep vim
zhyingj+ 23556 22309  0 22:39 pts/26   00:00:00 vim text.txt
zhyingj+ 23560 23112  0 22:39 pts/27   00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn vim
➜  ~ kill -9 23556
➜  ~ kill -9 23556
kill: kill 23556 failed: no such process

5.杀死指定用户所有进程

命令:
kill -9 $(ps -ef | grep peidalinux)
kill -u peidalinux

参考

每天一个 Linux 命令(42) : kill
Linux 进程管理相关内容

推荐阅读更多精彩内容