Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

killproc and pidofproc on linux

I have a script which uses killproc and procofpid commands and executes fine on a 64bit suse. But when I executed the script on 32bit redhat , I found that the above commands donot exist.

I don't have a 32bit Suse and 64bit redhat machines to test my script.

Is my guess right that on 64bit redhat the above commands should be available? Or are the above commands specific to Suse and redhat?

Thanks

like image 975
hits_lucky Avatar asked Jun 10 '10 11:06

hits_lucky


2 Answers

killproc is in redhat enterprise linux 5.4 as part of /etc/init.d/functions

if you need it just do

. /etc/init.d/functions

in your script to load the shell functions, its probably in other versions of redhat but thats the only one i have to hand at the moment

like image 78
RusHughes Avatar answered Sep 18 '22 00:09

RusHughes


These commands are defined as part of the Linux Standards Base (LSB), as noted by @AndreKR.

However, on some systems like Redhat (and probably SUSE), depending on packages installed, these functions may not be defined in the location specified by the LSB, which is /lib/lsb/init-functions. Rather they are defined within /etc/init.d/functions. In addition, in some versions, the Redhat variant of /etc/init.d/functions is missing the LSB-defined function start_daemon. If you add the following snippet to the top of your script, it should be portable across most distributions/installs:

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
like image 42
Raman Avatar answered Sep 20 '22 00:09

Raman