端末でアプリケーションを実行すると自動的にアプリケーションが拒否される

端末でアプリケーションを実行すると自動的にアプリケーションが拒否される

端末でアプリケーションを起動した後に自動的にアプリケーションを拒否するにはどうすればよいですか?

例:ターミナルを起動して実行すると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

関連していない別の解決策は、disownGNU Screenを使用することです。端末ウィンドウを閉じても、端末セッションは維持されます。しかし、その有用性は端末をどのように使用するかによって異なります。一度に1つの端末ウィンドウのみを使用する場合、これは優れたソリューションです。より多くの端末を使用すると、より少なくなります。よく使用するパッケージマネージャを使用して画面をインストールし、毎回端末タイプを開きますscreen -r(またはscreen画面セッションが実行されていない場合)。これにより、端末を閉じることを心配する必要はありません。これは非常にニッチなソリューションですが、あなたに役立ちます。

関連情報