Есть ли способ обеспечить последовательные задачи на терминале во время выполнения задачи (без использования файла)?

Предположим, есть 2 задачи t1, t2, которые можно выполнить последовательно, как показано ниже:

t1 ; t2
# OR
t1 && t2

Теперь предположим, что я забыл запустить t2 и t1 уже Бег; можно добавить t2 в конвейер, чтобы он выполнялся после завершения t1?

14
задан 8 May 2018 в 09:12

2 ответа

Да Вы можете:

  1. Приостановите в настоящее время рабочее задание с приостановить символом путем нажатия Ctrl+Z.
  2. Ввести 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) на управлении заданиями:

19
ответ дан 23 November 2019 в 02:59

Я видел этот метод здесь: 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 (приоритетная команда), принесет приостановленное задание онлайн и && гарантирует, что пропущенная команда только выполняется, если первая команда успешно выполняется.

2
ответ дан 23 November 2019 в 02:59

Другие вопросы по тегам:

Похожие вопросы: