![SSHセッションを終了して現在のコマンドラインを実行し続けるにはどうすればよいですか? [コピー]](https://linux33.com/image/125552/SSH%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E7%B5%82%E4%BA%86%E3%81%97%E3%81%A6%E7%8F%BE%E5%9C%A8%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
約10日ほどかかる実行命令があります。プロセスは、すべてのサブディレクトリからファイルを検索してビデオを変換するためです。見つかった各ビデオコマンドラインに対して、システムはプロセス番号を変更します。
これは私が実行している行です:
find . -exec ffmpeg -i {} -vf scale=1280:720 -vcodec libx264 -crf 30 -b:v 300000 {}_250.mp4 \;
SSHセッションを終了して現在のコマンドラインを実行し続けるにはどうすればよいですか?
もう2日目を迎えましたが、単に接続が切れてこのすべての時間を失うことになるかと心配です。
答え1
そして
netstat --inet --inet6 -lnp | grep :22
プロセスのPIDを見つけることができますsshd
。そして
# pstree -p -n 1527
sshd(1527)─┬─sshd(32296)───bash(32298)───screen(32336)
└─sshd(32723)───bash(32725)───find(32763)───sleep(323)
子プロセスを見ることができます。
死ぬbash(32725)
と死ぬ- これはバックグラウンドで実行し、組み込みシェルを使用して防ぐことができます。ただし、プロセスが終了すると、すべての子プロセスと制御端末が消え、カーネルがそのプロセスを終了します。find(32763)
SIGHUP
find
disown
sshd(32723)
一時停止しshd(32723)
てbash(32725)
。これにより、SSH接続が失われたときに照会を終了できなくなります。
kill -stop 32723 32725
次回はよりスマートに行動してください。 Web経由でログインすると、利用しない、またはscreen
ログインしない理由はほとんどありません。tmux
答え2
nohup find . -exec ffmpeg -i {} -vf scale=1280:720 -vcodec libx264 -crf 30 -b:v 300000 {}_250.mp4 \; &
最初に終了すると警告メッセージが表示されますが、繰り返し終了すると、端末入力が必要ない限り、プログラムは実行を続けます。
しかし、私は速すぎて、あなたのプログラムがすでに実行されているという事実を無視しました。