Zwykle podczas uruchamiania aplikacji w środowisku graficznym, gdy chcę ją zamknąć, klikam X
w lewym górnym rogu okna lub przechodzę do File > Close
.
Chciałbym czasami zamykać te programy zdalnie przez ssh z terminala za pomocą wiersza poleceń, teraz używam kill
polecenia, ale zastanawiam się, czy robi to to samo, co prawidłowe wychodzenie z aplikacji.
Od man kill
domyślny sygnał wydaje się być 15) SIGTERM, jest to sygnał powie aplikację staram się zamknąć, aby oczyścić, zamknij otwarte pliki Zapisz rzeczy?
Czy jest lepszy sposób, jeśli chcę to zrobić z terminala?
command-line
Mikrofon
źródło
źródło
Odpowiedzi:
Typowym sposobem na wdzięczne zamknięcie aplikacji jest użycie
kill -TERM 1234
, gdzie1234
jest PID okna. Problem polega jednak na tym, że aplikacje graficzne są zaprojektowane do nasłuchiwania określonego sygnału z samego serwera X, a nie nasłuchiwania tegoTERM
sygnału.Oznacza to, że potrzebujesz jakiegoś agenta między tobą a serwerem X, aby komunikować się, że chcesz wysłać odpowiedni sygnał. Możesz oczywiście napisać program w C, jednak istnieje
wmctrl
program (co nie jest zaskoczeniem napisane w C), który robi dokładnie to.Użycie
wmctrl
jest proste:Nie jest domyślnie instalowany, więc zdobądź go
sudo apt-get install wmctrl
Jest wiele zastosowań, które
wmctrl
wykraczają daleko poza zamykanie okien, więc proszę zobaczyć więcej moich odpowiedzi i Jacoba Vlijma, żeby zobaczyć przykłady skryptów, w których zostały użyteźródło
wmctrl -l
wyświetli wszystkie okna i poda numeryczny identyfikator w postaci szesnastkowej w pierwszej kolumnie. =)Minimize to tray on close
iwmctrl -c
po prostu zamknie okno, a nie samą aplikację, pozostanie uruchomiona zminimalizowana do zasobnika.Myślę, że warto dodać, że wyniki
wmctrl -xl
będą wyglądały następująco:Gdzie
x
żąda, aby klasa okna była w danych wyjściowych. Jest to często najłatwiejszy sposób na zamknięcie tego samego programu za każdym razem. Następnie możemy po prostu podać klasę okna podczas jej zamykania:Ten przykład zamknie speedcrunch.
źródło