linux上的killproc和pidofproc

hit*_*cky 8 linux shell kill process

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

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

我的猜测是正确的,在64位redhat上面的命令应该可用吗?或者上面的命令特定于Suse和redhat?

谢谢

Rus*_*hes 9

killproc是在redhat enterprise linux 5.4中作为/etc/init.d/functions的一部分

如果你需要它就行

./etc/init.d/functions

在你的脚本中加载shell函数,它可能在其他版本的redhat中,但那是我现在唯一需要的东西


Ram*_*man 6

正如@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)


Dum*_*001 4

这些命令不太可能是可移植的。实际上这是我第一次听说它们 - 但我猜你的问题是通过名称来处理进程,而不是 pid。

检查man pgrepman pkill- 它们稍微更便携一些。它们是软件包的一部分procps(来自哪里pstop并且应该在所有 Linux 变体上可用。它们在 Solaris 上也可用。