Сценарий UNIX не отвечает?

Какова цель сохранения этого родительского процесса вокруг

Я прочитал create_watching_parent в su -common.c исходный код.Похоже, что родитель остается, чтобы делать следующее:

  • родитель вызывает cleanup_pam после выхода дочернего элемента
  • , если дочерний элемент завершился из-за сигнала, родительский элемент печатает (в stderr ) расположение ребенка аналогично тому, как это было бы в скорлупе.
  • если родитель получает сигнал SIGINT, SIGQUIT или SIGTERM, родитель перехватывает сигнал и убивает дочерний элемент с помощью SIGTERM, а затем SIGKILL, а затем уничтожает себя тем же сигналом, который он получил. Я предполагаю, что это делается для того, чтобы пользователю было легко завершить команду в ситуациях, когда дочерний элемент поместил себя в другой сеанс или pgrp.
0
22.05.2019, 18:27
1 ответ

Предполагая, что код в вашем вопросе находится в файле с именем remove, строка 2 вызывает бесконечный цикл в скрипте remove. По сути, сценарии BASH запускают каждую строку как команду сверху вниз. Когда вы попытаетесь запустить скрипт remove, он достигнет строки 2(sh remove "filename")и попытается запустить другой экземпляр remove. Этот новый экземпляр пытается запустить третий экземпляр removeи так далее.

Короче говоря, удалите или закомментируйте строку 2:

# sh remove "filename"

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

3
28.01.2020, 02:30

Теги

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