2010-06-10 48 views
7

我有一个脚本,它使用killproc和procofpid命令并在64位suse上执行正常。但是当我在32位redhat上执行脚本时,我发现上述命令不存在。linux上killproc和pidofproc

我没有32位Suse和64位redhat机器来测试我的脚本。

我的猜测是正确的,在64位红帽上述命令应该可用? 还是上面的Suse和redhat特有的命令?

感谢

+1

没有,但'kill'和'pidof'是,这也是便携。 – 2010-06-10 15:08:38

回答

4

这些命令不太可能是可移植的。其实这是我第一次听说他们 - 但我想你的问题是与名称的过程,而不是PID。

检查man pgrepman pkill - 它们稍微便携一点。它们是procps包(其中pstop来自)的一部分,并且应该适用于所有Linux变体。它们也可在Solaris上使用。

0

我觉得这些命令是DISTRIB细节:我从来没有见过他们。 killproc应该是一种杀手,但procofpid应该做什么?

在关于pidofproc的标题中,您可以在大多数Linux机器上的pidof下找到该命令。

-1

我有同样的问题,因为你,它给了警告:

的pidof:在命令行无效的选项!

我改变了

"killproc -d 10 $cmd" 

"kill -9 \`pidof $cmd\`" 
8

killproc在RedHat Linux企业版5.4为/etc/init.d/functions

的一部分,如果你需要它只是做

。 /etc/init.d/functions

在你的脚本加载外壳的功能,它可能是在redhat的其他版本,但多数民众赞成我唯一拥有的那一刻,随手

6

这些命令是defined作为Linux Standards Base(LSB)的一部分,如@AndreKR所述。

但是,在一些像Redhat(也可能是SUSE)的系统上,根据安装的软件包,这些函数可能不会在LSB指定的位置定义,即/lib/lsb/init-functions。而是在/etc/init.d/functions内定义。另外,在某些版本中,/etc/init.d/functions的Redhat变体缺少LSB定义的函数start_daemon。如果添加下面的代码片段到你的脚本的顶部,它应该是在大多数分布便携/安装:

if [[ -f /lib/lsb/init-functions ]]; then 
    . /lib/lsb/init-functions 
elif [[ -f /etc/init.d/functions ]]; then 
    . /etc/init.d/functions 
    # Pretend to be LSB-compliant 
    function start_daemon() { 
    daemon $* 
    } 
else 
    echo "Linux LSB init function script or Redhat /etc/init.d/functions is required for this script." 
    echo "See http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html" 
    exit 1 
fi 
+0

您的声明'Redhat(可能是SUSE)没有在LSB指定的位置定义它们是错误的。元软件包'lsb-core-noarch'提供跨越LSB兼容发行版的文件'/ lib/lsb/init-functions'。只需使用分发包管理器进行安装即可。 – Samveen 2017-03-29 11:10:44

+0

@Samveen感谢您对“lsb-core-noarch”软件包的说明和信息。 FWIW在Fedora 24上是'redhat-lsb-core'。如果您不确定运行时环境是否安装了软件包,并且您没有能力或不希望强制安装它,那么脚本片段仍然很有用。 – Raman 2017-03-29 16:53:44

+0

请检查''提供''redhat-lsb-core'软件包:您会注意到它提供了一个'lsb-core-noarch'功能,它是一个'meta package',正如我在我的评论中提到的([rpmfind info](https://www.rpmfind.net/linux/RPM/fedora/updates/24/x86_64/r/redhat-lsb-core-4.1-33.fc24.x86_64.html))。 – Samveen 2017-03-30 03:28:14