web-dev-qa-db-ja.com

ターミナルから実行すると、アプリケーションの所有権が自動的に失われます

ターミナルからアプリケーションを起動した後、どのようにしてアプリケーションを自動的に否認しますか?

例:ターミナルを起動してfirefoxを実行すると、アプリケーションが起動しますが、ターミナルを閉じると、Firefoxも閉じます。端末から開始されたアプリケーションを意図せずに閉じることを避けるために、最初にアンパサンドを使用してそれらをバックグラウンドに置くことができます:firefox &これにより、その端末のプロンプトを使用する機能も復元されます。次に、アプリケーションのプロセスID(PID)を使用して、同じ端末からアプリケーションの所有権を剥奪できます。以下の例を参照してください。

$ firefox & 
$ ps | grep firefox
14917 pts/6    00:00:00 firefox
$ disown 14917

これで、アプリケーションは使用している端末から独立して実行され、端末を閉じてもアプリケーションは終了しなくなりました。

しかし、アプリケーションを起動するたびにこれを自動的に行うにはどうすればよいですか?

2
PDiracDelta

最も簡単な方法は、以下を実行することです。

daemon firefox

ターミナル自体を使い続けたり閉じたりすることができます

4
I-V

編集:a より良い答え はI-Vによって提供されました。

これを自動的に行うには、bashエイリアスを使用できます。ホームディレクトリの.bash_aliasesファイルに次の行を追加すると、コマンドmy_applicationを使用して、ターミナルから任意のアプリケーションs my_applicationを起動し、自動的にバックグラウンドに配置して、そのターミナルから所有権を剥奪することができます。

# start programs from Shell but immediately disown them
startAndDisown() {
    $1 & disown $! 
}
alias s=startAndDisown

$!は、最後の非同期ジョブのPIDを自動的に返すことに注意してください。

2
PDiracDelta