我有一个脚本,使用killproc和procofpid命令,在64位的Suse上执行良好。但是当我在32位的redhat上执行脚本时,发现上述命令不存在。
我没有32位Suse和64位redhat机器来测试我的脚本。
我的猜测是,在64位redhat上应该有上述命令可用吗?还是这些命令只适用于Suse和redhat?
谢谢
killproc 是 Red Hat Enterprise Linux 5.4 中 /etc/init.d/functions 的一部分。
如果需要它,只需在脚本中执行:
. /etc/init.d/functions
以加载 shell 函数。它可能也存在于其他版本的 Red Hat 中,但此时我手头只有这个版本。
/lib/lsb/init-functions
)中被定义,取而代之的是在/etc/init.d/functions
中被定义。此外,在某些版本中,Redhat变体的/etc/init.d/functions
缺少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
lsb-core-noarch
在符合LSB标准的发行版中提供文件/lib/lsb/init-functions
。只需使用发行版包管理器进行安装即可。 - Samveenlsb-core-noarch
套件的澄清和資訊。在 Fedora 24 上,它是 redhat-lsb-core
。如果您不確定運行環境是否安裝了該套件,並且沒有能力或願望強制安裝該套件,則腳本片段仍然很有用。 - Ramanredhat-lsb-core
软件包的提供
内容:您会注意到它提供了一个名为lsb-core-noarch
的能力,这是一个元软件包
,正如我在评论中提到的一样(rpmfind信息)。 - Samveenrpmfind
链接是一个外部网站,看起来信息已经过时。请参考这里:https://apps.fedoraproject.org/packages/redhat-lsb-core/overview/。`redhat-lsb-core`实际上是元包`redhat-lsb`的子包,并且它“提供”了`lsb-noarch`,这不是一个软件包而是一种能力。 - Raman查看man pgrep
或man pkill
- 它们稍微更加可移植。它们是procps
软件包的一部分(其中包括ps
和top
),应该在所有Linux变体上都可用。它们也可用于Solaris。
我认为这些命令是特定于分发的:我以前从未见过它们。 killproc 应该是一种 kill 命令,但 procofpid 有什么作用呢?
在标题中,您提到了 pidofproc,您可以在大多数 Linux 系统上的 pidof 下找到此命令。
我和你一样遇到了同样的问题,它会提示:
pidof:命令行选项无效!
我修改了
"killproc -d 10 $cmd"
到
"kill -9 \`pidof $cmd\`"
kill
和pidof
是可移植的。 - Tim Post