Linux 没有找到进程的可能性

Linux 没有找到进程的可能性,linux,shell,Linux,Shell,我想使用pidof或ps命令或任何其他命令查找shell脚本进程ID 我只需要它的进程id。我使用了'pidof-x test.sh'。这是行不通的。注意:我不想调用/bin/sh或/bin/bash,因为脚本无法工作。如果我在脚本中调用/bin/sh,则pidof正在工作 请帮助pgrep-f脚本正在给出预期结果。 谢谢pidof和pgrep都是用于查找特定流程的pid的选项。不要运行ps-ef | grep“your_命令”,因为您现在也用grep匹配污染了结果 使用pidof-s[pro

我想使用pidof或ps命令或任何其他命令查找shell脚本进程ID

我只需要它的进程id。我使用了'pidof-x test.sh'。这是行不通的。注意:我不想调用/bin/sh或/bin/bash,因为脚本无法工作。如果我在脚本中调用/bin/sh,则pidof正在工作


请帮助

pgrep-f脚本正在给出预期结果。
谢谢

pidof和pgrep都是用于查找特定流程的pid的选项。不要运行
ps-ef | grep“your_命令”
,因为您现在也用grep匹配污染了结果

  • 使用
    pidof-s[program]
    查找父进程id
  • 使用
    pidof[program]
    查找所有PID(即python在您的系统上运行多次)
  • 使用
    pgrep[program]
    匹配python运行的二进制文件的名称(因为pidof不适合此用例)
很好地解释了pidof和pgrep之间的区别。看他的

为了方便起见,我将复制到这里:

pgrep和pidof程序并不完全相同,但它们 它们非常相似。例如:

$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1
如您所见,pidof未能找到[i]ref的匹配项。这是 因为pidof程序返回所有相关进程ID的列表 用一个叫做program的程序。另一方面,pgrep re返回 与名称匹配的程序关联的所有进程ID的列表 正则表达式re

在最基本的形式中,等价性实际上是:

$ pidof 'program'
$ pgrep '^program$'
作为另一个具体例子,请考虑:

$ ps ax | grep '[w]atch'
   12 ?        S      0:04 [watchdog/0]
   15 ?        S      0:04 [watchdog/1]
   33 ?        S<     0:00 [watchdogd]
18451 pts/5    S+     0:02 watch -n600 tail log-file
$ pgrep watch
12
15
33
18451
$ pidof watch
18451
$ps ax | grep'[w]atch'
12 ?        S 0:04[看门狗/0]
15 ?        S 0:04[看门狗/1]
33 ?        S<0:00[看门狗]
18451 pts/5 S+0:02监视-n600尾部日志文件
$pgrep手表
12
15
33
18451
美元的手表
18451

即使对于非脚本进程,还有一个警告:

pidof
忽略:

  • 僵尸进程
  • 磁盘睡眠中的进程
因此,与pgrep不同的是,pidof和killall(相同的代码基)只要在磁盘i/o中被阻塞,就不会看到您的进程


我只是在pidof中体验到了这一点-发现,未发现,发现,…

您的问题无法以当前的形式理解。尝试增强它,添加一个示例等。我需要找出特定脚本的流程-假设我在流程列表中运行了1sleep.sh和2sleep.sh以及tailf sleep.out。我想了解2sleep.sh onlyOk的过程,明白了。(你应该在你的问题中加上这一点,也许到时候它会被提高投票率)。。。如您所述,当脚本被调用时,如
bash script.sh
那么
pgrep-f“bash/script.sh”
就是解决方案。然后您必须调整筛选消息
$ ps ax | grep '[w]atch'
   12 ?        S      0:04 [watchdog/0]
   15 ?        S      0:04 [watchdog/1]
   33 ?        S<     0:00 [watchdogd]
18451 pts/5    S+     0:02 watch -n600 tail log-file
$ pgrep watch
12
15
33
18451
$ pidof watch
18451