我需要能够根据另一个进程是否正在运行来运行或不运行脚本。该进程是第三方图像处理软件 DenseCap。有没有办法执行wait
您不知道其 PID 而只知道其名称的任务?当我运行时ps -ef
,这是进程:
usr 4638 4536 93 14:57 pts/8 00:00:05 /home/usr/torch/install/bin/lu
我需要不运行某个脚本那正在运行,但某个脚本需求当 DenseCap 不运行时,它会运行。我不知道如何检索它的 PID。基本上,我有一个运行 DenseCap 的脚本,还有另一个运行某个进程的脚本,该进程在 DenseCap 运行时实际上不应该运行。有一个脚本同时运行它们。我不知道该怎么做。如果您需要查看代码,我可以发布它。
答案1
好吧,总之,该pgrep
命令会很有帮助,因为您知道所讨论的命令的名称。
pgrep -l <name_of_command>
将列出名称和PID
以便您可以在脚本中使用它。
看:man pgrep
答案2
您还可以使用以下命令,并使用显示和ps
的选项。按此顺序将是该行的第一部分。pid
cmd
pid
ps -eo pid,cmd | grep <name> | grep -v grep
我喜欢使用这个的唯一原因是,以防我需要通过交换机找到一个命令,该命令正在像使用类似东西的隧道一样运行CfND
,但我可能有额外的 ssh 会话正在运行。
例子:
terrance@terrance-ubuntu:~$ ps -eo pid,cmd | grep CfND | grep -v grep
14908 ssh -CfND 4242 [email protected]
希望这可以帮助!