Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : BASH: Prozess Handling



kressevadder
15-06-2003, 20:37
Hallo,

#!/bin/bash
(sleep 60)&
echo $!>lock_pid

obriges script startet sleep im Hintergrund und schreibt die PID des zuletzt im Hintergrund gestateten Prozesses in lock_pid. Das Ganze funktioniert.

Nun möchte ich aber nachdem der Hintergrundprozess beendet ist das lock_pid file löschen:

#!/bin/bash
(sleep 60;rm lock_pid)&
echo $!>lock_pid

lock_pid enthält nun nicht die PID von sleep, obwohl es ja der zuletzt im Hintergrund gestartete ps ist, sondern die der Shellscrips selbst

Kann mir jemand weiterhelfen?

P.S. eigentlich möchte ich rsync im hintergrund starten und brauche die PID von rsync um den Prozess stoppen zu können.

Danke Manfred

CYP
21-06-2003, 09:22
ist das nur ein rsync prozess ??

dann einfach
kill $(pidof rsync)

allerdings spuckt dir pidof alle pid der rsync prozesse also wenn du verschiedene gestartet hast klappt das nicht

warum willst du den denn stoppen ? läuft der im daemon modus ? oder macht der client probleme ?

Jasper
22-06-2003, 15:40
Original geschrieben von kressevadder

Kann mir jemand weiterhelfen?

P.S. eigentlich möchte ich rsync im hintergrund starten und brauche die PID von rsync um den Prozess stoppen zu können.


ps -o ppid,cmd | grep "^PID"

PID ist die pid des shellskripts. die obige zeile gibt alle prozesse aus, deren ppid == PID ist. darunter ist auch dein rsync.

-j