私は 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 screen
、tmux
、 を参照してください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.1
127.255.255.254