8 Stimmen

killproc und pidofproc unter Linux

Ich habe ein Skript, das killproc- und procofpid-Befehle verwendet und auf einem 64-Bit-Suse-System problemlos ausgeführt wird. Aber als ich das Skript auf einem 32-Bit-Redhat-System ausführte, stellte ich fest, dass die oben genannten Befehle nicht existieren.

Ich habe keine 32bit Suse und 64bit Redhat Rechner um mein Skript zu testen.

Ist meine Vermutung richtig, dass die oben genannten Befehle unter 64bit-Redhat verfügbar sein sollten? Oder sind die oben genannten Befehle spezifisch für Suse und Redhat?

Gracias

1 Stimmen

Nein, aber kill et pidof sind, die auch tragbar sind.

9voto

RusHughes Punkte 1171

Killproc ist in redhat enterprise linux 5.4 als Teil von /etc/init.d/functions

wenn Sie es brauchen, tun Sie es einfach

. /etc/init.d/functions

in Ihrem Skript, um die Shell-Funktionen zu laden, es ist wahrscheinlich in anderen Versionen von Redhat, aber das ist die einzige, die ich im Moment zur Hand habe

6voto

Raman Punkte 14828

Diese Befehle sind definiert als Teil der Linux Standards Basis (LSB), wie von @AndreKR angemerkt.

Auf einigen Systemen wie Redhat (und wahrscheinlich SUSE) sind diese Funktionen jedoch je nach den installierten Paketen möglicherweise nicht an dem vom LSB angegebenen Ort definiert, der lautet /lib/lsb/init-functions . Vielmehr werden sie definiert innerhalb /etc/init.d/functions . Darüber hinaus ist in einigen Versionen die Redhat-Variante von /etc/init.d/functions fehlt die vom LSB definierte Funktion start_daemon . Wenn Sie das folgende Snippet oben in Ihr Skript einfügen, sollte es auf die meisten Distributionen/Installationen portierbar sein:

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

4voto

Dummy00001 Punkte 15726

Es ist unwahrscheinlich, dass die Befehle übertragbar sind. Eigentlich ist dies das erste Mal, dass ich von ihnen höre - aber ich vermute, Ihr Problem ist es, mit Prozess durch den Namen zu arbeiten, nicht pid.

Prüfen Sie die man pgrep o man pkill - sie sind etwas besser tragbar. Sie sind Teil von procps Paket (wobei ps et top ) und sollte auf allen Linux-Varianten verfügbar sein. Sie sind auch auf Solaris verfügbar.

2voto

AndreKR Punkte 30092

Die in Ubuntu verwendeten sind Teil der Spezifikation " Linux Standard Basis " und sind dokumentiert dort .

0voto

Aif Punkte 10605

Ich denke, diese Befehle sind verteilungsspezifisch: Ich habe sie noch nie gesehen. killproc sollte eine Art von kill sein, aber was soll procofpid tun?

In der Überschrift ist von pidofproc die Rede, diesen Befehl finden Sie auf den meisten Linux-Systemen unter pidof.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X