解決策 1:
最善の方法は screen
を使用することです (サーバー上で)セッションを開始してコマンドを実行し、画面を切断して実行を継続し、他のことを実行したり、サーバーから切断したりできます。もう 1 つのオプションは、nohup
を使用することです。 &
と組み合わせて したがって、nohup <command> &
になります。
解決策 2:
disown
も使用できます screen
なしですでにプロセスを開始している場合 または nohup
解決策 3:
既存の回答はうまく機能しますが、BusyBox (ホーム ルーターなどの最小限のハードウェア用のシェルとツールのセット) 用の何かが必要でした。私のシステムには screen
がありません 、 dtach
、 at
、 disown
、または nohup
! SO (リンク) の tbc0 のおかげで、この宝石を見つけました。すぐに戻りますが、サーバー プロセスは引き続き実行されます:
ssh myserver 'sleep 100 >&- 2>&- <&- &'
または、複数のコマンドが必要な場合:
ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'
説明:
>&-
- 標準出力ハンドルを閉じる2>&-
- stderr を閉じる<&-
- 標準入力を閉じる&
- プロセスをバックグラウンドに置く
これは外部プログラムを使用せず、ksh、ash、Bourne シェル、bash などで動作するはずです。