Ich habe ein Skript, das die Befehle killproc und procopid verwendet und auf einer 64bit-suse gut ausführt. Aber als ich das Skript auf 32bit redhat ausgeführt habe, habe ich festgestellt, dass die obigen Befehle nicht existieren.
Ich habe keine 32bit Suse und 64bit redhat Maschinen, um mein Skript zu testen.
Ist meine Vermutung richtig, dass auf 64bit redhat die obigen Befehle verfügbar sein sollten? Oder sind die obigen Befehle spezifisch für Suse und redhat?
Danke
Die Befehle sind wahrscheinlich nicht tragbar. Das ist das erste Mal, dass ich von ihnen höre - aber ich denke, dein Problem ist es, mit dem Prozess mit dem Namen zu arbeiten, nicht mit pid.
Überprüfen Sie die man pgrep
oder man pkill
- sie sind etwas tragbarer. Sie sind Teil von procps
package (wobei ps
und top
herkommen) und sollten für alle Linux-Varianten verfügbar sein. Sie sind auch unter Solaris verfügbar.
killproc befindet sich in redhat enterprise linux 5.4 als Teil von /etc/init.d/functions
Wenn Sie es brauchen, tun Sie
. /etc/init.d/functions
in Ihrem Skript, um die Shell-Funktionen zu laden, ist es wahrscheinlich in anderen Versionen von redhat, aber das ist das einzige, das ich im Moment
übergeben mussDiese Befehle sind als definiert die Linux Standards Base (LSB), wie von @AndreKR angegeben.
Bei einigen Systemen wie Redhat (und wahrscheinlich SUSE) sind diese Funktionen jedoch abhängig von den installierten Paketen möglicherweise nicht an dem vom LSB angegebenen Speicherort definiert, der /lib/lsb/init-functions
ist. Sie sind vielmehr in /etc/init.d/functions
definiert. Außerdem fehlt in einigen Red Hat Versionen von /etc/init.d/functions
die LSB-definierte Funktion start_daemon
. Wenn Sie das folgende Snippet an den Anfang Ihres Skripts hinzufügen, sollte es in den meisten Distributionen / Installationen portierbar sein:
Die in Ubuntu verwendeten sind Teil der Spezifikation " Linux Standard Base " und sind dokumentiert hier .