SSH でログアウトした後もプロセスを残すメモ


はじめに

SSH接続している際に、ログアウト後もプロセスを持続させる方法のメモです。
やりたいことは基本的にはこれでできます。

$ nohup コマンド内容 > out.log &

$ nohup echo "very very heavy task" > out.log &

これを実行すると、カレンドディレクトリに out.log ファイルが作成され、出力内容が保存されます。

out.log
very very heavy task

関数化

ここからがメインです。先程のコマンドはちょっと長いので、関数として登録します。

僕が使用しているシェルは zsh なので ~/.zshrc に次の内容を追記します。
bash の場合は ~/.bashrc に追記してください。

.zshrc
background () {
    nohup ${@:1} > out.log &
}

内容を保存して、変更内容を適応します。

$ source ~/.zshrc

これで実行したいプロセスの先頭に background を付けるだけで、バックグラウンド実行することができます。

$ background echo "very very heavy task"

引数がいくつあっても大丈夫です。

$ background python takes_many_args.py foo bar --arg3 1234 --arg4 abcd