我希望将监控脚本从 Windows (Powershell) 迁移到 Linux (Shell 脚本)。我在 Windows 中检查的一件事是应用程序是否“不响应”。 (例如,打开任务管理器,它显示“正在运行”或“未响应”)
Linux 中是否有等效项?如果有,我如何找到它?我一直在网上搜索,但找不到任何说明如何找到它们的内容,只有当应用程序没有响应时该怎么办。
答案1
在Linux中,进程可以处于不同的状态:
- 运行(R):这是进程正在运行或准备运行的状态。
- 可中断(S):此状态是进程的阻塞状态,等待来自另一个进程的事件或信号
- Uninterruptible(D):也是阻塞状态。在等待硬件状态且无法处理信号的特定条件下,进程被迫停止。
- Stopped(T):一旦进程完成,就会出现此状态。这个过程可以重新启动
- Zombie(Z):在此状态下,进程将被终止,并且进程表中的信息仍然可用。
您可以运行“ps”命令和“grep”来获取状态。例如:
ps aux | awk '{if ($8 ="D") print}'
答案2
我找到了以下链接供您参考。这非常有用且准确。 Linux手册中提供了过程(5)。
state %c
One of the following characters, indicating process
state:
R Running
S Sleeping in an interruptible wait
D Waiting in uninterruptible disk sleep
Z Zombie
T Stopped (on a signal) or (before Linux 2.6.33)
trace stopped
t Tracing stop (Linux 2.6.33 onward)
W Paging (only before Linux 2.6.0)
X Dead (from Linux 2.6.0 onward)
x Dead (Linux 2.6.33 to 3.13 only)
K Wakekill (Linux 2.6.33 to 3.13 only)
W Waking (Linux 2.6.33 to 3.13 only)
P Parked (Linux 3.9 to 3.13 only)