killproc是在redhat enterprise linux 5.4中作为/etc/init.d/functions的一部分
如果你需要它就行
./etc/init.d/functions
在你的脚本中加载shell函数,它可能在其他版本的redhat中,但那是我现在唯一需要的东西
正如@AndreKR所述,这些命令被定义为Linux标准库(LSB)的一部分.
但是,在某些系统(如Redhat(可能还有SUSE))上,根据安装的软件包,这些函数可能无法在LSB指定的位置定义,即/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
Run Code Online (Sandbox Code Playgroud)
这些命令不太可能是可移植的。实际上这是我第一次听说它们 - 但我猜你的问题是通过名称来处理进程,而不是 pid。
检查man pgrep或man pkill- 它们稍微更便携一些。它们是软件包的一部分procps(来自哪里ps)top并且应该在所有 Linux 变体上可用。它们在 Solaris 上也可用。