如何在 Linux 中查找无响应的应用程序

如何在 Linux 中查找无响应的应用程序

我希望将监控脚本从 Windows (Powershell) 迁移到 Linux (Shell 脚本)。我在 Windows 中检查的一件事是应用程序是否“不响应”。 (例如,打开任务管理器,它显示“正在运行”或“未响应”)

Linux 中是否有等效项?如果有,我如何找到它?我一直在网上搜索,但找不到任何说明如何找到它们的内容,只有当应用程序没有响应时该怎么办。

答案1

在Linux中,进程可以处于不同的状态:

  1. 运行(R):这是进程正在运行或准备运行的状态。
  2. 可中断(S):此状态是进程的阻塞状态,等待来自另一个进程的事件或信号
  3. Uninterruptible(D):也是阻塞状态。在等待硬件状态且无法处理信号的特定条件下,进程被迫停止。
  4. Stopped(T):一旦进程完成,就会出现此状态。这个过程可以重新启动
  5. 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)

相关内容