Linuxシェルからリモートサーバーにgitを使用してファイルをアップロードするコマンドがありますが、完了するまでに何時間もかかります。
実行中のプログラムをバックグラウンドで実行するにはどうすればよいですか?だから私はまだシェルで作業でき、そのプロセスも完了しますか?
ctrl+z
は素晴らしいですが。
Linuxシェルからリモートサーバーにgitを使用してファイルをアップロードするコマンドがありますが、完了するまでに何時間もかかります。
実行中のプログラムをバックグラウンドで実行するにはどうすればよいですか?だから私はまだシェルで作業でき、そのプロセスも完了しますか?
ctrl+z
は素晴らしいですが。
回答:
CTRL + Zでプロセスを一時停止し、コマンドbg
を使用してバックグラウンドで再開します。例えば:
sleep 60
^Z #Suspend character shown after hitting CTRL+Z
[1]+ Stopped sleep 60 #Message showing stopped process info
bg #Resume current job (last job stopped)
マニュアルページのジョブ制御とbg
使用法の詳細bash
:
JOB CONTROL
型付けが中断文字(通常は^ Z、コントロール-Z)プロセスは、プロセスが停止するとリターンがbashのにコントロールすることの原因を実行している間。[...]ユーザーは、bgコマンドを使用してこのジョブの状態を操作し、バックグラウンドで続行できます[...]。^ Zはすぐに有効になり、保留中の出力と先行入力が破棄されるという副次的な影響があります。bg [ jobspec ...] &で開始されたかのように、
中断された各ジョブjobspecをバックグラウンドで再開します。場合は ジョブ仕様が存在しない、のシェルの概念現在のジョブが使用されています。
編集
ターミナルを強制終了することもできるプロセスを開始するために、それは実行を続けます
nohup [command] [-args] > [filename] 2>&1 &
例えば
nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 &
(あまり賢明ではない)出力を無視するには、ファイル名を次のように変更します。 /dev/null
別のファイルに設定されたエラーメッセージを取得する&1
には、ファイル名に変更します。
さらに:jobs
コマンドを使用して、これらのバックグラウンドプロセスのインデックス付きリストを表示できます。また、バックグラウンドプロセスを実行するkill %1
かkill %2
、その番号をプロセスのインデックスとして、強制終了できます。
/dev/null
。上記の編集を参照してください。
kill -9 <pid of your shell
を実行すると、プロセスは引き続き実行され、出力は破棄されますが、新しいシェルを開始するには再度ログインする必要があります。
disown
端末セッションからログアウトする必要があり、実行を継続したい場合にも、このコマンドを使用できます。