答案:通过ps、top/htop查看进程状态,结合/proc文件系统、lsof和strace深入分析内存、文件、网络及系统调用。

在Linux系统里,想深入了解一个进程到底在干什么,光看个PID和CPU占用率可不够。我们通常会用到
ps
top
htop
/proc
lsof
strace
要查看Linux进程的详细信息,我们通常会组合使用几个核心工具,每个工具都有其擅长的领域。
首先,
ps
ps aux
ps -ef
ps -p 12345 -o pid,ppid,user,cmd,%cpu,%mem,stat,start_time
-o
接着,对于实时监控,
top
htop
top
htop
top
htop
但当你需要真正深入到进程的“内部”时,
/proc
/proc
/proc/12345/
cmdline
environ
cwd
exe
fd/
io
maps
status
stat
例如,要查看PID为12345的进程的环境变量,你可以
cat /proc/12345/environ | tr '\0' '\n'
ls -l /proc/12345/fd
最后,
lsof
strace
lsof -p PID
strace -p PID
要深入分析Linux进程的内存使用,仅仅看
top
ps
VSZ
RSS
首先,
ps -p PID -o pid,rss,vsz,%mem
/proc/<PID>/status
/proc/<PID>/maps
/proc/<PID>/status
VmSize
VmRSS
VmData
VmStk
VmExe
VmLib
VmSwap
通过
grep 'Vm' /proc/<PID>/status
更进一步,
/proc/<PID>/maps
7f0000000000-7f0000010000 r-xp 00000000 08:01 12345 /usr/lib/libc.so.6
libc.so.6
此外,
pmap -x PID
/proc/<PID>/maps
status
maps
pmap
进程卡住或无响应是Linux系统管理员和开发者经常遇到的问题。诊断这类问题需要一套系统的排查方法,因为原因可能多种多样,从CPU资源耗尽到I/O等待,再到死锁或系统调用阻塞。
首先,我会用
top
htop
stat
D
kill -9
如果
stat
R
S
这时,
strace -p PID
futex()
read()
write()
select()
poll()
epoll_wait()
同时,
lsof -p PID
lsof
ESTABLISHED
SYN_SENT
lsof
另外,如果系统整体I/O负载很高,
iostat
iostat -x 1
综合来看,诊断一个卡住的进程,就像侦探破案。我通常的流程是:
top/htop
strace
lsof
iostat
追踪进程打开的文件和网络连接,是诊断资源泄露、端口占用、文件锁死以及网络通信问题时的关键步骤。在Linux中,主要有
lsof
/proc
lsof
lsof -p 12345
COMMAND
PID
USER
FD
0
1
2
cwd
txt
mem
数字
(普通文件)或
w
TYPE
REG
DIR
CHR
FIFO
SOCK
DEVICE
SIZE/OFF
NODE
NAME
如果只关注网络连接,可以加上
-i
lsof -i -p 12345
LISTEN
ESTABLISHED
TIME_WAIT
lsof -i :80
除了
lsof
/proc
/proc/<PID>/fd/
ls -l /proc/12345/fd
lrwx------ 1 user user 64 Jan 1 10:00 3 -> /var/log/myapp.log
lrwx------ 1 user user 64 Jan 1 10:00 4 -> socket:[123456]
3
4
netstat -tulnp
ss -tulnp
socket:[inode]
对我来说,
lsof
lsof
/proc/<PID>/fd
/proc/<PID>/net/
tcp
udp
以上就是Linux查看进程详细信息的常用方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号