我有一个脚本,它使用killproc和procofpid命令并在64位suse上执行正常。但是当我在32位redhat上执行脚本时,我发现上述命令不存在。linux上killproc和pidofproc
我没有32位Suse和64位redhat机器来测试我的脚本。
我的猜测是正确的,在64位红帽上述命令应该可用? 还是上面的Suse和redhat特有的命令?
感谢
我有一个脚本,它使用killproc和procofpid命令并在64位suse上执行正常。但是当我在32位redhat上执行脚本时,我发现上述命令不存在。linux上killproc和pidofproc
我没有32位Suse和64位redhat机器来测试我的脚本。
我的猜测是正确的,在64位红帽上述命令应该可用? 还是上面的Suse和redhat特有的命令?
感谢
这些命令不太可能是可移植的。其实这是我第一次听说他们 - 但我想你的问题是与名称的过程,而不是PID。
检查man pgrep
或man pkill
- 它们稍微便携一点。它们是procps
包(其中ps
和top
来自)的一部分,并且应该适用于所有Linux变体。它们也可在Solaris上使用。
我觉得这些命令是DISTRIB细节:我从来没有见过他们。 killproc应该是一种杀手,但procofpid应该做什么?
在关于pidofproc的标题中,您可以在大多数Linux机器上的pidof下找到该命令。
我有同样的问题,因为你,它给了警告:
的pidof:在命令行无效的选项!
我改变了
"killproc -d 10 $cmd"
到
"kill -9 \`pidof $cmd\`"
killproc在RedHat Linux企业版5.4为/etc/init.d/functions
的一部分,如果你需要它只是做
。 /etc/init.d/functions
在你的脚本加载外壳的功能,它可能是在redhat的其他版本,但多数民众赞成我唯一拥有的那一刻,随手
在Ubuntu中使用的那些被部分规范“Linux Standard Base”,并记录在there。
这些命令是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
您的声明'Redhat(可能是SUSE)没有在LSB指定的位置定义它们是错误的。元软件包'lsb-core-noarch'提供跨越LSB兼容发行版的文件'/ lib/lsb/init-functions'。只需使用分发包管理器进行安装即可。 – Samveen 2017-03-29 11:10:44
@Samveen感谢您对“lsb-core-noarch”软件包的说明和信息。 FWIW在Fedora 24上是'redhat-lsb-core'。如果您不确定运行时环境是否安装了软件包,并且您没有能力或不希望强制安装它,那么脚本片段仍然很有用。 – Raman 2017-03-29 16:53:44
请检查''提供''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
没有,但'kill'和'pidof'是,这也是便携。 – 2010-06-10 15:08:38