回答:
最良の方法は、screen(サーバー上で)を使用してセッションを開始してコマンドを実行し、画面を切断して実行を継続し、他のことを実行するか、サーバーから切断することです。もう1つのオプションはnohup、と組み合わせて使用する&ことです。nohup <command> &
screen -r再接続します。
使用することもできdisownますが、すでにせずに処理を開始した場合screenまたはnohup
既存の回答はうまく機能しますが、BusyBox(シェルとホームルーターなどの最小限のハードウェア用のツールセット)に何かが必要でした。私のシステムではありませんscreen、dtach、at、disown、またはにもnohup!SO(リンク)のtbc0のおかげで、この宝石を見つけました。すぐに戻りますが、サーバープロセスは引き続き実行されます。
ssh myserver 'sleep 100 >&- 2>&- <&- &'
または、複数のコマンドが必要な場合:
ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'
説明:
>&- -stdoutハンドルを閉じる2>&- -stderrを閉じる<&- -stdinを閉じる& -プロセスをバックグラウンドに置くこれは外部プログラムを使用せず、ksh、ash、Bourne shell、bashなどで機能するはずです。
プロセスをバックグラウンドで実行してセッションを閉じると、プロセスはinit(PID 1)によって採用されます。
私がセッションをしていて:
]$ sleep 10000 &
]$ exit
別のセッションを開いて実行します。
]$ ps -ef | grep sleep
501 26387 1 0 16:37 ? 00:00:00 sleep 10000
root 26422 21360 0 16:40 pts/0 00:00:00 grep sleep
私のプロセスはまだ実行中で、その親プロセスは1(init)であることがわかります。
あるいは、デーモンのようにスクリプトを設定することもできます。クイック検索により、この一見役立つリンク:http : //onlamp.com/python/pythoncook2/solution.csp?day=1が表示されます。あなたがそのアプローチをとりたいなら。