操作系统管理多个用户的请求和多个任务。大多数系统都只有一个CPU和一个主要存储,但一个系统可能有多个二级存储磁盘和多个输入/输出设备。操作系统管理这些资源并在多个用户间共享资源,当用户提出一个请求时,造成好像系统被用户独占的假象。实际上操作系统监控着一个等待执行的任务队列,这些任务包括用户任务、操作系统任务、邮件和打印任务等。本节将从用户的角度讲述如何控制进程。
23 查看进程
Linux是一个多任务系统,经常需要对这些进程进行一些调配和管理。要进行管理,首先就要知道现在的进程情况:有哪些进程、进程的状态如何等。Linux提供了多种命令来了解进程的状况。
23.1 who命令
who命令主要用于查看当前系统中的用户情况。如果用户想和其他用户建立即时通讯,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。who命令应用起来非常简单,可以比较准确地掌握用户的情况,所以使用非常广泛。
例如查看系统中的用户及其状态。使用如下:
# who
例如示例命令如下:
[root@superman-21 ~]# who
root pts/0 2022-12-12 20:56 (192.168.0.135)
root pts/1 2022-12-12 20:57 (192.168.0.135)
superman pts/2 2022-12-12 20:57 (192.168.0.21)
[root@superman-21 ~]#
23.2 ps命令
ps命令是最基本又非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等,大部分进程信息都是可以通过执行该命令得到的。
ps命令最常用的还是用来监控后台进程的工作情况,因为后台进程是不与屏幕、键盘这些标准输入/输出设备进行通信的,所以如果需要检测其状况,就可使用ps命令。ps命令的常见选项如表1所示。
表 1 选项说明
选项 | 描述 |
---|---|
-e | 显示所有进程。 |
-f | 全格式。 |
-h | 不显示标题。 |
-l | 使用长格式。 |
-w | 宽行输出。 |
-a | 显示终端上的所有进程,包括其他用户的进程。 |
-r | 只显示正在运行的进程。 |
-x | 显示没有控制终端的进程。 |
显示系统中终端上的所有进行进程。命令如下:
# ps -a
例如示例命令如下:
[root@superman-21 ~]# ps -a
PID TTY TIME CMD
1985 pts/1 00:00:00 ssh
2137 pts/0 00:00:00 ps
[root@superman-21 ~]#
23.3 top命令
top命令和ps命令的基本作用是相同的,显示系统当前的进程和其他状况,但是top是一个动态显示过程,即可以通过用户按键来不断刷新进程的当前状态,如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。其实top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU的任务列表。该命令可以按CPU使用、内存使用和执行时间对任务进行排序,而且该命令的很多特性都可以通过交互式命令或者在定制文件中进行设定。
top命令输出的实例如图1所示:
图 1 top显示
23.4 kill命令
当需要中断一个前台进程的时候,通常使用“Ctrl+c”组合键,而对于后台进程不能用组合键来终止,这时就可以使用kill命令。该命令可以终止前台和后台进程。终止后台进程的原因包括:该进程占用CPU的时间过多、该进程已经死锁等。
kill命令是通过向进程发送指定的信号来结束进程的。如果没有指定发送的信号,那么默认值为TERM信号。TERM信号将终止所有不能捕获该信号的进程。至于那些可以捕获该信号的进程可能就需要使用KILL信号(它的编号为9),而该信号不能被捕捉。
kill命令的浯法格式有以下两种方式:
kill [-s 信号 | -p] [-a] 进程号…
kill -l [信号]
其中进程号可以通过ps命令的输出得到。-s选项是给程序发送指定的信号,详细的信号可以用“kill -l”命令查看;-p选项只显示指定进程的ID号。
杀死pid为1409的进程,在root权限下执行如下命令:
# kill -9 1409
例如示例命令如下:
[root@superman-21 ~]# ps -ef|grep httpd
root 2154 1 1 21:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2155 2154 0 21:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2156 2154 0 21:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2157 2154 0 21:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2158 2154 0 21:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 2335 1858 0 21:30 pts/0 00:00:00 grep --color=auto httpd
[root@superman-21 ~]#
[root@superman-21 ~]#
[root@superman-21 ~]#
[root@superman-21 ~]# kill -9 2154
[root@superman-21 ~]#
[root@superman-21 ~]# ps -ef|grep httpd
root 2342 1858 0 21:31 pts/0 00:00:00 grep --color=auto httpd
[root@superman-21 ~]#
显示所有的信号及其编号对应关系,示例如下:
# kill -l
例如示例命令如下:
[root@superman-21 ~]# 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@superman-21 ~]#
标签:00,21,一步,命令,进程,openEuler,root,SIGRTMIN
From: https://blog.51cto.com/u_237826/6081756