端末を起動しコマンドを実行中、端末を閉じると端末から起動したコマンドも停止してしまいます。
これは、標準入力、標準出力、標準エラーの全てが起動した端末に紐付いているからです。
以下に記述した方法で、端末から切り離すことができます。
尚、本資料ではbashを使用しています。
以下の構文により、端末から起動したコマンドの標準入力、標準出力、標準エラーを全て/dev/nullにしています。
コマンド > /dev/null 2>&1 < /dev/null &
実際にエディタソフトであるgeditを上記の構文で端末から起動してみます。
$ gedit *.txt > /dev/null 2>&1 < /dev/null & [1] 6837
上記のようにgeitを起動しました。起動するとプロセスIDが表示されました。
これで、geditを起動した端末を閉じてもgeditが終了しません。
尚、標準出力、標準エラーはファイルとし標準入力は/dev/nullとする場合は以下のような書式になります。
コマンド > ファイル名 2>&1 < /dev/null &
標準出力と標準エラーを別々のファイルに出力したい場合の書式は以下のようになります。
コマンド > 標準出力ファイル名 2> 標準エラーファイル名 < /dev/null &
以上、端末(ターミナル)から起動したコマンドのプロセスを切り離す方法でした。