0
在Start Script when Gnome Starts Up有人問到如何在gnome登錄時自動啓動腳本。但是如何在註銷時自動停止長時間運行的腳本,這是在登錄時啓動的?在我的情況下,當我登錄兩次時有兩個過程。有趣的是,首先啓動的進程不再位於gnome-session之下。當gnome會話結束時停止腳本
在Start Script when Gnome Starts Up有人問到如何在gnome登錄時自動啓動腳本。但是如何在註銷時自動停止長時間運行的腳本,這是在登錄時啓動的?在我的情況下,當我登錄兩次時有兩個過程。有趣的是,首先啓動的進程不再位於gnome-session之下。當gnome會話結束時停止腳本
我會包裝在一個簡單的bash腳本中執行的二進制文件,該腳本將啓動的進程的pid保存在一個臨時文件中。如果此文件已存在,則跳過應用程序的啓動。由於該文件保存在/tmp
目錄中,一旦重新啓動計算機,所有內容都將被刪除。
#!/bin/bash
binary="git-cola"
temp_file="/tmp/my_${binary}_instance.pid"
if [[ -f ${temp_file} ]]
then
echo "PID exists"
else
exec ${binary} &
echo $! > ${temp_file}
fi
有了你可以檢查進程的PID仍在運行,並再次重新啓動它的登錄(例如,如果進程崩潰或其他用戶關閉它)再努力一點。
我實際上不使用Gnome,所以我不能告訴你是否有更優雅的方法來終止進程。就像註銷鉤子一樣。但是一旦你獲得了保存的進程的pid,你可以用kill -9 PID
殺死它。 (請參閱man kill
以更溫和的方式結束該過程)。
這可能不是停止過程的解決方案。但要防止它啓動兩次。