• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

daemon beenden

steven

Newbie
hallo Leute,
hab ein Problem vielleicht könnt ihr mir ja weiterhelfen.

Ich möchte gerne einen daemon killen. Die PID soll er aus der ensprechenden datei auslesen.

Ich habe folgendes probiert.
Code:
kill -9 && cat  < /space/mrtg/cfg/mrtg.pid

Das funzt aber nicht. vielleicht mach ich ja bei der Eingabeumleitung was falsch. hat jemand eine Idee?

gruss
 

TeXpert

Guru
du willst erst ein kill -9 ausführen und wenn das geklappt hat ein cat < foo

alleine der 2. Teil treibt mir die Tränen in die Augen ;) cat kann die Datei von alleine lesen, da musst DU die nicht auf stdin umbiegen..

spontan würde mir da ein
Code:
cat /space/mrtg/cfg/mrtg.pid | xargs kill -9
einfallen..
 

TeXpert

Guru
stimmt, bei einem 2. Nachdenken ist das auf dem richtigen weg...


aber *evil grin* da wir schon eine Subshell starten ist das dann wieder ein useless use of cat ;) die Subshell kann lesen und auch schreiben, also reicht sogar ein:

Code:
kill -9 $(</space/mrtg/cfg/mrtg.pid)

und wieder einmal wurde die katze getötet...
 
OP
S

steven

Newbie
hallo,vielen dank erstmal

so hat es gut funktioniert.
danke aber trotzdem an beide.

  • kill -9 `cat /space/mrtg/cfg/mrtg.pid`

hab noch ne Frage:

Ich versuche folgendes zu machen.

ein Cronjob prüft jede minute ob eine bestimmte datei existiert.
wenn ja , dann soll er eigentlich den mrtg.daemon restarten. Da ich aber bei mrtg keinen restart gefunden habe, muss ich den daemon erst killen dann neu starten.

kann ich das in einem cron machen?

zb: */1 * * * if( -e /usr/restart.txt) then kill -9 `cat /space/mrtg/cfg/mrtg.pid ; sh mrtgdaemon;

so ungefähr. Hab wenig erfahrung mit linux...
 

regexer

Advanced Hacker
steven schrieb:
zb: */1 * * * if( -e /usr/restart.txt) then kill -9 `cat /space/mrtg/cfg/mrtg.pid ; sh mrtgdaemon;
Zwei Sachen:
1. Statt runde Klammern eckige nehmen
2. Vor und nach den klammern ein space setzen
3. Vor dem then ein Semikolon
4. Irgendwo muss noch ein "fi" hin (als Ende-Markierung des "if")
Ein Banal-Beispiel:
Code:
if [ -e /etc/hosts ] ; then echo test ; fi

Übrigens: Du kannst auch als test-Parameter "-f" nehmen. Dann darf die zu testende Datei kein Verzeichnis sein.
 
A

Anonymous

Gast
Dieser Daemon sagt mir jetzt im Moment zwar gar nichts, (man muss auch nicht alles wissen, man muss nur wissen wo man suchen muss), aber die Daemons haben alle so eine nette Eigenart, wenn man ihnen das Signal SIGHUP sendet lesen sie die Konfigurationsdatei neu ein, das ist quasi ein Restart.

Versuch mal kill -1 DaemonPID

robi
 
OP
S

steven

Newbie
hallo,

...aber die Daemons haben alle so eine nette Eigenart, wenn man ihnen das Signal SIGHUP sendet lesen sie die Konfigurationsdatei neu ein, das ist quasi ein Restart.

super,das wäre auch ne Lösung. Aber ob das für diesen mrtg daemon auch klappt.. naja zuerst muss ich schauen wie ich einem daemon so ein SIGHUP senden kann. Muss jetzt googeln ;-)

danke
 
OP
S

steven

Newbie
hallo,

Ich habe folgendes gemacht

kill -1 `cat /space/mrtg/cfg/mrtg.pid`

aber er hat immer noch die gleiche PID danach. Hat er trotzdem die konfigurationsdatei neu eingelesen???

gruss
 

regexer

Advanced Hacker
robi schrieb:
wenn man ihnen das Signal SIGHUP sendet lesen sie die Konfigurationsdatei neu ein, das ist quasi ein Restart.

Versuch mal kill -1 DaemonPID
Naja, prinzipiell kann man alle signale außer SIGKILL (Nr. 9) programmtechnisch abfangen. Wie das nun in den einzelnen Deamons geregelt ist, muss man in dessen Doku nachlesen. Vielleicht gibt es auch dort einen Hinweis, wie der Deamon zu restarten und zu beenden ist.

Sicher ist: SIGKILL geht immer! Ob das auch zweckdienlich ist, steht auf einem anderen Blatt...
 
Oben