Делает `(Sleep 123 &)` Удалить группу процессов от контроля работы Bash?

После проблемы в моем вопросе я обнаружил, что yum терпит неудачу каждый раз с

Another app is currently holding the yum lock; waiting for it to exit...

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

[root@localhost owner]# ps < /var/run/yum.pid
  PID TTY          TIME CMD
 4126 pts/0    00:00:00 su
 4138 pts/0    00:00:00 bash
 4181 pts/0    00:00:00 yum
 4262 pts/0    00:00:00 ps
[root@localhost owner]# kill 4181
[root@localhost owner]# ps < /var/run/yum.pid
  PID TTY          TIME CMD
 4126 pts/0    00:00:00 su
 4138 pts/0    00:00:00 bash
 4181 pts/0    00:00:00 yum
 4276 pts/0    00:00:00 ps
[root@localhost owner]# cat /var/run/yum.pid
4181[root@localhost owner]# kill -9 4181
[1]+  Killed                  yum install dconf-editor
[root@localhost owner]# cat /var/run/yum.pid
4181[root@localhost owner]# ps < /var/run/yum.pid
  PID TTY          TIME CMD
 4126 pts/0    00:00:00 su
 4138 pts/0    00:00:00 bash
 4373 pts/0    00:00:00 ps
[root@localhost owner]# yum install xemacs
. . . and off it went

и теперь у меня есть рабочий редактор XEmacs


После большого разочарования я решил попробовать хорошо зарекомендовавшую себя версию Fedora вместо недавно выпущенных 20, установленных поставщиком моего компьютера.Я установил версию 17, и до сих пор все проблемы вроде бы решены. Теперь я могу без проблем использовать yum . Мне также явно не хватало большого количества программного обеспечения, такого как gnuplot и ghostscript . Я подозреваю, что установщик Fedora 20 не включил репозитории разработчика программного обеспечения.

Итак, теперь на мой вопрос дан ответ, и я, скрестив пальцы, снова обновил Fedora 12 до прилично работающей Fedora.

3
27.12.2018, 19:29
1 ответ

Да, убирает, так сказать.

Когда вы запускаете подоболочку (...)из интерактивного скрипта bash, создается новая группа процессов (задание ), которая становится группой процессов переднего плана на терминале, и в случае, когда подоболочка содержит какие-либо команда завершается &, (, например.sleep 3600 &)эта команда будет запущена в самой той же группе процессов переднего плана , при этом SIGINTи SIGQUITигнорируются, а ее ввод перенаправляется из/dev/null).См. здесь для некоторых ссылок на стандарт.

Когда подоболочка (...)завершает работу, приоритетное задание удаляется из таблицы заданий оболочки, а команда sleep 3600продолжает выполняться вне контроля оболочки.

Это сильно отличается от случая, когда (sleep 3600 &)запускается из не -интерактивного скрипта без управления заданиями, где все (главная оболочка, ее (...)подоболочка, и любые «фоновые» команды (foo &), внутри или вне подоболочки (...)), выполняются в той же группе процессов.

2
27.01.2020, 21:24

Теги

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