Как поставить команду в очередь после завершения другой команды?

9

Иногда я запускаю программу, которая занимает очень много времени, чтобы завершить ( emerge), а затем осознает, что мне нужно идти спать, а не ждать ее. Если бы я знал это в первую очередь, я бы побежал

program; halt

Однако теперь, когда я уже запустил программу, как я могу «запланировать» выключение компьютера после завершения этого процесса? Будет ли Ctrl+zтогда fg; haltбыть в порядке?

phunehehe
источник

Ответы:

15

Да, это будет работать.

Если вы не уверены, вы можете проверить это с

  • sleep 15

  • Ctrl+z

  • fg; echo "it works"

MRU
источник
2

Другой способ - просто ввести haltсвой терминал во время выполнения первой команды; до тех пор, пока первая команда не прочитает ввод в какой-то момент, она будет находиться в буфере терминала, и оболочка будет читать его, когда первая программа завершится

Михаил Мрозек
источник
1

Используя waitкоманду

$ sleep 10 &
[1] 29703
$ wait 29703 && echo hello
[1]+  Done                    sleep 10
hello
Gaius
источник