從終端運行應用程式時自動拒絕應用程式

從終端運行應用程式時自動拒絕應用程式

從終端啟動應用程式後,如何自動拒絕該應用程式?

例如:如果您啟動終端並執行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 會話正在執行)。這樣您就不必擔心關閉終端機。這是一個非常小眾的解決方案,但它可能適合您。

相關內容