wie stoppe ich (while true; do echo "hallo";sleep 2;done)&?
Ich habe mir einen daemon gebastelt, der alle 2 Sekunden eine Aktion ausführt: (while true; do echo "hallo";sleep 2;done)& Einmal in Gang gesetzt funzt der auch, funktioniert der auch, nur wie ich den wieder ohne zu rebooten stoppen? Anmerkung: Eine sinnvollere Aktion als print "hallo" ist bei mir z.B.: if [ -e print.ps ]; then gv print.ps;rm print.ps;fi danke schon mal Ekkard
Am Donnerstag, 21. April 2005 22:10 schrieb Ekkard Gerlach:
(while true; do echo "hallo";sleep 2;done)&
jan@linux:~> (while true; do echo "hallo";sleep 2;done)& hallo [1] 11888 jan@linux:~> kill %1 Die 1 entspricht der Zahl in den eckigen Klammern. HTH, Jan -- When your opponent is down, kick him.
Hallo, Am Thu, 21 Apr 2005, Ekkard Gerlach schrieb:
Ich habe mir einen daemon gebastelt, der alle 2 Sekunden eine Aktion ausführt:
(while true; do echo "hallo";sleep 2;done)&
Ein Script?
Einmal in Gang gesetzt funzt der auch, funktioniert der auch, nur wie ich den wieder ohne zu rebooten stoppen?
In der Minimalversion: ( trap "exit 0;" HUP INT TERM; while true; do sleep 2; done; ) Siehe 'help trap'. Beenden geht dann, wenn du die PID deines scriptes weisst mit: kill -TERM PID Wegen der PID: pidof meindaemonscript ps ax | grep '[m]eindaemonscript' oder du nimmst die Schrotflinte und schiesst alle deinen scripte ab: killall -TERM meindaemonscript Elegant wird das ganze, wenn du dein script per startproc startest und per killproc beendest (das geht dann auch mit mehreren scripten): startproc /pfad/meindaemonscript ARGUMENTE killproc -TERM /pfad/meindaemonscript Ggfs. kannst du startproc/killproc auch noch ein anderes pidfile zuweisen und/oder damit dann mehrere Instanzen gezielt starten/beenden: startproc -f /var/run/meindaemonscript.pid /pfad/meindaemonscript ARGUMENTE killproc -f /var/run/meindaemonscript.pid -TERM /pfad/meindaemonscript Ich startete/stoppte so z.B. den pppd fuer DSL gezielt per Interface: ==== /sbin/init.d/pppoe [selbstgeschriebene Version, sehr gekuerzt] ==== : ${PPPOE_PPPD:="/usr/sbin/pppd"} : ${PPPOE_IFACE:="eth0"} : ${PPPOE_PPPD_PIDFILE:="/var/run/ppp-${PPPOE_IFACE}.pid"} case "$1" in start|up) startproc -f ${PPPOE_PPPD_PIDFILE} $PPPOE_PPPD $PPPOE_IFACE >/dev/null ;; stop|down) killproc -f ${PPPOE_PPPD_PIDFILE} -HUP $PPPOE_PPPD ;; esac ==== Und *tada* lag die PID des pppd in '/var/run/pppd-eth0.pid' und ich haette z.B. noch nen pppd fuer eth1 starten und stoppen koennen (der haette dann eben /var/run/pppd-eth1.pid bekommen ;) HTH, -dnh --
Dann wird aber alles daran gesetzt worden sein, dass da kein Bourne Again Shell (/bin/bush) drauf läuft. Ein Blick nach Faludscha sagt mir, dass es sich bei der /bin/bush eher um eine sogenannte "Burn again"-Shell handelt. [aus de.comp.security.misc]
participants (4)
-
David Haller
-
Ekkard Gerlach
-
Jan Ritzerfeld
-
Peter Wiersig