服了!新来的运维3个操作把我整蒙了
先放个链接,万一有人关注呢
优质文章推荐
↓ ↓ ↓ ↓ ↓
每个进程的CPU资源都是由系统内核分配的,并且系统内核负责管理进程。每一个进程都有其独一无二的标识符,即进程标识符,也称PID(Packet Identifier)。PID用于系统内核识别进程,便于其对进程的管理。
1.ps
Linux中的ps命令是Process Status的缩写,通常用于静态地查看当前系统中正在运行的进程。
ps命令常见参数:
a:显示当前终端下所有进程
-a:显示同一终端下所有进程
-A:显示所有进程
-e:显示所有进程
e:显示进程环境变量
u:指定用户的所有进程
-au:显示比较详细的信息
-aux:显示所有包含其他使用者的进程
以上只是ps命令的部分参数,读者可以查看ps命令的man手册,获取更多相关内容。
ps命令的具体使用方式,示例代码如下。
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...
root 2 0.0 0.0 0 0 ? S 10:17 0:00 [kthreadd]
root 3 0.1 0.0 0 0 ? S 10:17 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 10:17 0:00 [kworker/0:0]
root 5 0.0 0.0 0 0 ? S< 10:17 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 10:17 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 10:17 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 10:17 0:00 [rcu_sched]
...
上述示例中,通过ps命令显示出了当前系统中所有用户的进程。
ps是一款强大的进程查看命令,能够查看当前进程的状态、占用资源等信息。但ps是一款静态查看工具,查看的只是将执行该命令时获取的信息以快照的方式呈现出来。
2.top
top是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。默认情况下,top界面每3秒种更新一次数据,是一款很实用的工具。
top命令常用参数:
-c:显示完整的命令
-i:配置数据更新时间间隔
-u:指定用户名
-p:指定进程
-n:指定循环显示次数
执行top命令,示例代码如下。
[root@localhost ~]# top
top - 11:22:43 up 1:04, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 207 total, 2 running, 205 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.4 us, 1.0 sy, 0.0 ni, 96.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861484 total, 1073184 free, 835532 used, 1952768 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2670068 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10296 root 20 0 312412 41576 21500 S 1.7 1.1 0:03.38 X
20528 root 20 0 3019052 194484 66456 S 1.7 5.0 0:07.25 gnome-Shell
21277 root 20 0 698452 31916 18544 S 0.7 0.8 0:01.48 gnome-terminal-
1 root 20 0 128264 6924 4184 S 0.0 0.2 0:01.87 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:03.98 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.59 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
...
上述示例中,前5行时当前系统进程的统计信息。其中,第一行是任务队列信息,最后3个数值分别表示1分钟、5分钟、15分钟的负载情况。第二行是进程信息,示例中目前共有207个进程,有2个进程在运行,有205个进程在睡眠态。第三行是CPU状态信息,示例中当前用户空间占用CPU的百分比是2.4%,内核空间占用CPU的百分比是1%,空闲CPU的百分比是96.6%。第四行是内存状态,数值单位默认是KB,示例中目前内存总用量约为3.8G,空闲内存空间约为1G,使用中的内存总量约为0.8G,缓存的内存量约为1.9G。第五行是交换分区信息,第六行是空行,第七行是表头,第七行以下则是各进程的状态实时监控。
top监控项及其说明:
PID:进程标识符,即进程ID
USER:进程所有者
PR:进程优先级
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位KB
RES:进程使用的、未被换出的物理内存大小,单位KB
SHR:共享内存大小,单位KB
S:进程状态
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比TIME进程使用的CPU时间总计
COMMAND:进程名称
由于执行top命令之后会对用户提供一个动态界面,所以用户可以通过一些操作对界面进行管理。
top命令中的快捷键:
l:切换显示平均负载和启动时间信息
m:切换显示内存信息
t:切换显示进程和CPU状态信息
r:重新配置一个进程的优先级别
i:忽略闲置和僵尸进程
k:终止一个进程
M:根据驻留内存大小进行排序
P:根据CPU使用百分比大小进行排序
T:根据总计时间进行排序
q:退出
3.pstree
Linux系统启动之后第一个产生的进程,在CentOS 7之前叫做init,从CentOS 7开始叫做systemd。在其之后所产生的系统进程都是直接或间接地根据它自身创建出来的,每一个进程都是由其父进程创建的,新进程则是其父进程的子进程,由同一个父进程创建出来的多个子进程之间称为兄弟进程。
通过pstree命令能够清晰地查看各个进程之间的关系,示例代码如下。
[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─VGAuthService
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───2*[{at-spi2-registr}]
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
...
另外,pstree命令也支持个各种参数,用户通过pstree的参数使树状图按照特定的方式排列。
pstree命令常用参数:
-a:显示进程的完整命令
-c:禁用精简的标识
-h:列出当前正在执行的进程及其父进程
-u:显示各进程的用户名称
-n:同一父进程下的子进程按照PID排序
更多参数可以通过man手册查看。
4.pgrep
pgrep命令能够根据进程名称查询相关的进程信息,但默认只显示进程PID。Linux系统中可能存在多个同名的进程,但通过pgrep命令可以缩小查找范围。
pgrep命令的常用参数:
-o:显示PID最小的进程
-n:显示PID最大的进程
-l:同时显示PID与进程名称
-p:指定父进程的PID
-t:指定开始进程的终端
-u:指定进程的用户ID
下面演示pgrep命令的使用方式,示例代码如下。
#显示关于shh的进程(默认只显示PID)
[root@localhost ~]# pgrep ssh
9872
11043
#显示出关于shh的进程名与PID
[root@localhost ~]# pgrep -l ssh
9872 sshd
11043 ssh-agent
#显示关于shh进程中PID最小的进程
[root@localhost ~]# pgrep -lo ssh
9872 sshd
#显示关于shh进程中PID最大的进程
[root@localhost ~]# pgrep -ln ssh
11043 ssh-agent
5.nice
进程的执行顺序是由进程的优先级来决定的,用户可以通过nice命令修改或指定进程的优先级。
nice命令常用参数是-n,表示进程的优先级,该参数值必须是整数。在nice命令的最后需要指定进程名称。
下面将通过nice命令指定top进程的优先级,示例代码如下。
[root@localhost ~]# nice -n -1 top
top - 10:32:50 up 1:28, 2 users, load average: 0.23, 0.09, 0.07
Tasks: 210 total, 2 running, 208 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 1.0 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861484 total, 1193596 free, 814500 used, 1853388 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2701124 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9206 root 20 0 320216 6872 5376 S 0.3 0.2 0:02.97 vmtoolsd
10311 root 20 0 315460 43660 23504 S 0.3 1.1 0:05.92 X
11866 root 20 0 698660 32388 18852 S 0.3 0.8 0:02.96 gnome-terminal-
13107 root 19 -1 162012 2348 1596 R 0.3 0.1 0:00.12 top
...
上述示例中,将top进程的优先级修改为1,并执行top命令,在top界面中可以看到此时top进程的优先级为1。
6.jobs
Linux系统中的进程分为前台进程与后台进程。将命令的执行过程或执行结果显示到终端中并占用终端资源的进程称为前台进程。执行过程与结果不会输入到终端,且不占用终端资源的进程称为后台进程。
执行top命令之后,使用Ctrl+Z组合键将命令在后台挂起,示例代码如下。
[root@localhost ~]# top
top - 10:45:57 up 1:41, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 209 total, 1 running, 208 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861484 total, 1192836 free, 814684 used, 1853964 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2700392 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10311 root 20 0 315972 43916 23756 S 0.3 1.1 0:06.34 X
10846 gdm 20 0 452412 4396 3352 S 0.3 0.1 0:00.08 ibus-daemon
11094 root 20 0 3020304 195036 66544 S 0.3 5.1 0:12.05 gnome-Shell
1 root 20 0 128264 6920 4184 S 0.0 0.2 0:02.31 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.24 ksoftirqd/0
...
[1]+ 已停止 top
上述示例中可以看到,将top进程挂起到后台之后,会在下方提示top进程已经停止。其中,1表示作业号,作业也是进程,但一个作业可能有着多个关联进程。
jobs命令常用参数:
-l:显示PID
-p:只显示与作业对应的PID
-n:显示作业状态的变化
-r:只显示正在运行的作业
-s:只显示此刻停止的作业
通过jobs命令查看后台进程,示例代码如下。
[root@localhost ~]# jobs -l
[1]+ 13324 停止 (信号) top
上述示例中可以看到,此时top进程在后台,但没有运行,处于挂起状态。
7.bg与fg
通过Ctrl+Z组合键将进程调入后台之后,该进程将会处于挂起状态。用户通过fg命令可以将后台的进程调回到前台执行,示例代码如下。
[root@localhost ~]# fg 1
上述示例中,1表示进程的作业号。
另外,在命令后添加“&”符号,可以将命令放置到后台执行,示例代码如下。
[root@localhost ~]# mkdir -p /book1/book2/book3 &
[1] 15589
[1]+ 完成 mkdir -p /book1/book2/book3
当需要将后台挂起状态的进程继续在后台执行时,可以使用bg命令,示例代码如下。
[root@localhost ~]# bg 1
[1]+ top &
[1]+ 已停止 top
上述示例中可以看到,输出结果中的top命令后有一个“&”符号,表示top进程在后台执行。
8.kill
kill命令是Linux系统中一款管理进程的命令,通过该命令可以向某个进程发送一个信号,使该进程改变当前状态。
kill命令所使用的参数通常为“-信号编号”,配置参数之后再指定目标进程的PID或用户名即可。另外,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
上述示例中,有一个常用的信号为9号SIGKILL信号,该信号能够强制终止进程。除SIGKILL信号外,下面将讲述几种其他常用信号。
SIGINT:中断进程,可通过Ctrl+C组合键实现。
SIGQUIT:退出进程,可通过Ctrl+\组合键实现。
SIGTERM:终止进程。
SIGCONT:继续执行当前挂起状态的进程。
SIGSTOP:挂起进程,可通过Ctrl+Z组合键实现。
演示kill命令的使用方式,示例代码如下。
#在后台执行top命令
[root@localhost ~]# top &
[1] 11920
[1]+ 已停止 top
#查看此刻进程
[root@localhost ~]# ps
PID TTY TIME CMD
11858 pts/0 00:00:00 bash
11920 pts/0 00:00:00 top
11935 pts/0 00:00:00 ps
#强制终止top进程
[root@localhost ~]# kill -9 11920
[1]+ 已杀死 top
#验证结果
[root@localhost ~]# ps
PID TTY TIME CMD
11858 pts/0 00:00:00 bash
11948 pts/0 00:00:00 ps
来不及解释了,快上车!(进群看公告)
欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。
↓↓↓ 点个在看,无需赞赏!