GNU/Linux >> Linux の 問題 >  >> Linux

既に実行中の既存のコマンドが終了した後にコマンドを実行する方法は?

; で複数のコマンドを区切ることができます 、したがってそれらは順番に実行されます。例:

really_long_script.sh ; echo Finished

スクリプトがリターン コード 0 で終了した場合 (通常は正しく実行されたことを意味します) にのみ次のプログラムを実行する場合は、次のようにします。

really_long_script.sh && echo OK

反対の場合 (つまり、現在のコマンドが失敗した場合にのみ続行する場合):

really_long_script.sh || echo FAILED

スクリプトをバックグラウンドで実行できます (ただし、スクリプトの出力 (stdout そして stderr ) どこかにリダイレクトしない限り、端末に移動し続けます)、そして wait

really_long_script.sh &
dosomethingelse
wait; echo Finished

既にスクリプトを実行している場合は、Ctrl-Z で一時停止できます 、そして次のようなものを実行します:

fg ; echo Finished

どこで fg 中断されたプロセスをフォアグラウンドに移動します (bg & で開始されたように、バックグラウンドで実行されます )


bash のジョブ コントロールを使用することもできます。始めたら

$ really_long_script.sh

次に ctrl+z を押して一時停止します:

^Z
[1]+  Stopped                 really_long_script.sh
$ bg

バックグラウンドでジョブを再起動します (really_long_script.sh & で開始したかのように) )。次に、このバックグラウンド ジョブを待つことができます

$ wait N && echo "Successfully completed"

ここで、N はジョブ ID (他のバックグラウンド ジョブを実行していない場合はおそらく 1) で、[1] としても表示されます


プロセスが現在の tty で実行されない場合は、これを試してください:

watch -g ps -opid -p <pid>; mycommand

Linux
  1. 変数に格納されているコマンドを実行するにはどうすればよいですか?

  2. 検索コマンドの後にMvコマンドを統合する方法は?

  3. Linux:特定のディレクトリでコマンドを実行する方法

  1. システム管理者(root)としてコマンドを実行する方法は?

  2. 起動後にコマンドを実行するにはどうすればよいですか?

  3. ユーザーのログアウト後も nohup を使用してコマンドを実行し続ける方法は?

  1. 実行中のSystemdコンテナ内でコマンドを実行する方法は?

  2. 実行中のDockerコンテナでコマンドを実行する方法

  3. Linux で「Firefox が既に実行中」の問題を修正する方法