2009-07-23 7 views
1

Ich bin ein Ubuntu Linux Benutzer. Ich führe Jobs remote aus und starte eine Bildschirmsitzung. Während dieser Sitzung habe ich eine Datei gefunden, die eine lange Liste von Befehlszeilenargumenten enthält, die ausgeführt werden müssen. Ich wurde von der Verbindung ausgeschlossen und jetzt laufen die Jobs auf diesem Bildschirm und ich kann sie nicht töten.Shell-Skript in getrennter Bildschirmsitzung ausführen. Muss töten. Wie?

Kann jemand alle laufenden und zukünftigen Befehle töten, die dieses Skript ausführen wird. Vielen Dank im Voraus.

Antwort

2

Bringen Sie den Bildschirm mit

screen -D -r 

dann können Sie Ihre Sitzung fortsetzen.

+0

Danke. Das hat funktioniert. Ich habe eine andere Frage. Im Zusammenhang mit dieser Lösung, wenn ich mich wieder an meine Bildschirmsitzung anschließe: Ohne Strg-C zu drücken, bis alle Befehle abbrechen, gibt es einen schnelleren Weg, alle zukünftigen Befehle auf einen Schlag zu beenden? – banDedo

+1

Das Handbuch des Bildschirms hätte dir gesagt, dass C-a C-k das aktuelle Fenster zerstört, was die Shell und alle zukünftigen Befehle mit sich bringen sollte. –

2

Verwenden ps die pid des Shell-Prozess (bash, tcsh, usw.) zu identifizieren, dann ist das töten ...

3

Wenn Sie nur alles töten wollen gibt es keine Notwendigkeit, auch auf Bildschirm wieder an.

Listen Sie einfach den problematischen Prozess (e):

pstree -PLA

dann töten was zu töten muss. Beachten Sie, dass, wenn Sie einen Prozess weiter oben im Prozessbaum beenden, seine Kinder (normalerweise) ebenfalls verschwinden werden.

0

Es gibt ein paar 'screen' Möglichkeiten, um eine bestimmte Bildschirmsitzung zu töten ...

1) einen 'beenden' Befehl senden:

screen -X -S "sessionname" quit 

2) senden Ctrl-C eine Bildschirm-Sitzung ein Skript ausgeführt wird:

screen -X -S "sessionname" stuff "^C" 

In beiden Fällen müssen Sie ... töten ‚screen -ls‘ zu finden, die Sitzungsnamen der Bildschirms Sitzung, die Sie verwenden möchten, wenn es nur ein Bildschirm Sitzung läuft, müssen Sie nicht Geben Sie den Parameter -S "Sitzungsname" an.

Verwandte Themen