從終端啟動應用程式後,如何自動拒絕該應用程式?
例如:如果您啟動終端並執行firefox
應用程式將啟動,但當您關閉終端機時,firefox 也會關閉。為了避免無意中關閉從終端啟動的應用程序,可以先使用 ampersant: 將它們置於後台,firefox &
這也恢復了使用該終端提示符的能力。接下來,您可以使用應用程式的進程 ID (PID) 從相同終端取消該應用程式的所有權,請參閱下面的範例:
$ firefox &
$ ps | grep firefox
14917 pts/6 00:00:00 firefox
$ disown 14917
該應用程式現在獨立於您正在使用的終端運行,關閉終端將不再終止該應用程式。
但是如何在每次啟動應用程式時自動執行此操作呢?
答案1
最簡單的方法是執行:
daemon firefox
這樣您就可以繼續使用/關閉終端本身
答案2
編輯:更好的答案由 IV 提供。
若要自動執行此操作,您可以使用 bash 別名。如果將以下行新增至主目錄中的 .bash_aliases 檔案中,則可以my_application
使用以下命令從終端啟動任何應用程序,同時自動將其置於後台,然後從該終端取消它的所有權s my_application
:
# start programs from shell but immediately disown them
startAndDisown() {
$1 & disown $!
}
alias s=startAndDisown
請注意,$!
自動傳回最後一個非同步作業的 PID。
答案3
firefox & disown $!
對我不起作用,但對我有用的類似解決方案是firefox&;disown
另一個不涉及的解決方案disown
是使用GNU Screen。即使您關閉終端機窗口,它也會保留您的終端會話。然而,它的實用性取決於您如何使用終端。如果您一次只使用一個終端窗口,這是一個很好的解決方案。如果您使用更多終端,則更少。使用您最喜歡的套件管理器安裝 screen,然後每次開啟終端類型screen -r
(或screen
如果沒有 screen 會話正在執行)。這樣您就不必擔心關閉終端機。這是一個非常小眾的解決方案,但它可能適合您。