第四章 Linux系统进程管理服务
什么是进程?
进程的生命周期
进程状态
静态查看进程信息
ps -> process status
- -e 显示所有进程
- -f 显示所有字段(UID,PPIP,C,STIME字段)
- -a 显示一个终端的所有进程
- -u 显示当前用户进程和内存使用情况
- -x 显示没有控制终端的进程
- –sort 按照列名排序
ps -ef
:查看所有进程ps -aux
:查看所有进程ps -ef | grep tomcat
:查看指定进程
grep: Gloabal Search Regular Expression and Print out the line,意为全局搜索正则表达式并打印文本行。
ps aux 查看进程信息
[root@localhost tmp]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.2 0.8 106824 16296 ? Ss 21:11 0:01 /usr/lib/systemd/systemd rhgb --switched-root --system
root 2 0.0 0.0 0 0 ? S 21:11 0:00 [kthreadd]
USER:运行进程的用户
PID:进程ID
%CPU:CPU占用率
%MEM:内存占用率
VSZ:占用虚拟内存
RSS:占用实际内存
TTY:进程运行的终端
STAT:进程状态 R:运行 S:休眠的进程 T :停止的进程 Z :僵尸进程 X:死掉进程
START:进程的启动时间
TIME:CPU占用的时间 秒
COMMAND:进程文件进程名字
ps aux --sort %cpu 进程排序
ps a
ps aux --sort %cpu
[root@localhost tmp]# ps aux --sort %cpu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 106824 16156 ? Ss 21:11 0:01 /usr/lib/systemd/systemd rhgb --switched-root --system
root 2 0.0 0.0 0 0 ? S 21:11 0:00 [kthreadd]
[root@localhost tmp]# ps aux --sort -%cpu | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1801 1.1 15.8 3571116 312012 ? Ssl 21:12 0:21 /usr/bin/gnome-shell
root 1952 0.3 0.4 240748 9816 ? Ss 21:12 0:06 /usr/libexec/sssd/sssd_kcm --uid 0 --gid 0 --logger=files
root 1377 0.2 10.5 779036 207012 ? Ssl 21:11 0:03 /usr/libexec/packagekitd
root 588 0.1 0.0 0 0 ? I 21:11 0:02 [kworker/0:4-mpt_poll_0]
[root@localhost tmp]#
ps -ef| head -5 查看父进程
ps -ef| head -5 查看父进程
[root@localhost tmp]# ps -ef| head -5
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 21:11 ? 00:00:01 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 31
root 2 0 0 21:11 ? 00:00:00 [kthreadd]
root 3 2 0 21:11 ? 00:00:00 [rcu_gp]
root 4 2 0 21:11 ? 00:00:00 [rcu_par_gp]
[root@localhost tmp]#
ps axo user,pid,command | head -5 自定义展示column
ps axo user,pid,command | head -5
[root@localhost tmp]# ps axo user,pid,command | head -5
USER PID COMMAND
root 1 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 31
root 2 [kthreadd]
root 3 [rcu_gp]
root 4 [rcu_par_gp]
[root@localhost tmp]#
动态查看进程信息
[root@localhost tmp]# top
top - 21:55:41 up 44 min, 2 users, load average: 0.87, 0.34, 0.14
Tasks: 224 total, 1 running, 223 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 0.7 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
MiB Mem : 1924.1 total, 62.5 free, 1407.4 used, 634.5 buff/cache
MiB Swap: 2048.0 total, 2041.4 free, 6.5 used. 516.7 avail Mem
top - | 21:55:41 |
up 44 min |
2 users |
load average: |
0.87, |
0.34, |
0.14 |
|
程序名 | 系统时间 | 运行时间 | 登录用户数 | CPU负载 | 1分钟之内平均消耗CPU占比 | 5 | 15分钟 | |
Tasks: |
224 total, |
1 running |
23 sleeping |
0 stopped |
0 zombie |
|||
总进程数 | 运行数 | 休眠进程数 | 停止状态进程数 | 僵尸进程数 | ||||
%Cpu(s) |
2.0 us |
0.7 sy |
0.0 ni |
97.0 id |
0.0 wa |
0.0 hi |
0.3 si |
0.0 st |
CPU使用占比 | us用户登录之后占用bi | 系统用户 | ni优先级 | id空闲时间占比 | wa等待时间占比 | hi硬件 | si软件 | st虚拟机 |
MiB Mem |
1924.1 total |
62.5 free |
1407.4 used |
634.5 buff/cache |
||||
物理内存 |
[root@localhost tmp]# top
// 回车立刻刷新 按 z彩色显示 按 F 通过光标设置
[root@localhost tmp]# top -d 1
每秒刷新一次
[root@localhost tmp]# top -d 1 -p 10126
查看指定进程动态信息
[root@localhost tmp]# top -d 1 -p 10126,1
查看多个进程信息
使用信号控制进程
信号种类
[root@localhost ~]# kill -l
kill -l 展示所有信号
kill -l
[root@localhost ~]# 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) SIGHUP 重新加载配置
2) SIGINT 键盘中断Ctrl+C
3) SIGQUIT 键盘退出Ctrl+\,类似SIGINT
9) SIGKILL 强制终止,无条件
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 暂停
20) SIGTSTP 键盘暂停Ctrl+Z
信号9,15
kill -15 3881
[root@localhost ~]# ps aux |grep vim
root 3881 0.0 0.4 229804 9472 pts/1 S+ 22:50 0:00 vim file1
root 3917 0.1 0.4 229804 9580 pts/2 S+ 22:51 0:00 vim file2
root 3936 0.0 0.1 221680 2360 pts/0 S+ 22:51 0:00 grep --color=auto vim
[root@localhost ~]# kill -15 3881
[root@localhost ~]#
[root@localhost ~]# tty
/dev/pts/1
[root@localhost ~]# vim
[root@localhost ~]# vim file1
Vim: Caught deadly signal TERM
Vim: preserving files...
Vim: Finished.
kill -9 3917
[root@localhost ~]# kill -9 3917
[root@localhost ~]#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii已杀死
[root@localhost ~]#
进程优先级nice
ps axo pid,command,nice --sort=-nice | head -10 查看前10条的process
[root@localhost ~]# ps axo pid,command,nice --sort=-nice | head -10
PID COMMAND NI
33 [khugepaged] 19
800 /usr/sbin/alsactl -s -n 19 -
32 [ksmd] 5
765 /usr/libexec/rtkit-daemon 1
1 /usr/lib/systemd/systemd rh 0
2 [kthreadd] 0
11 [kworker/u256:1-events_unbo 0
12 [rcu_tasks_kthre] 0
13 [rcu_tasks_rude_] 0
& 后台启动
[root@localhost ~]# sleep 8000 &
[3] 3026
[root@localhost ~]# ps axo pid,command,nice --sort=-nice | grep sleep
3012 sleep 6000 0
3017 sleep 7000 0
3026 sleep 8000 0
3059 grep --color=auto sleep 0
[root@localhost ~]#
改变优先级
[root@localhost ~]# nice -n -5 sleep 7000 &
[4] 3091
[root@localhost ~]# ps axo pid,command,nice --sort=-nice | grep sleep
3012 sleep 6000 0
3017 sleep 7000 0
3026 sleep 8000 0
3097 grep --color=auto sleep 0
3091 sleep 7000 -5
renice -20 3012 重置优先级
[root@localhost ~]# renice -20 3012
3012 (process ID) 旧优先级为 0,新优先级为 -20
[root@localhost ~]# ps axo pid,command,nice --sort=-nice | grep sleep
3017 sleep 7000 0
3026 sleep 8000 0
3152 grep --color=auto sleep 0
3091 sleep 7000 -5
3012 sleep 6000 -20
[root@localhost ~]#
jobs 查看后台进程
[root@localhost ~]# jobs
[1] 运行中 sleep 6000 &
[2] 运行中 sleep 7000 &
[3]- 运行中 sleep 8000 &
[4]+ 运行中 nice -n -5 sleep 7000 &
fg 4 把4号任务放到前台
[root@localhost ~]# fg 4
nice -n -5 sleep 7000
Ctrl + Z 是将当前前台任务放到后台但是是暂停状态
^Z
[4]+ 已停止 nice -n -5 sleep 7000
[root@localhost ~]# jobs
[1] 运行中 sleep 6000 &
[2] 运行中 sleep 7000 &
[3]- 运行中 sleep 8000 &
[4]+ 已停止 nice -n -5 sleep 7000
[root@localhost ~]#
bg 再次将进程在后台运行起来
[root@localhost ~]# bg 4
[4]+ nice -n -5 sleep 7000 &
[root@localhost ~]# jobs
[1] 运行中 sleep 6000 &
[2] 运行中 sleep 7000 &
[3]- 运行中 sleep 8000 &
[4]+ 运行中 nice -n -5 sleep 7000 &
[root@localhost ~]#
kill %4 把4号任务杀掉
[root@localhost ~]# kill %4
[4]+ 已终止 nice -n -5 sleep 7000
[root@localhost ~]# jobs
[1] 运行中 sleep 6000 &
[2]- 运行中 sleep 7000 &
[3]+ 运行中 sleep 8000 &
ls /proc/ 查看所有进程PID
[root@localhost ~]# ls /proc/
1 1802 2 2362 37 550 71 777 cgroups meminfo
10 1832 2001 24 38 551 72 779 cmdline misc
1099 1839 2002 25 39 552 721 78 consoles modules
# cat /proc/cpuinfo 查看CPU信息
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
# cat /proc/meminfo 查看内心信息
[root@localhost ~]# cat /proc/meminfo
MemTotal: 1970292 kB
MemFree: 69296 kB
MemAvailable: 586092 kB
# cat /proc/cmdline 查看内核信息
[root@localhost ~]# cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-362.el9.x86_64 root=/dev/mapper/cs-root ro resume=/dev/mapper/cs-swap rd.lvm.lv=cs/root rd.lvm.lv=cs/swap rhgb quiet