ssh先でもバックグラウンド実行したい!
小ネタ
通常ssh先でプロセスを実行した際、sshのセッションが切れると実行中のコマンドも終了する。
デーモン化をサポートしてるプログラムならデーモンにすれば良いんだけど、ping
とかは無理
何個か方法探したので備忘録。
環境:ubuntu 16.04 LTS
方法
&をつける
一番簡単でシンプルなな方法。
例えば〜pingのログを記録する時。
~
$ ping 8.8.8.8 > log.txt &
[1] 5395
これだけ。簡単。終了する時は適当にkillコマンド送ってあげよう。
~
$ kill 5395
[1] + terminated ping 8.8.8.8 > log.txt
ついでにまとめて何コマンドが実行する時はこういう感じで()
で包む
~
$ (sleep 10; print hoge;)%
nohupを使う
これも古典的な方法。標準出力が保存される。
~
$ nohup ping 8.8.8.8
nohup: 入力を無視し、出力を 'nohup.out' に追記します
screenを使う
上記二つだと上手く対応出来ないようなグラフィカルなCUIを提供するアプリでもおなじみのscreenなら大丈夫。
例えばtop
コマンド
~
$ screen top
とりあえずこれだけでバックグラウンド実行が可能。
screenの使い方は先人のステキな記事を読むと幸せになれる。
screenのコマンドの備忘録
refs.
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230850/
https://www.codereading.com/nb/ignore-the-hangup-signal.html
screenのコマンドの備忘録