Suchen und beenden laufender Scripte

FatManStanding

Lieutenant
Registriert
Aug. 2021
Beiträge
514
Hallo,

hier https://wiki.ubuntuusers.de/ps/ wird empfohlen anstatt "ps aux | grep prozess" besser "ps -fC prozess" für die Suche nach laufenden Prozessen zu nutzen da der erste sich selbst findet. Der zweite benötigt aber die vollständige Eingabe des Prozessnamens. Das ganze scheitert aber im Falle eines Scriptes. Ich experimentiere gerade mit dem VNC-Client NoVNC, weil der deutlich schneller läuft als alle "normalen" VNC-Clienten. Leider hat NoVNC keine GUI sondern man startet es im Terminal und sieht den Remote-Rechner im Browser. Ich bastel etwas um das halbwegs zu automatisieren. Es kommt aber vor, dass laufende Prozesse aus vorherigen Sitzungen im Hintergrund laufen, das sieht dann so aus:

Code:
bash /home/fms/Downloads/novnc/utils/novnc_proxy --listen 6083 --vnc 192.168.10.23:5901
python3 -m websockify --web /home/ich/Downloads/novnc 6083 192.168.10.23:5901
python3 -m websockify --web /home/ich/Downloads/novnc 6083 192.168.10.23:5901

In diesem Fall würde NoVNC meckern, dass der Port belegt ist (siehe 1. Zeile). Der Prozess "websockify" kann mehrdach parallel laufen. Ich würd emir das gerne so zurechtscripten, dass wenn ich NoVNC verbinde geprüft wird ob NoVNC und websockify schon läuft, diese beendet und eine neue Verbindung herstellt. Das muss ich bisher recht umständlich machen weil das beenden nur mit "kill prozess-id" geht und die Suche nur mit "ps aux | grep".

Normal kann man Prozesse auch mit "killall name" oder "pkill name" beenden. Wieso geht das hier nicht? 'novnc_proxy' ist am Ende auch nur ein Shell-Script der Entwickler. Selbst wenn ich die ganze Zeile eingebe die mir "ps" ausgibt geht das weder mit pkill noch mit killall. Ich muss umständlich die ID herausfiltern und kill nutzen.

Das gleiche bei der Suche mit ps. Egal was ich bei "ps -fC" eingebe, novnc_proxy und websockify werden nicht gefunden, auch wenn ich die ganze Zeile als Suchbegriff eingebe.
 
Vielleicht nicht schön aber geht:
Code:
ps aux | grep prozess | grep -v grep
 
@Helge01 hätte ich auch so gemacht, Du warst schneller ..... evtl. auch einfach pidof

ein
Bash:
kill $(pidof prozess)

sollte alles weghauen
 
Das klingt als würdest du einen deamon bzw. eine Systemd-Unit haben wollen.
 
  • Gefällt mir
Reaktionen: Marco01_809
Das mit dem prozessnummern kenne ich nicht, muss ich mir mal ansehen.

Ansonsten hab ich das auch mit 2 grep hintereinander gemacht. Über den port kann man im falle von 2 gleichzeitig laufender Prozesse diese unterscheiden.
 
Zurück
Oben