我如何检查某些应用是通过文件名运行的吗?或者如果这不可能,那么是通过命令行运行的?我知道“pkill”有选项“-f”,但我不需要杀死它,只需检查一下。
更新:
我想获得肯定仅在 bash 中的应用程序,如果我不需要过滤输出来查找我想要检查其状态的应用程序的状态,则更可取。
如果这很重要,它是一个 python 或 ruby 脚本,我需要检查它们两者的状态。
答案1
编辑
既然你问过如何在知道进程名称的情况下检查进程是否正在运行,那么这是一个简单的pgrep
操作。或者,可以使用ps
并指定state
格式化选项
$ ps --no-headers -C firefox -o args,state
/usr/lib/firefox/firefox R
州代码如右,从中man ps
可以了解其含义:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped, either by a job control signal or because it is
being traced
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by
its parent
原来的
大多数情况下,控制台应用程序都以自己的名称运行。如果它是一个脚本,!#
顶部有一行,它将使用该行指定的解释器运行,例如 bash 脚本:
$ ps -ef | grep batmon
root 2108 1 0 22:22 ? 00:00:00 /bin/bash /home/xieerqi/bin/batmon.sh
然而,有些脚本可以充当包装器对于其他应用程序来说,例如gnome-terminal
实际上是一个调用的脚本gnome-terminal.real
你总是把一个应用程序放到后台,它会告诉你该进程的 pid
$ bin/batmon.sh &
[1] 3224
然后您可以使用kill PID
(例如此处kill 3224
)直接关闭应用程序,或者使用ps
查找其名称:
$ ps --no-headers -p 3224 -o %a
/bin/bash bin/batmon.sh
通常,可以搜索不带(代表全名)pkill
的名称。您还可以使用以下方式进行搜索:-f
pgrep appNamePartial
答案2
如果您想实时跟踪进程,可以使用著名的命令:
top
但是您希望通过文件名获取它,因此您需要添加一个参数:
top -c