Во-первых, если я остановлю процесс tar, будет ли он возобновлен с того места, где он остановился, или ему придется снова пройти через все каталоги (много каталогов и файлов).
Во-вторых, правильно ли я «отрекаюсь» от этого процесса?
Я подключился к своему серверу linux (ubuntu).
Я начал процесс с tar -cf /mnt/backup.tar / var / www.
Спустя несколько часов процесс все еще продолжается, и мне нужно выключить настольный компьютер.
Я нажал Ctrl + Z, чтобы приостановить процесс,
затем запустил "bg", чтобы возобновить его в фоновом режиме.
затем запустил 'disown -h tar'
затем запустил "ps faux"
root 8760 0.0 0.1 8964 3036 ? Ss Aug21 0:21 \_ sshd: root@pts/0
root 8762 0.0 0.1 4408 1880 pts/0 Ss+ Aug21 0:00 | \_ -bash
root 23184 0.2 0.0 3708 1072 pts/0 D Aug24 3:30 | \_ tar -cf /mnt/backup.tar www/
Я вижу команду tar, и в столбце «STAT» отображается D. Означает ли это отключение?
Я не совсем понимал, что это за «работа», я предположил «деготь».
Пожалуйста, дайте мне знать, правильно ли я делаю и безопасно ли выйти из системы и закрыть сеанс ssh. Не хотелось бы перезапускать этот процесс.
Также обратите внимание, что на этот вопрос здесь дан ответ: Могу ли я отключить / просмотреть уже начатый процесс?
Тем не менее, я расширяю вопрос, так как был немного сбит с толку относительно использования disown и того, что такое «работа» на самом деле.
Когда вы выходите из интерактивной оболочки входа в bash, она отправляет сигнал SIGHUP всем дочерним элементам, если только параметр оболочки huponexit
установлен на выкл.
Когда большинство пользовательских процессов получают сигнал SIGHUP, они завершаются.
Когда ты disown -h
, вы отмечаете процесс, чтобы bash не отправлял сигнал SIGHUP при выходе независимо от параметров оболочки. Вы также могли добавить к команде префикс nohup
чтобы воспроизвести то же поведение.
Что касается STAT D:
Непрерывное состояние сна - это состояние сна, которое не может обрабатывать сигнал (например, ожидание диска или сетевого ввода-вывода (ввод / вывод)).