Linux进程管理
PS(静态)
ps:Process Status 相当于Windows上的任务管理器
a:查看所有和终端有关的进程
u:查看进程启动的用户
x:查看所有和终端无关的进程
o:自定义显示的列
-ef:查看进程
--sort:指定列进行排序
## 判断一个服务是否存活
ps aux '服务'
ps -ef|grep '服务'
## 后台进程
grep --color=auto '服务'
## 过滤进程时,不显示grep进程
[root@yum_repo ~]# ps aux|grep -c [n]ginx
21
[root@yum_repo ~]# ps aux|grep nginx|grep -vc grep
21
## 查看指定进程的pid
[root@yum_repo ~]# pgrep nginx
[root@yum_repo ~]# pidof nginx
## 树状显示进程
[root@yum_repo ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─agetty
├─auditd───{auditd}
├─crond───crond───sh───ntpdate
├─dbus-daemon
├─gssproxy───5*[{gssproxy}]
├─master─┬─pickup
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
├─vmtoolsd───{vmtoolsd}
└─vsftpd
## ps命令结果
[root@yum_repo ~]# ps aux
USER:启动进程的用户
PID:进程的ID号
%CPU:该进程占用CPU的百分比
%MEM:该进程占用内存的百分比
VSZ:虚拟机内存的使用大小
RSS:真实物理内存使用大小
TTY:终端
- ?:内核占用的终端
- pts/0:使用远程工具产生的虚拟终端(Xshell、CRT、WindTerm...)
- tty1:物理终端
STAT:进程的状态
S:处于休眠状态的进程
s:父进程
+:前台运行
R:正在运行的进程
D:通IO的进程,不可中断
T:暂停的进程
Z:僵尸进程
<:优先级高的进程
N:优先级较低的进程
l:线程
进程管理命令—top(动态命令)
L:被锁进内存页的进程
|:多进程
X:死掉的进程
START:服务启动的时间
TIME:该进程使用CPU的时间
COMMAND:该进程启动的命令
## 使用ps的作用,大部分情况,都是查看该服务是否启动成功,判断服务是否存
TOP(动态)
top - 19:51:06 up 3:09, 1 user, load average: 0.00, 0.01, 0.05
当前时间 运行了时间 当前登录的用户 系统负载 1分钟平均 5分钟 15分钟
Tasks: 91 total, 1 running, 90 sleeping, 0 stopped, 0 zombie
进程: 进程总数 真正运行的进程数 休眠的进程数 暂停的进程数 僵尸进程
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
CPU百分比: 用户 内核 优先级 空闲 等待 硬中断 软中断 虚拟化
KiB Mem : 2027868 total, 1575908 free, 215236 used, 236724 buff/cache
内存: 总内存 可用内存 已经使用 缓冲区/缓存区使用的内存大小
KiB Swap: 1048572 total, 1048572 free, 0 used. 1658888 avail Mem
虚拟内存: 总内存 可用内存 已经使用 全部内存
PID user PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
pid号 用户内存|优先级|虚拟内存|真实内存|闪存 状态 cpu占用 内存占用 时间 启动命令
中断
中断是系统用来影响硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理
程序来影响设备的请求
中断的作用:是为了让计算机可以处理更多的请求
只有中断,存在的问题:会导致数据丢失
解决办法:
将中断,分为两个部分
硬中断:快速处理任务,临时保存在内存里
软中断:延迟处理未完成的任务
[root@yum_repo ~]# yum install -y htop
[root@yum_repo ~]# yum install -y glances
[root@yum_repo ~]# htop
[root@yum_repo ~]# glances
# -n:指定查看几次结果
[root@yum_repo ~]# top -n 5
# -d:指定更新时间(默认3s更新一次数据)
[root@yum_repo ~]# top -d 1 -n 5
kill信号管理
# -p:指定想查看的进程PID
[root@yum_repo ~]# top -p 1278
[root@yum_repo ~]# top -p $(pidof nginx|tr ' ' ',')
# -b:将多次结果保存到文件中
[root@yum_repo ~]# top -d 1 -n 3 -b > /tmp/1.txt
top 常见指令
h 查看帮出
z 高亮显示
1 显示所有CPU的负载
s 设置刷新时间
b 高亮现实处于R状态的进程
M 按内存使用百分比排序输出
P 按CPU使用百分比排序输出
R 对排序进行反转
f 自定义显示字段
k kill掉指定PID进程
W 保存top环境设置 ~/.toprc
q 退出
kill信号管理
[root@yum_repo ~]# 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
## 重新加载服务配置文件
[root@yum_repo ~]# kill -1 8582
[root@yum_repo ~]# kill -HUP 8582
## 中断一个正在运行的程序 Ctrl + c
[root@yum_repo ~]# kill -2 8779
[root@yum_repo ~]# kill -INT 8779
## 退出程序
[root@yum_repo ~]# systemctl stop nginx
[root@yum_repo ~]# kill -3 8582
[root@yum_repo ~]# kill -QUIT 8582
## 强制结束程序,该信号不能被捕获
[root@yum_repo ~]# kill -9 8847
[root@yum_repo ~]# kill -KILL 8847
## 默认退出信号
[root@yum_repo ~]# kill 1122
[root@yum_repo ~]# kill -15 1122
[root@yum_repo ~]# kill -TERM 1122
## 让被暂停的程序恢复运行
[root@yum_repo ~]# kill -18 8870
## 让程序暂停 Ctrl + z
[root@yum_repo ~]# kill -19 8884
[root@yum_repo ~]# kill -20 8896