Wayland: Can't focus and raise window
Because of wayland.
Added an issue here: https://github.com/leanflutter/hotkey_manager/issues/21
Possible workaround: Add custom Hotkey to gnome settings to wether start application or to open it up with wmctrl -a linux_assistant
This Workaround doesn't help, because, wmctrl -l doesn't work on wayland... https://unix.stackexchange.com/questions/399753/how-to-get-a-list-of-active-windows-when-using-wayland
Maybe we can see the running processes and depending on them we can choose if we call wmctrl -aor to start a new instance of linux-assistant...
wmctrl -a doesn't work.
Currently can't find a nice fix for it.
I guess we need to call gdbus for that which is very complicated.
For now I implement a workaround, that the app closes automatically after opening an entry and calling minimize.
Das geht mit wenn nur eine linux-assistant ist er nur imintergrund aktiv und an kann mit STRG Q es aufrunten oder mt dem sykript start_linux_assitant.sh danach laufen mehere. stopen kann man über die oberflache normal oder t dem skript stop_linux_assitant.sh ps aux | grep linux-assistant georg 170771 0.0 0.0 6588 1664 pts/1 S+ 16:30 0:00 grep --color=auto linux-assistant georg@georg-pc:~$ ^C georg@georg-pc:~$ ps aux | grep linux-assistant georg 171029 0.0 0.0 7364 2560 ? S 16:33 0:00 /bin/bash /usr/bin/linux-assistant georg 171034 39.4 1.5 2160764 120916 ? Sl 16:33 0:02 /usr/lib/linux-assistant/linux-assistant georg 171219 0.0 0.0 6588 1664 pts/1 S+ 16:33 0:00 grep --color=auto linux-assistant georg@georg-pc:~$
https://github.com/Jean28518/linux-assistant/blob/v0.5.3/linux-assistant.sh das müsste angepasst werden , so das bei Wayland nicht mehr die Anwendung nicht mehr geschlossen werden muss sondern so wie mit x11 lief. Der Puffer https://github.com/Jean28518/linux-assistant/issues/36 braucht man nicht, da es nur bei dem ersten starten der Anwendung passiert und danach durchlaufen kann bis der benutzer es schliest. if wmctrl -l | grep -q 'Linux Assistant'; then wmctrl -a 'Linux Assistant' else "$APP_DIR/linux-assistant" fi
georg@georg-pc:~$ cat start_linux_assitant.sh #!/bin/bash
Pfad zur Linux Assistant-Anwendung
APP_PATH="/usr/lib/linux-assistant/linux-assistant"
Überprüfen, ob die Anwendung bereits läuft
if pgrep -x "linux-assistant" > /dev/null; then echo "Linux Assistant läuft bereits." else # Anwendung starten $APP_PATH & echo "Linux Assistant gestartet." fi georg@georg-pc:~$ cat stop_linux_assitant.sh #!/bin/bash
Prozess-IDs der Linux Assistant-Prozesse ermitteln
PIDS=$(ps aux | grep linux-assistant | awk '{print $2}')
Überprüfen, ob Prozesse gefunden wurden
if [ -z "$PIDS" ]; then echo "Keine Linux Assistant-Prozesse gefunden." exit 0 fi
Jeden Prozess einzeln beenden
for PID in $PIDS; do echo "Beende Prozess mit PID $PID..." kill -15 $PID # Sanftes Beenden mit SIGTERM (15) sleep 1 # Kurze Pause, um dem Prozess Zeit zum Beenden zu geben done
Überprüfen, ob noch Prozesse laufen
REMAINING_PIDS=$(ps aux | grep linux-assistant | awk '{print $2}')
Eventuell verbliebene Prozesse erzwungen beenden
if [ -n "$REMAINING_PIDS" ]; then echo "Erzwungenes Beenden der verbleibenden Prozesse..." kill -9 $REMAINING_PIDS # Erzwungenes Beenden mit SIGKILL (9) fi
echo "Alle Linux Assistant-Prozesse beendet." georg@georg-pc:~$ ./start_linux_assitant.sh Linux Assistant läuft bereits. georg@georg-pc:~$ ./stop_linux_assitant.sh Beende Prozess mit PID 167790... Beende Prozess mit PID 169143... ./stop_linux_assitant.sh: Zeile 15: kill: (169143) - Kein passender Prozess gefunden Erzwungenes Beenden der verbleibenden Prozesse... ./stop_linux_assitant.sh: Zeile 25: kill: (169157) - Kein passender Prozess gefunden Alle Linux Assistant-Prozesse beendet. georg@georg-pc:~$ ./start_linux_assitant.sh Linux Assistant gestartet. georg@georg-pc:~$ flutter: Run python script: python3 [/usr/lib/linux-assistant/additional/python/run_script.py, get_environment.py] flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/run_script.py, get_environment.py] flutter: Running linux command: /usr/bin/id with arguments: [-u] flutter: Running linux command: /usr/bin/id with arguments: [-nu, 1000] flutter: Running linux command: /usr/bin/groups with arguments: [] flutter: Running linux command: /usr/bin/glxinfo with arguments: [-B] flutter: Running linux command: /usr/bin/lshw with arguments: [] flutter: WARNUNG: Sie sollten dieses Programm mit Systemverwalterrechten (root) ausführen. WARNUNG: Ausgabe kann unvollständig oder fehlerhaft werden, Sie sollten dieses Programm mit Systemverwalterrechten (root) ausführen.
flutter: Running linux command: /usr/bin/lspci with arguments: [-nnk] flutter: Running linux command: /usr/bin/gsettings with arguments: [get, org.gnome.desktop.interface, gtk-theme] flutter: Running linux command: /usr/bin/gsettings with arguments: [get, org.gnome.desktop.interface, color-scheme]
** (linux-assistant:169171): WARNING **: 16:16:40.616: Binding '<Meta>q' failed!
** (linux-assistant:169171): WARNING **: 16:16:45.630: Binding '<Meta>q' failed! flutter: Loading basic folders flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/get_folder_structure.py, --recursion_depth=5] flutter: Loading applications flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python//get_applications.py, --lang=de, --desktop=DESKTOPS.GNOME] flutter: Loading recently used files and folders flutter: Run python script: python3 [/usr/lib/linux-assistant/additional/python/run_script.py, get_recent_files.py] flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/run_script.py, get_recent_files.py] flutter: Loading favorite files and folder bookmarks flutter: Run python script: python3 [/usr/lib/linux-assistant/additional/python/run_script.py, get_favorite_files.py] flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/run_script.py, get_favorite_files.py] flutter: Loading browser bookmarks flutter: Run python script: python3 [/usr/lib/linux-assistant/additional/python/run_script.py, get_bookmarks.py] flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/run_script.py, get_bookmarks.py] flutter: Loading flatpaks flutter: Running linux command: /usr/bin/flatpak with arguments: [list, --app, --columns=application] flutter: Loading uninstall entries flutter: Running linux command: /usr/bin/dpkg with arguments: [--get-selections] flutter: Running linux command: /usr/bin/flatpak with arguments: [list, --app, --columns=application,name,description] flutter: Running linux command: /usr/bin/snap with arguments: [list] flutter: Running linux command: /usr/bin/cat with arguments: [/home/georg//.config/gtk-3.0/bookmarks] flutter: Loading recently used files and folders flutter: Finished: search_filter_recently_used_files_and_folders flutter: Removing disabled entries flutter: Initiating configHandler flutter: Running linux command: /usr/bin/df with arguments: [-h] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m]
eine beschreibung von .perplexity. was da passiert Um alle drei Prozesse der Linux Assistant-Anwendung über ein Skript zu beenden, können Sie folgendes Bash-Skript verwenden:
#!/bin/bash
# Prozess-IDs der Linux Assistant-Prozesse ermitteln
PIDS=$(ps aux | grep linux-assistant | awk '{print $2}')
# Überprüfen, ob Prozesse gefunden wurden
if [ -z "$PIDS" ]; then
echo "Keine Linux Assistant-Prozesse gefunden."
exit 0
fi
# Jeden Prozess einzeln beenden
for PID in $PIDS; do
echo "Beende Prozess mit PID $PID..."
kill -15 $PID # Sanftes Beenden mit SIGTERM (15)
sleep 1 # Kurze Pause, um dem Prozess Zeit zum Beenden zu geben
done
# Überprüfen, ob noch Prozesse laufen
REMAINING_PIDS=$(ps aux | grep linux-assistant | awk '{print $2}')
# Eventuell verbliebene Prozesse erzwungen beenden
if [ -n "$REMAINING_PIDS" ]; then
echo "Erzwungenes Beenden der verbleibenden Prozesse..."
kill -9 $REMAINING_PIDS # Erzwungenes Beenden mit SIGKILL (9)
fi
echo "Alle Linux Assistant-Prozesse beendet."
Hier ist eine Erklärung, was das Skript macht:
-
Zuerst werden mit
ps aux | grep linux-assistant | awk '{print $2}'die Prozess-IDs (PIDs) aller laufenden Linux Assistant-Prozesse ermittelt und in der VariablePIDSgespeichert. -
Wenn keine Prozesse gefunden wurden, wird eine Meldung ausgegeben und das Skript beendet.
-
Ansonsten wird mit einer
for-Schleife über alle gefundenen PIDs iteriert.- Für jeden Prozess wird eine Meldung ausgegeben und der Prozess mit
kill -15 $PIDsanft beendet (SIGTERM). - Nach einer kurzen Pause von 1 Sekunde, um dem Prozess Zeit zum Beenden zu geben, wird mit der nächsten PID fortgefahren.
- Für jeden Prozess wird eine Meldung ausgegeben und der Prozess mit
-
Nach der Schleife werden erneut die verbleibenden Linux Assistant-Prozess-IDs ermittelt.
-
Wenn noch Prozesse laufen, werden diese mit
kill -9 $REMAINING_PIDSerzwungen beendet (SIGKILL). -
Abschließend wird eine Meldung ausgegeben, dass alle Prozesse beendet wurden.
Um das Skript auszuführen, speichern Sie es z.B. als kill_linux_assistant.sh und machen es ausführbar mit chmod +x kill_linux_assistant.sh. Dann können Sie es mit ./kill_linux_assistant.sh starten.
Beachten Sie, dass dieses Skript alle Linux Assistant-Prozesse beendet, unabhängig davon, von welchem Benutzer sie gestartet wurden. Wenn Sie nur die eigenen Prozesse beenden möchten, müssen Sie die ps-Ausgabe entsprechend filtern.
Citations: [1] https://github.com/Jean28518/linux-assistant/ [2] https://github.com/Jean28518/linux-assistant/blob/v0.5.3/linux-assistant.sh [3] https://github.com/Jean28518/linux-assistant/issues/24 [4] https://be-jo.net/2013/11/4-wege-einen-prozess-zu-beenden-kill-pkill-killall-xkill/ [5] https://pimylifeup.com/linux-kill-process/
Teil 2 der Beschreibung Hier ist ein Bash-Skript, das die Linux Assistant-Anwendung startet, wenn sie noch nicht läuft. Wenn sie bereits läuft, wird keine weitere Instanz gestartet:
#!/bin/bash
# Pfad zur Linux Assistant-Anwendung
APP_PATH="/usr/lib/linux-assistant/linux-assistant"
# Überprüfen, ob die Anwendung bereits läuft
if pgrep -x "linux-assistant" > /dev/null; then
echo "Linux Assistant läuft bereits."
else
# Anwendung starten
$APP_PATH &
echo "Linux Assistant gestartet."
fi
Erklärung:
-
Zuerst wird der Pfad zur ausführbaren Datei der Linux Assistant-Anwendung in der Variable
APP_PATHgespeichert. -
Mit dem Befehl
pgrep -x "linux-assistant"wird überprüft, ob ein Prozess mit dem exakten Namen "linux-assistant" läuft. Die Option-xstellt sicher, dass nur Prozesse mit dem exakten Namen gezählt werden.- Wenn der Befehl erfolgreich ist (Exitcode 0), bedeutet dies, dass die Anwendung bereits läuft.
- Die Ausgabe von
pgrepwird mit> /dev/nullin die leere Datei/dev/nullumgeleitet, um sie zu unterdrücken.
-
Wenn die Anwendung bereits läuft, wird eine Meldung ausgegeben.
-
Andernfalls wird die Anwendung mit
$APP_PATH &im Hintergrund gestartet, und eine Meldung über den Start ausgegeben.
Um das Skript auszuführen, speichern Sie es z.B. als start_linux_assistant.sh und machen es ausführbar mit chmod +x start_linux_assistant.sh. Dann können Sie es mit ./start_linux_assistant.sh starten.
Beachten Sie, dass dieses Skript davon ausgeht, dass die Linux Assistant-Anwendung unter dem angegebenen Pfad /usr/lib/linux-assistant/linux-assistant installiert ist. Passen Sie den Pfad entsprechend Ihrer Installation an.
Dieses Skript stellt sicher, dass nur eine Instanz der Linux Assistant-Anwendung gleichzeitig läuft, indem es zuerst überprüft, ob die Anwendung bereits ausgeführt wird, bevor eine neue Instanz gestartet wird.
Citations: [1] https://github.com/Jean28518/linux-assistant/ [2] https://github.com/Jean28518/linux-assistant/blob/v0.5.3/linux-assistant.sh [3] https://github.com/Jean28518/linux-assistant/issues/24 [4] https://be-jo.net/2013/11/4-wege-einen-prozess-zu-beenden-kill-pkill-killall-xkill/ [5] https://opensource.com/article/18/5/how-kill-process-stop-program-linux
Das geht mit wenn nur eine linux-assistant ist er nur imintergrund aktiv und an kann mit STRG Q es aufrunten oder mt dem sykript start_linux_assitant.sh danach laufen mehere. stopen kann man über die oberflache normal oder t dem skript stop_linux_assitant.sh ps aux | grep linux-assistant georg 170771 0.0 0.0 6588 1664 pts/1 S+ 16:30 0:00 grep --color=auto linux-assistant georg@georg-pc:~$ ^C georg@georg-pc:~$ ps aux | grep linux-assistant georg 171029 0.0 0.0 7364 2560 ? S 16:33 0:00 /bin/bash /usr/bin/linux-assistant georg 171034 39.4 1.5 2160764 120916 ? Sl 16:33 0:02 /usr/lib/linux-assistant/linux-assistant georg 171219 0.0 0.0 6588 1664 pts/1 S+ 16:33 0:00 grep --color=auto linux-assistant georg@georg-pc:~$
https://github.com/Jean28518/linux-assistant/blob/v0.5.3/linux-assistant.sh das müsste angepasst werden , so das bei Wayland nicht mehr die Anwendung nicht mehr geschlossen werden muss sondern so wie mit x11 lief. Der Puffer https://github.com/Jean28518/linux-assistant/issues/36 braucht man nicht, da es nur bei dem ersten starten der Anwendung passiert und danach durchlaufen kann bis der benutzer es schliest. if wmctrl -l | grep -q 'Linux Assistant'; then wmctrl -a 'Linux Assistant' else "$APP_DIR/linux-assistant" fi
georg@georg-pc:~$ cat start_linux_assitant.sh #!/bin/bash
Pfad zur Linux Assistant-Anwendung
APP_PATH="/usr/lib/linux-assistant/linux-assistant"
Überprüfen, ob die Anwendung bereits läuft
if pgrep -x "linux-assistant" > /dev/null; then echo "Linux Assistant läuft bereits." else # Anwendung starten $APP_PATH & echo "Linux Assistant gestartet." fi georg@georg-pc:~$ cat stop_linux_assitant.sh #!/bin/bash
Prozess-IDs der Linux Assistant-Prozesse ermitteln
PIDS=$(ps aux | grep linux-assistant | awk '{print $2}')
Überprüfen, ob Prozesse gefunden wurden
if [ -z "$PIDS" ]; then echo "Keine Linux Assistant-Prozesse gefunden." exit 0 fi
Jeden Prozess einzeln beenden
for PID in $PIDS; do echo "Beende Prozess mit PID $PID..." kill -15 $PID # Sanftes Beenden mit SIGTERM (15) sleep 1 # Kurze Pause, um dem Prozess Zeit zum Beenden zu geben done
Überprüfen, ob noch Prozesse laufen
REMAINING_PIDS=$(ps aux | grep linux-assistant | awk '{print $2}')
Eventuell verbliebene Prozesse erzwungen beenden
if [ -n "$REMAINING_PIDS" ]; then echo "Erzwungenes Beenden der verbleibenden Prozesse..." kill -9 $REMAINING_PIDS # Erzwungenes Beenden mit SIGKILL (9) fi
echo "Alle Linux Assistant-Prozesse beendet." georg@georg-pc:~$ ./start_linux_assitant.sh Linux Assistant läuft bereits. georg@georg-pc:~$ ./stop_linux_assitant.sh Beende Prozess mit PID 167790... Beende Prozess mit PID 169143... ./stop_linux_assitant.sh: Zeile 15: kill: (169143) - Kein passender Prozess gefunden Erzwungenes Beenden der verbleibenden Prozesse... ./stop_linux_assitant.sh: Zeile 25: kill: (169157) - Kein passender Prozess gefunden Alle Linux Assistant-Prozesse beendet. georg@georg-pc:~$ ./start_linux_assitant.sh Linux Assistant gestartet. georg@georg-pc:~$ flutter: Run python script: python3 [/usr/lib/linux-assistant/additional/python/run_script.py, get_environment.py] flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/run_script.py, get_environment.py] flutter: Running linux command: /usr/bin/id with arguments: [-u] flutter: Running linux command: /usr/bin/id with arguments: [-nu, 1000] flutter: Running linux command: /usr/bin/groups with arguments: [] flutter: Running linux command: /usr/bin/glxinfo with arguments: [-B] flutter: Running linux command: /usr/bin/lshw with arguments: [] flutter: WARNUNG: Sie sollten dieses Programm mit Systemverwalterrechten (root) ausführen. WARNUNG: Ausgabe kann unvollständig oder fehlerhaft werden, Sie sollten dieses Programm mit Systemverwalterrechten (root) ausführen.
flutter: Running linux command: /usr/bin/lspci with arguments: [-nnk] flutter: Running linux command: /usr/bin/gsettings with arguments: [get, org.gnome.desktop.interface, gtk-theme] flutter: Running linux command: /usr/bin/gsettings with arguments: [get, org.gnome.desktop.interface, color-scheme]
** (linux-assistant:169171): WARNING **: 16:16:40.616: Binding '<Meta>q' failed!
** (linux-assistant:169171): WARNING **: 16:16:45.630: Binding '<Meta>q' failed! flutter: Loading basic folders flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/get_folder_structure.py, --recursion_depth=5] flutter: Loading applications flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python//get_applications.py, --lang=de, --desktop=DESKTOPS.GNOME] flutter: Loading recently used files and folders flutter: Run python script: python3 [/usr/lib/linux-assistant/additional/python/run_script.py, get_recent_files.py] flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/run_script.py, get_recent_files.py] flutter: Loading favorite files and folder bookmarks flutter: Run python script: python3 [/usr/lib/linux-assistant/additional/python/run_script.py, get_favorite_files.py] flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/run_script.py, get_favorite_files.py] flutter: Loading browser bookmarks flutter: Run python script: python3 [/usr/lib/linux-assistant/additional/python/run_script.py, get_bookmarks.py] flutter: Running linux command: /usr/bin/python3 with arguments: [/usr/lib/linux-assistant/additional/python/run_script.py, get_bookmarks.py] flutter: Loading flatpaks flutter: Running linux command: /usr/bin/flatpak with arguments: [list, --app, --columns=application] flutter: Loading uninstall entries flutter: Running linux command: /usr/bin/dpkg with arguments: [--get-selections] flutter: Running linux command: /usr/bin/flatpak with arguments: [list, --app, --columns=application,name,description] flutter: Running linux command: /usr/bin/snap with arguments: [list] flutter: Running linux command: /usr/bin/cat with arguments: [/home/georg//.config/gtk-3.0/bookmarks] flutter: Loading recently used files and folders flutter: Finished: search_filter_recently_used_files_and_folders flutter: Removing disabled entries flutter: Initiating configHandler flutter: Running linux command: /usr/bin/df with arguments: [-h] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m] flutter: Running linux command: /usr/bin/free with arguments: [-m]
eine beschreibung von .perplexity. was da passiert Um alle drei Prozesse der Linux Assistant-Anwendung über ein Skript zu beenden, können Sie folgendes Bash-Skript verwenden:
#!/bin/bash
# Prozess-IDs der Linux Assistant-Prozesse ermitteln
PIDS=$(ps aux | grep linux-assistant | awk '{print $2}')
# Überprüfen, ob Prozesse gefunden wurden
if [ -z "$PIDS" ]; then
echo "Keine Linux Assistant-Prozesse gefunden."
exit 0
fi
# Jeden Prozess einzeln beenden
for PID in $PIDS; do
echo "Beende Prozess mit PID $PID..."
kill -15 $PID # Sanftes Beenden mit SIGTERM (15)
sleep 1 # Kurze Pause, um dem Prozess Zeit zum Beenden zu geben
done
# Überprüfen, ob noch Prozesse laufen
REMAINING_PIDS=$(ps aux | grep linux-assistant | awk '{print $2}')
# Eventuell verbliebene Prozesse erzwungen beenden
if [ -n "$REMAINING_PIDS" ]; then
echo "Erzwungenes Beenden der verbleibenden Prozesse..."
kill -9 $REMAINING_PIDS # Erzwungenes Beenden mit SIGKILL (9)
fi
echo "Alle Linux Assistant-Prozesse beendet."
Hier ist eine Erklärung, was das Skript macht:
-
Zuerst werden mit
ps aux | grep linux-assistant | awk '{print $2}'die Prozess-IDs (PIDs) aller laufenden Linux Assistant-Prozesse ermittelt und in der VariablePIDSgespeichert. -
Wenn keine Prozesse gefunden wurden, wird eine Meldung ausgegeben und das Skript beendet.
-
Ansonsten wird mit einer
for-Schleife über alle gefundenen PIDs iteriert.- Für jeden Prozess wird eine Meldung ausgegeben und der Prozess mit
kill -15 $PIDsanft beendet (SIGTERM). - Nach einer kurzen Pause von 1 Sekunde, um dem Prozess Zeit zum Beenden zu geben, wird mit der nächsten PID fortgefahren.
- Für jeden Prozess wird eine Meldung ausgegeben und der Prozess mit
-
Nach der Schleife werden erneut die verbleibenden Linux Assistant-Prozess-IDs ermittelt.
-
Wenn noch Prozesse laufen, werden diese mit
kill -9 $REMAINING_PIDSerzwungen beendet (SIGKILL). -
Abschließend wird eine Meldung ausgegeben, dass alle Prozesse beendet wurden.
Um das Skript auszuführen, speichern Sie es z.B. als kill_linux_assistant.sh und machen es ausführbar mit chmod +x kill_linux_assistant.sh. Dann können Sie es mit ./kill_linux_assistant.sh starten.
Beachten Sie, dass dieses Skript alle Linux Assistant-Prozesse beendet, unabhängig davon, von welchem Benutzer sie gestartet wurden. Wenn Sie nur die eigenen Prozesse beenden möchten, müssen Sie die ps-Ausgabe entsprechend filtern.
Citations: [1] https://github.com/Jean28518/linux-assistant/ [2] https://github.com/Jean28518/linux-assistant/blob/v0.5.3/linux-assistant.sh [3] https://github.com/Jean28518/linux-assistant/issues/24 [4] https://be-jo.net/2013/11/4-wege-einen-prozess-zu-beenden-kill-pkill-killall-xkill/ [5] https://pimylifeup.com/linux-kill-process/
Teil 2 der Beschreibung Hier ist ein Bash-Skript, das die Linux Assistant-Anwendung startet, wenn sie noch nicht läuft. Wenn sie bereits läuft, wird keine weitere Instanz gestartet:
#!/bin/bash
# Pfad zur Linux Assistant-Anwendung
APP_PATH="/usr/lib/linux-assistant/linux-assistant"
# Überprüfen, ob die Anwendung bereits läuft
if pgrep -x "linux-assistant" > /dev/null; then
echo "Linux Assistant läuft bereits."
else
# Anwendung starten
$APP_PATH &
echo "Linux Assistant gestartet."
fi
Erklärung:
-
Zuerst wird der Pfad zur ausführbaren Datei der Linux Assistant-Anwendung in der Variable
APP_PATHgespeichert. -
Mit dem Befehl
pgrep -x "linux-assistant"wird überprüft, ob ein Prozess mit dem exakten Namen "linux-assistant" läuft. Die Option-xstellt sicher, dass nur Prozesse mit dem exakten Namen gezählt werden.- Wenn der Befehl erfolgreich ist (Exitcode 0), bedeutet dies, dass die Anwendung bereits läuft.
- Die Ausgabe von
pgrepwird mit> /dev/nullin die leere Datei/dev/nullumgeleitet, um sie zu unterdrücken.
-
Wenn die Anwendung bereits läuft, wird eine Meldung ausgegeben.
-
Andernfalls wird die Anwendung mit
$APP_PATH &im Hintergrund gestartet, und eine Meldung über den Start ausgegeben.
Um das Skript auszuführen, speichern Sie es z.B. als start_linux_assistant.sh und machen es ausführbar mit chmod +x start_linux_assistant.sh. Dann können Sie es mit ./start_linux_assistant.sh starten.
Beachten Sie, dass dieses Skript davon ausgeht, dass die Linux Assistant-Anwendung unter dem angegebenen Pfad /usr/lib/linux-assistant/linux-assistant installiert ist. Passen Sie den Pfad entsprechend Ihrer Installation an.
Dieses Skript stellt sicher, dass nur eine Instanz der Linux Assistant-Anwendung gleichzeitig läuft, indem es zuerst überprüft, ob die Anwendung bereits ausgeführt wird, bevor eine neue Instanz gestartet wird.
Citations: [1] https://github.com/Jean28518/linux-assistant/ [2] https://github.com/Jean28518/linux-assistant/blob/v0.5.3/linux-assistant.sh [3] https://github.com/Jean28518/linux-assistant/issues/24 [4] https://be-jo.net/2013/11/4-wege-einen-prozess-zu-beenden-kill-pkill-killall-xkill/ [5] https://opensource.com/article/18/5/how-kill-process-stop-program-linux