从脚本调用时,pkill -F不起作用

时间:2012-11-01 14:56:59

标签: shell

我正在尝试编写一个终止进程的shell脚本。进程的pid存储在名为foobar.pid的文件中。 BSD pkill有一个选项-F,它接受一个pidfile并杀死匹配进程。完善!

所以我的剧本中有这一行:

pkill -F foobar.pid # doesn't work

但它不起作用。如果我手动输入命令,它可以工作。是什么赋予了?更长,但对于我的理解等效,在脚本中起作用的替代方案:

pid=$(cat foobar.pid)
kill $pid # works

现在证明问题不是:

  • 脚本无法读取pid文件
  • 不允许该脚本终止该进程。

我也尝试将shebang更改为#!/bin/bash,以防sh会踢出一些奇怪的兼容模式或其他内容。没有运气。

系统规格:

$ uname -a
Darwin Babar.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin12)
Copyright (C) 2007 Free Software Foundation, Inc.

完整脚本:

#!/bin/sh
pid=$(cat foobar.pid)
kill $pid # works
# pkill -F foobar.pid # doesn't work
rm foobar.pid

0 个答案:

没有答案