进程管理

张天师大约 4 分钟

进程状态

Linux上进程有5种状态:

提示

  • R 运行 runnable (正在运行或在运行队列中等待)
  • S 中断 sleeping (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • D 不可中断 (收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • Z 僵死 (进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • T 停止 (进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

查看进程

杀死进程

僵尸进程

僵尸进程是父进程未调用wait()系列函数回收导致的

# 单独查看僵尸进程信息 PID、PPID、进程名
ps -eo pid,ppid,stat,cmd | grep 'Z'

处理方式

# 1 优雅重启父进程 
systemctl restart 服务名

# 强制杀死父进程
kill -9 <父进程PPID>

LSOF 一切皆文件

lsofList Open Files)是 Linux 和 Unix 系统中一个强大的工具,用于查看当前系统打开的文件和资源。由于在 Unix 系统中,一切皆文件(包括网络套接字、设备文件等),lsof 可以帮助你:

  • 查找文件被哪个进程占用
  • 诊断网络连接问题
  • 监控系统资源使用情况
  • 识别僵尸进程
  • 调试文件系统挂载问题
# 查看网络连接
lsof -i

# 查看监听端口
lsof -iTCP -sTCP:LISTEN -n -P

# 查看特定进程的文件
lsof -p PID

# 查看已经删除文件还存在的进程
lsof | grep deleted

# 查找占用文件的进程
lsof /path/to/file

# 查看特定用户的文件
lsof -u user

文件锁

chattr用于修改文件或目录的特殊属性,其基本语法为:chattr [选项] [属性] 文件/目录

属性含义适用场景
i设为不可变,无法删除、修改、重命名,只有 root 可设置或取消保护系统关键配置文件,如/etc/passwd
a仅允许追加内容,不能删除、修改现有内容,适合日志文件/var/log/messages等日志文件
u删除文件后数据仍保留,可恢复重要数据文件,防止误删后无法恢复
s删除文件时彻底擦除数据,无法恢复敏感文件,避免数据泄露
d备份时跳过该文件,不被 dump 命令备份临时文件或无需备份的文件
# 给文件添加不可变属性,无法修改和删除
chattr +i /etc/fstab

# 查看文件的 “隐藏属性”
lsattr /etc/fstab

# 递归查看目录下所有文件属性
lsattr -R /var/log