查看Linux后台正在运行的进程

时间:2019-11-20 08:53:28  来源:igfitidea点击:

如何查看在Linux后台中,哪些进程正在运行?
如何确定Linux操作系统在后台运行哪些进程?

如何在后台运行Linux进程?

要在后台运行进程或命令/shell脚本,
在执行命令或者shell脚本时,在末尾添加一个&(符号)。例如:

command &
/path/to/script &
sleep 10000 &

查看在后台运行的进程

运行jobs命令:

jobs
[1]+  Stopped                 vim
[2]-  Running                 sleep 10000 &

要停止前台进程,请按CTRL + Z。

使用bg命令重启已停止的后台进程。
例如,vim已停止并且编号为1,

bg %n
bg %1

可以使用fg命令将后台进程带回前台,

例如上面的sleep命令:

fg %n
fg %2

使用kill命令可以杀死sleep进程:

kill %n
kill %2

Linux列出后台进程

使用ps命令命令以显示系统上所有正在运行的进程,包括在后台运行的进程:

$ sudo ps -aux | less

或者使用ps命令列出Linux上所有正在运行的进程:

# ps aux | more

ps命令输出说明

第一列显示在Linux系统上启动前台或后台进程的用户名。
STAT 列为我们提供了Linux进程的状态:

状态代码说明
D不间断的睡眠(通常是IO)
I空闲内核线程
R正在运行或可运行(在运行队列中)
S睡眠中断(等待事件完成)
T由作业控制信号停止
t在跟踪过程中被调试器停止
W分页(自2.6.xx内核以来无效)
X死(永远不可见)
Z已终止的(僵尸)进程,已终止但未被其父进程收割

通常,可中断睡眠中的进程在后台运行,并在进程STAT列上显示S
可中断的睡眠意味着可以借助kill命令终止或终止进程。

另一方面,处于D或不间断睡眠状态的进程通常正在等待I/O。
因此,您无法杀死D状态进程,因为它们是不间断的。

显示的可能是其他字符,说明如下:

状态代码描述
<高优先级(对其他用户不利)
N低优先级(对其他用户很好)
L已将页面锁定在内存中(用于实时和自定义IO)
s是会议负责人
l是多线程的(使用CLONE_THREAD,就像NPTL pthreads一样)
+位于前台进程组

如何判断Linux进程运行在前台还是后台?

根据上表,可以确定Linux进程是在后台还是在前台或正在运行等等。

# ps aux | more
rpc        680  0.0  0.0  69280  1004 ?        Ss   Jan01   0:01 /sbin/rpcbind -w
root      1126  0.0  0.2 230956  5672 ?        Ssl  Jan01   0:53 /usr/sbin/rsyslogd -n
root      9915  0.0  0.0 155472  1864 pts/0    R+   04:26   0:00 ps aux
root      1119  0.0  0.2 198088  4204 ?        Ss+  Jan01   0:00 /sbin/agetty --noclear
命令/进程ps状态代码前台还是后台进程
/sbin/initSs
/usr/sbin/rsyslogd -nSsl后台进程(可中断睡眠+会话负责人和多线程应用程序)
/sbin/agetty --noclearSs +后台进程(可中断的睡眠和会话领导者,处于前台组中)
ps auxR +正在运行的前台进程

使用以下命令列出Linux进程以及pid,用户名和stat状态,如下所示:

ps -eo pid,user,stat,comm
ps -eo pid,user,stat,comm | grep nginx

如何只列出Linux上正在运行的进程?

ps r

列出当前终端上的所有进程

ps T

top和htop命令

可以使用top命令实时显示Linux进程。

top
top [option]

同样,可以使用top的增强版本,例如atop或htop。

htop
atop
htop [options]