バックグラウンドジョブ

バックグラウンドジョブ

私は ssh 経由でサーバーに接続しており、長時間かかるプロセスを実行したいと考えています。ラップトップのターミナルで ssh を使用してサーバーに接続していますが、ラップトップの電源をオフにしてもサーバーで進行状況を実行できるようにしたいと考えています。2 台のコンピューターは別々なので、これが可能と思われますが、ssh 経由で可能かどうかはわかりません。

答え1

非常に簡単です。&例えば、コマンドの後にを追加します。

bash script.sh &

セッションを終了したりターミナルを閉じたりしても、実行は継続されます。
別の方法としては、nohupコマンドを使用してコマンドを実行することです。例えば

nohup bash script.sh

使用しman nohupてフォローするこれ同様の方向性を持つ質問。

答え2

バックグラウンドジョブ

バックグラウンドで実行するには

program &

バックグラウンドで実行し、切断後も続行します。stdoutにもリダイレクトされます~/nohup.out

nohup program &

同じですが、別のファイルにリダイレクトします

nohup program > "another file" &

上記のコマンドでは、コマンドを使用してバックグラウンド ジョブを確認できることに注意してくださいjobs

同じですが、ジョブリストから削除します

nohup program > "another file" & disown

永続的なセッション

gnu screentmux、 を参照してくださいvnc。これらを使用すると、切断中でもセッションを開いたままにすることができます。

ヌーscreen

#create a screen session (do this once)
screen -d -m

#attach to the session
screen -x

複数の(名前付きセッション)を持つこともできます

#create a screen session (do this once)
screen -d -m -S a_name

#attach to the session
screen -x -S a_name

内部では、ctrl_a が画面の制御に使用されることに注意してください。ctrl_a ctrl_a は、ctrl_a をシェルに渡します。

VC

#create a vnc session (do this once)
vncserver -from 127.1.0.1 -geometry 1920x1000 :10

#attach to the session (from a remote machine)
ssvnc Vnc+ssh://«user»@«machine-name»:10

ディスプレイを修正するにはジオメトリを変更し、ディスプレイ番号を変更してください。

ノート:

ローカルマシン上の誰でも VNC セッションに接続できます。

-SecurityTypes None経由で十分なセキュリティがある場合は、VNC セキュリティをオフにすることもできますssh

127.1.0.1はループバック範囲内にあります。ローカル マシン上のプロセスのみが接続できます。ssh(ssvnc) 経由でリモート接続できます。 を使用して、nftablesに接続できるユーザーを制限できます。ループバック範囲内には (約 1600 万) の127.1.0.1アドレスが多数あるため、各ユーザーに 1 つずつ割り当てても余裕があります。127.0.0.1127.255.255.254

関連情報