Можно ли добавить процесс в список заданий в bash (например, чтобы отменить «отключение»)?

Если я disown от работы в bash и передумаю, могу ли я ее каким-то образом отменить?

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

И, наконец, это сделает возможным следующий рабочий процесс:

  • положите работу в фоновом режиме ( ^z затем bg )
  • получить его pid ( jobs -p %+ чтобы получить его <pid> )
  • откройте сеанс screen или tmux , присоедините к нему и используйте его для следующих шагов
  • используйте reptyr для захвата задания ( reptyr <pid> )
  • добавьте <pid> в управление работой оболочки ( возможно ли это вообще? )
  • прекратите работу ( ^Z )

Я могу сделать все, кроме двух последних шагов. Остановка задания с помощью ^Z не работает, потому что процесс не находится в списке заданий оболочки.

Мои исследования показывают, что невозможно владеть (отменить disown ) pid, но, надеюсь, я ошибаюсь …

One Solution collect form web for “Можно ли добавить процесс в список заданий в bash (например, чтобы отменить «отключение»)?”

В общем, оболочка не может «принять» работу. Для оболочки работа означает несколько вещей:

  • Свяжите идентификатор задания с идентификатором процесса.
  • Отобразить его статус (работает, приостановлено, мертво).
  • Уведомлять пользователя о статусе изменения.
  • Отправьте сигнал SIGHUP, когда терминал уйдет.
  • Контролировать, является ли задание «владельцем» терминала (будь то группа процессов переднего плана).

Большинство из них не требуют какой-либо специальной связи между оболочкой и заданием, но есть некоторые из них:

  • Чтобы уведомить пользователя о статусе изменения, оболочка полагается на прием сигнала SIGCLD . Этот сигнал отправляется ядром в родительский процесс начального процесса задания.
  • Чтобы контролировать доступ к терминалу, оболочка должна находиться в том же сеансе, что и задание.

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

В частном случае, когда задание является тем, которое первоначально было начато этой оболочкой, а затем отменено, эти проблемы не возникают. Но ни одна из обычных оболочек не реализовала исключение из исключения, которое позволяет им добавлять работу, если они изначально начали ее.

В вашем сценарии обычно было бы наиболее удобно запускать задание в сеансе экрана или tmux и использовать PID, если вы хотите приостановить или возобновить его.

Interesting Posts

Сортировка нескольких файлов csv на основе двух столбцов в каталоге

Что нужно сделать для резервного копирования, прежде чем возиться с X

Удалить последний символ из строки, захваченной с помощью awk

Отсутствует 1 MiB перед первым разделом и после последнего раздела во время секционирования с разделенным

Объединение расширения параметров с модификаторами в zsh

Воспроизводить произвольный звук PCM через динамик ПК?

Переименование нескольких файлов в каталоге UNIX

Как открыть файл rar в linux?

Проблема обновления / Kubuntu

Отправка почты через внешний smtp-сервер с помощью командной строки / сценария оболочки

Вывод PS-файла в текстовый файл

как получить корневой раздел LVM для RHEL 5.8 64 бит на AWS EC2

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

настроить безопасное соединение через SSH

Клавиатура / мышь не работают при подключении к USB-концентратору, но только на Fedora – работает на других дистрибутивах

Linux и Unix - лучшая ОС в мире.