Niektóre aplikacje zezwalają tylko na jedną działającą instancję (np. Eclipse, jeśli chcesz korzystać z tego samego obszaru roboczego). Więc jeśli loguję się z innej lokalizacji, muszę zabić / zamknąć aplikację, która była otwarta, kiedy wcześniej logowałem się z innej lokalizacji.
Zawsze używam polecenia kill, aby zabić uruchomiony proces. Ale jeśli zabijesz proces, może nie zapisać niektórych stanów, które są przydatne do wykorzystania w przyszłości. Jeśli jednak „zamkniesz” go poprawnie, na przykład klikając przycisk zamykania, spowoduje to prawidłowe zapisanie stanów.
Czy istnieje sposób na prawidłowe „zamknięcie” aplikacji z wiersza poleceń? Wiem, że może się to różnić od aplikacji, więc bądźmy bardziej ogólni: jak wysłać sygnał do innej uruchomionej aplikacji, a ten sygnał działa tak, jakbyśmy kliknęli przycisk „zamknij” na górnym pasku?
źródło
Odpowiedzi:
Domyślnie polecenie kill wyśle
SIGTERM
(sygnał zakończenia) do uruchomionego procesu. W przeciwieństwie do tegoSIGKILL
, który siłą zabije proces bez szansy na odpowiedź,SIGTERM
sygnał może zostać przechwycony przez proces, pozwalając mu zakończyć się z wdziękiem. Czy to faktycznie ma zakończyć wdziękiem jest całkowicie zależne od samego procesu; równie łatwo może się zabić lub całkowicie zignorować sygnał.Możesz upewnić się, że wysyłasz
SIGTERM
zamiast jakiegoś innego sygnału, wyraźnie zaznaczając go w wierszu poleceń:źródło
kill
Polecenie próbuje wdzięku wyłączył. Jeśli w takim przypadku aplikacja nie zostanie poprawnie zamknięta, jest zepsuta. (I ogromna większość wniosków nie jest zepsuta.)kill -s TERM <firefox-pid>
, nie zamknie się z wdziękiem, a kiedy uruchomię go ponownie, zapyta mnie, czy chcę odzyskać zawieszoną sesję. : westchnienie:Zauważ, że jeśli używasz
pkill
zamiastkill
, aby określić TERM, składnia jest następująca:pkill
jest jak zabicie, ale możesz użyć nazwy procesu zamiast identyfikatora.man pkill
źródło