Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

04.09.2005, 13:25

Prozesse beenden

Hallo zusammen,

ich habe eine .sh Datei die einen Gameserver laufen lässt und ihn auch sofort wieder neu startet, falls er mal abstürzt.

Nun folgendes Problem:
Mit "kill PID" lässt sich der Prozess wunderbar beenden. Wenn ich allerdings "killall name.sh" eingebe, kommt keine Fehlermeldung, aber der Prozess läuft trotzdem weiter.

Kann mir jemand sagen woran das liegt?

Achja, ich habe noch eine Frage dazu:

Wenn ich als User "xyz" einen Gameserver starte (also in meinem Fall sind das dann zwei Prozesse) - wie kann ich als dieser User den Server (über SSH z.B.) dann auch wieder beenden? Bisher funktioniert das nur als root, sonst kommt Zugriff verweigert!

2

04.09.2005, 13:28

Guck die mal mit ps -ax an wie genau der prozess heißt und dann probier mal ob du mit pkill "Prozessname" den prozess killen kannst!

3

04.09.2005, 13:46

Der Befehl pkill arbeitet genauso wie "killall" - also was ich meine ist, dass er bei fast allen Prozessen funktioniert - nur bei den .sh Dateien leider nicht.

4

04.09.2005, 14:06

Sorry für den Doppelpost aber man kann Beiträge hier ja nur 15 Minuten bearbeiten.

Ich habe jetzt mal "killall -e /bin/sh ./name.sh" eingegeben. Tatsächlich: Die sh Datei bzw. der Prozess wird beendet aber komischerweise auch der X-Server.

Naja meine Frage nun: Wieso beendet sich der X-Server?

Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

5

04.09.2005, 14:09

Weil Du mit "killall /bin/sh" saemtliche Shells killst.

6

04.09.2005, 14:17

Ok und wie kill ich dann nur die eine sh-Datei also diesen Prozess?

Mit kill PID geht es aber ich will das ja auch Remote machen können per SSH. Da könnte ich es zwar auch so machen aber es soll eine Datei geben, um den Server zu beenden und da bringt mir das nix, weil die ID ja jedes mal ne andere ist.

Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

7

04.09.2005, 14:19

Quellcode

1
2
3
4
5
#!/bin/sh

for pid in $(ps -ax | grep "name.sh" | grep -v | awk '{print $1}'); do
  /bin/kill $pid
done

8

04.09.2005, 14:54

bad ps syntax - kommt jetzt!

Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

9

04.09.2005, 15:01

Was hast Du denn eingegeben?

10

04.09.2005, 15:11

Ich habe es in eine Datei kopiert, das sieht dann so aus:

#!/bin/sh
for pid in $(ps -ax | grep autorestart.sh | grep -v | awk '{print $1}'); do
/bin/kill $pid
done
for pid in $(ps -ax | grep autorestartbase.sh| grep -v | awk '{print $1}'); do
/bin/kill $pid
done
killall linuxjampded 2>/dev/null
echo " "
echo "Server has been stopped!"
echo " "
exit 1
fi

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Cerox« (04.09.2005, 15:14)


Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

11

04.09.2005, 15:41

Ups.. Freud'sch Fehler... es muss heissen:
ps ax | grep "name.sh" | grep -v grep | awk '{print $1}'

12

04.09.2005, 17:22

Danke - so hat es jetzt funktioniert. Komischerweise hat sich das andere Problem direkt mitgelöst, nämlich, dass der User, der den Prozess gestartet hat ihn nicht beenden kann sondern nur Root.

Thema bewerten