要查看Linux后台进程,首选ps aux或ps -ef查看进程快照,top和htop实现实时监控,jobs管理当前shell后台任务,结合pgrep、kill、killall等命令可精准筛选与控制进程,同时需理解僵尸、孤儿进程及守护进程特性,辅以lsof、iotop、ss、strace和systemctl等工具深入分析进程行为。

在Linux系统里,要查看后台运行的进程列表,最直接也最常用的方法就是利用
ps
top
htop
要查看Linux系统中的后台进程,我通常会从几个命令入手,它们各有侧重,能满足不同的需求。
1. ps
ps
ps aux
ps -ef
ps aux
a
u
x
PID
%CPU
%MEM
COMMAND
STAT
R
S
(不可中断睡眠),
(僵尸进程),
ps -ef
e
f
通常,我会结合
grep
ps aux | grep nginx
grep
grep [n]ginx
2. top
当我想了解系统资源的实时消耗情况时,
top
top
top
P
M
k
q
top
3. htop
top
如果你的系统安装了
htop
htop
top
htop
F4
F9
htop
top
4. jobs
如果你在当前shell会话中将某个命令放到后台运行(例如,
my_script.sh &
jobs
jobs
jobs -l
jobs -l
fg %job_number
bg %job_number

在Linux环境下,进程的管理远不止“看一眼”那么简单,我们经常需要针对特定用户、服务或应用程序进行精细化的筛选和控制。这就像在茫茫人海中找到你的目标,然后采取相应的行动。
1. 按用户筛选进程
如果你只想看某个特定用户(比如
www-data
ps
ps -u www-data
或者,结合
aux
grep
ps aux | grep '^www-data'
注意这里的
^www-data
www-data
www-data
2. 按进程名称或PID筛选
当你知道进程的名称,但又不想看到
grep
pgrep
pgrep -l nginx
-l
ps aux | grep
如果你已经知道进程的PID,那么直接用
ps -p PID
3. 杀死进程:kill
killall
找到目标后,下一步往往是管理它,最常见的操作就是终止进程。
kill PID
SIGTERM
kill -9 PID
kill PID
kill -9
SIGKILL
killall process_name
killall
killall nginx
nginx
4. 管理后台作业:bg
fg
nohup
disown
有时,我们会在终端启动一个命令,然后意识到它会运行很久,不想占用当前终端。
Ctrl+Z
bg
bg %1
fg
fg %1
但这些命令只在当前shell会话中有效。一旦你关闭终端,这些后台进程也会被终止。为了让进程在终端关闭后依然运行,我们需要:
nohup command &
nohup
&
nohup.out
disown
my_long_task.sh &
nohup
disown
my_long_task.sh &
jobs
[1]
disown %1
my_long_task.sh
这些工具和技巧构成了我在Linux下管理进程的核心方法。理解它们,能让我更高效、更安全地控制系统资源。

有时候,你会发现系统资源被占用,但用
ps aux
1. 守护进程(Daemons)
很多系统服务,如Web服务器(Nginx, Apache)、数据库(MySQL, PostgreSQL)等,它们在系统启动时就会自动运行,并且通常没有关联的控制终端。它们的目的就是长时间在后台运行,提供服务。
d
httpd
sshd
init
systemd
ps aux
ps -ef
?
systemctl
systemctl start/stop/restart/status service_name
2. 进程分离:nohup
disown
前面提到了
nohup
disown
ps aux
?
pts/X
3. 僵尸进程(Zombie Processes,<defunct>
这是我个人在排查系统问题时,最容易让人头疼但又相对容易被忽视的一种情况。
wait()
waitpid()
ps aux
STAT
Z
Z+
COMMAND
<defunct>
init
systemd
4. 孤儿进程(Orphan Processes)
init
systemd
init
wait()
init
systemd
理解这些进程的生命周期和特殊状态,对于我们深入诊断系统行为,优化资源使用,以及排查那些看似“隐形”的问题至关重要。它们不是凭空消失,只是以我们不熟悉的方式存在或被管理着。

虽然
ps
top
htop
1. lsof
lsof
lsof -p PID
lsof -i
lsof -i :80
lsof /path/to/file
我经常用
lsof -i :port
2. iotop
当系统变慢,但CPU和内存看起来正常时,磁盘I/O往往是瓶颈。
iotop
top
iotop
3. netstat
ss
netstat
ss
ss
netstat
sudo netstat -tulnp
sudo ss -tulnp
t
u
l
n
P
4. strace
strace
strace -p PID
strace command_name
grep
5. systemctl status
对于由
systemd
systemctl status service_name
systemctl status nginx.service
这比直接用
ps
这些高级工具在我的工作中,是解决那些通过
ps
top
以上就是Linux如何查看后台运行的进程列表的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号