Предположим, есть 2 задачи t1
, t2
, которые можно выполнить последовательно, как показано ниже:
t1 ; t2
# OR
t1 && t2
Теперь предположим, что я забыл запустить t2
и t1
уже Бег; можно добавить t2
в конвейер, чтобы он выполнялся после завершения t1
?
Да Вы можете:
fg
или %
, добавьте, что Вы хотите к списку и выполняете его, например: fg ; systemctl suspend # or
% ; systemctl suspend
С тех пор fg
возвращает возвращаемое значение задания, как которое оно возобновилось, операторы списка &&
и ||
работа как ожидалось: fg && echo "Finished successfully!" # or
% && echo "Finished successfully!"
man bash
/ УПРАВЛЕНИЕ ЗАДАНИЯМИ говорит о приостановить символе:
Ввод приостановить символ (обычно
^Z
, Управление-Z), в то время как процесс выполняет причины, которые обрабатывают, чтобы быть остановленными и управление возвратами кbash
. (…) пользователь может затем управлять состоянием этого задания, с помощьюbg
команда для продолжения его в фоновом режиме,fg
команда для продолжения его на переднем плане, илиkill
управляйте для уничтожения его. A^Z
сразу вступает в силу и имеет дополнительный побочный эффект порождения вывода ожидания и опережающего ввода, который будет отброшен.
fg
в объясняют man bash
/ ОКРУЖАЮТ ВСТРОЕННЫЕ КОМАНДЫ:
fg [jobspec]
Возобновите jobspec на переднем плане и сделайте его текущим заданием. Если jobspec не присутствует, понятие оболочки текущего задания используется. Возвращаемое значение является возвращаемым значением команды, помещенной в передний план или отказ, если выполнено, когда управление заданиями отключено или, когда выполнено с включенным управлением заданиями, если jobspec не указывает допустимое задание, или jobspec указывает задание, которое было запущено без управления заданиями.
Дополнительные материалы для чтения (кроме man bash
) на управлении заданиями:
Я видел этот метод здесь: 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
(приоритетная команда), принесет приостановленное задание онлайн и &&
гарантирует, что пропущенная команда только выполняется, если первая команда успешно выполняется.