回答:
はい、できます:
fg
か%
、リストにしたいものを追加し、それを実行し、例えば:
fg ; systemctl suspend # or
% ; systemctl suspend
以来fg
、それは再開ジョブの戻り戻り値は、リスト演算子は好き&&
と||
期待通りの仕事:
fg && echo "Finished successfully!" # or
% && echo "Finished successfully!"
man bash
/ JOB CONTROLは、サスペンドキャラクターについて次のように述べています。
プロセスの実行中に中断 文字(通常
^Z
は Control- Z)を入力する と、そのプロセスが停止し、制御がに戻りますbash
。(…)ユーザーはbg
、バックグラウンドでfg
続行するコマンド、フォアグラウンドで続行するkill
コマンド、または強制終了するコマンドを 使用して、このジョブの状態を操作できます。A^Z
はすぐに有効になり、保留中の出力と先行入力が破棄されるという追加の副作用があります。
fg
man bash
/ SHELL BUILTIN COMMANDSで説明されています。
fg [ jobspec ] フォアグラウンドでjobspecを
再開し、それを現在のジョブにします。jobspecが存在しない場合、シェルの現在のジョブの概念が使用されます。戻り値は、フォアグラウンドに置かれたコマンドの戻り値、またはジョブ制御が無効なときに実行される場合は失敗、ジョブ制御が有効な状態で実行される場合、jobspec が有効なジョブを指定しない場合、 またはjobspecはジョブ制御なしで開始されたジョブを指定する場合。
man bash
ジョブ制御に関する詳細な情報(を除く):
^Z^Z
そして%-;%+;t3
場合によっては十分ですが、問題の本当の解決策とはほど遠いです。
私はここでこの方法を見ました:https : //superuser.com/questions/334272/how-to-run-a-command-after-an-already-running-existing-one-finishes
最初にCtrl+ zを実行して実行中のコマンドを停止(サスペンド)した後、次のように欠落しているコマンドfg && ./missed_cmd.sh
を実行しfg
ます。
fg
(フォアグラウンドコマンド)は、オンライン中断したジョブをもたらすでしょうし、&&
最初のコマンドが成功した場合逃したコマンドは、実行されていることを確認します。
t3
、t1; t2; t3
またはを忘れると動作しませんt1 && t2 && t3
。