进程管理
进程的生命周期:
主进程pid收到信息需要处理数据的时候一般会让子进程去处理,子进程ppid处理完了之后再去把返回的结果交给主进程,如果在这个过程中主进程死了,那么子进程就会变成僵尸进程;子进程挂了对主进程没有影响。
监控进程的命令ps
ps -aux
a # all查看所有终端进程
x # 查看所有的非终端进程
u # user 这个进程启动的用户有哪些
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 125304 3832 ? Ss 06:23 0:02 /usr/lib/systemd/systemd --switched-
root 2 0.0 0.0 0 0 ? S 06:23 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 06:23 0:02 [ksoftirqd/0]
USER 启动该进程的用户
PID 进程的pid号
%CPU 占用cpu的百分比
%MEM 占用内存的百分比
VSZ 虚拟内存 (进程占用的虚拟内存)
RSS 真实物理内存 (进程占用真实的内存空间)
TTY 运行的终端
? 内核运行的终端
tty1 机器运行的终端
pts/0 远程连接的终端
STAT 进程的状态
D 无法终端的休眠状态(和i/o有关的进程)
R 正在运行的程序
S 休眠状态的
T 暂停或者被追踪的状态
W 进入交换内存
X 死掉的进程
Z 僵尸进程
< 优先级高的进程
N 优先级低的进程
s 父进程还有子进程
l 以线程方式运行
L 有些页被锁进内存
| 多进程的
+ 正在运行的程序
START 进程被触发启动的时间
TIME 该进程实际使用cpu的运行时间
COMMAND 进程的启动命令是
--sort
ps aux --sort=%cpu
USER
PID
%CPU
%MEM
VSZ
RSS
TTY
STAT
START
TIME
COMMAND
一种排序方法,sort=的内容必须是命令结果有的。 + - 可以顺序或者倒序
[root@fpm_nginx ~]# ps axo user,pid,%cpu,%mem,command
查看进程额外的命令
pgrep
[root@fpm_nginx ~]# pgrep nginx
pgrep -l -a
pidof
[root@fpm_nginx ~]# pidof nginx
[root@fpm_nginx ~]# yum -y install psmisc
pstree 命令,可以查看子进程
grep过滤进程的时候不显示grep
ps -ef | grep [n]ginx
kill-信号管理
kill
pkill
killall
kill
-l # 查看信号
[root@fpm_nginx ~]# 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
常见信号列表
数字信号 信号别名 作用
1 HUP 挂起信号,往往可以让进程重新配置
kill -s HUP
kill -1
2 INT 中断信号,起到结束作用,和ctrl+c的作用一样
kill -s INT
kill -2
3 QUIT 让进程退出,结果是进程退出
kill -s QUIT
kill -3
9 KILL 直接结束进程,不能被进程捕获
kill -s KILL
kill -9
15 TERM 进程终止,这是默认信号
kill -15
kill -s TERM
kill
18 CONT 被暂停的进程将继续恢复运行
19 STOP 暂停进程
20 TSTP 用户停止请求,作用类似于ctrl+z把进程放到后台并暂停
进程的优先级
数值越小的优先级越高
# nice
-n # 指定优先级,是在程序启动的时候,指定优先级
[root@qls ~]# nice -n -20 tail -f /var/log/messages
# renice
[root@qls ~]# ps axo nice,command|grep sshd
[root@qls ~]# renice 19 9962
后台进程管理
& # 把进程放在后台执行
ctrl + z # 暂停
bg: # 放在后台
fg: # 调出
screen
# 新建后台的进程
[root@fpm_nginx ~]# screen
# 指定后台进程的名称
[root@fpm_nginx ~]# screen -S ping
ctrl+ad 返回到终端
# 查看后台的进程
[root@fpm_nginx ~]# screen -ls
# 查看后台进程
[root@fpm_nginx ~]# screen -r 20068
nohup
[root@fpm_nginx ~]# nohup sh a.sh &