top # 查看CPU/内存使用情况
htop # 增强版top
vmstat 1 # 查看系统整体资源使用
iostat -x 1 # 查看磁盘I/O状态
df -h # 检查磁盘空间
free -m # 查看内存使用
ulimit -a # 查看资源限制
ps aux | grep <进程名> # 查看进程状态
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head # 查看高CPU进程
pstree -p <PID> # 查看进程树
strace -p <PID> # 跟踪系统调用
ltrace -p <PID> # 跟踪库函数调用
lsof -p <PID> # 查看进程打开的文件
dmesg | tail # 查看内核日志
journalctl -xe # 查看系统日志(适用于systemd系统)
tail -f /var/log/syslog # 实时查看系统日志
CPU问题:
renice +19 <PID> # 降低进程优先级
cpulimit -p <PID> -l 50 # 限制CPU使用率
内存问题:
# 临时增加swap空间
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
文件描述符:
# 临时提高限制
ulimit -n 65535
# 永久修改
echo "* soft nofile 65535" >> /etc/security/limits.conf
检查共享内存:
ipcs -m # 查看共享内存
ipcrm -m <shmid> # 删除共享内存
检查信号量:
ipcs -s # 查看信号量
ipcrm -s <semid> # 删除信号量
bash
pstack <PID> # 获取进程堆栈
gdb -p <PID> # 使用gdb附加到进程
thread apply all bt # 在gdb中查看所有线程堆栈
# 找到僵尸进程
ps aux | grep 'Z'
# 通知父进程回收
kill -CHLD <PPID>
# 如果无效,结束父进程
kill <PPID>
kill -9 <PID> # SIGKILL信号
killall -9 <进程名> # 终止所有同名进程
pkill -9 <模式> # 按模式终止进程
资源监控:
代码优化:
系统配置:
进程管理:
通过以上方法和预防措施,可以有效地诊断和解决Linux系统中的进程挂起问题,提高系统的稳定性和可靠性。