В bash, каковы потенциальные негативные последствия приостановки процесса с помощью control-z?

11

Используя bash, можно приостановить процесс control-z. Тем не менее, существуют ли какие-либо общие обстоятельства или рекомендации, которые следует учитывать, если процесс не будет вести себя хорошо, если его приостановить?

Мой конкретный сценарий заключался в создании файла tar, который занимал больше времени, чем ожидалось. Я хотел сделать паузу в фоновом режиме, но решил не делать этого. Мой вопрос, конечно же, не относится к tar. Скорее, я надеюсь немного лучше понять функцию паузы в bash, а также то, что заставило бы процесс плохо реагировать на приостановку.

Wesley
источник

Ответы:

3

Задачи хранения (pvmove, veritas vx-что угодно), которые полагаются на атомарные копии. Это не хорошо, если они застряли вне их контроля. Это зависит от того, запускает ли задача какой-либо API и делает все остальное из пространства ядра, тогда это безопасно. Если это происходит в этом * процессе * в вашей оболочке, тогда действительно используйте экран и держите руки подальше.

Определенно рекомендуем вам не останавливать их на заднем плане. Команды, использующие буферы, такие как dd, выглядят лучше, за исключением ленточных накопителей, упомянутых выше.

(Однажды я выиграл дополнительную перезагрузку, меньше спал и много паранойи, когда это случилось со мной, когда я очищал чужой беспорядок. Очевидно: не пытайтесь использовать ярлыки, если вы исправляете ярлыки других людей ...)

Флориан Хейгл
источник
6

Если ваш процесс записывает данные, просто имейте в виду, что проблемы синхронизации с устройствами и буферами с произвольным доступом могут быть проблематичными. Я видел, что у накопителей на магнитной ленте иногда возникают проблемы с этим.

Magellan
источник
сеансы сети / брандмауэра могут прерваться и не быть перезапущены, поскольку TCP-SYN не пересылается
Джиппи
Стек TCP будет продолжать отправлять ACK, что окно заполнено, правда?
Магеллан
Поддержание активности пакетов не является частью протокола TCP или IP, в лучшем случае - частью приложения. Таким образом, брандмауэр или удаленный клиент или сервер могут прервать ожидание пакета и сбросить сокет / соединение.
Джиппи
Не говоря уже о keepalive, это, очевидно, уровень приложения. Я говорю о ACK для скользящего окна TCP на транспортном уровне.
Магеллан
2

И мирской сценарий: выполнение Ctrl-Z, затем забывание об этом и выход из системы и потеря процесса! знак равно

gfountis
источник
0

Не совсем конкретный ответ на вопрос, но, в качестве альтернативы, вы можете попытаться запустить параллельные задания, используя screen. Таким образом, вы можете использовать оболочку одновременно с другой программой.

jhtong
источник
Да, экран - это всегда хороший способ. Однако я не знаю, как ответить на ваше имя.
Уэсли
@toiletfreak Как экран является альтернативой паузе? Экран запускает задание в фоновом режиме, верно? Но это продолжается, если вы отсоедините экран ...
Бернхард