Почему kill не работает из сценария, но работает из терминала?

Благодаря @Jakuje я проверил членство в группах с помощью groups baz , которые показали, что эффективная группа - это не то, что я ожидал от записи в / etc / group . Поскольку у нас также установлен centrify, я посмотрел на конфигурацию, которая кажется правильной ( baz был указан в /etc/centrifydc/groups.ignore ). Я перезапустил агент ( service centrifydc restart ), что устранило проблему. baz теперь имеет правильную группу и может поэтому войти в систему.

4
24.11.2018, 00:55
2 ответа

У меня была похожая проблема, и я попал сюда. Другие ответы не помогли. Мой скрипт передал идентификаторы в kill в соответствии со строками:

echo $some_output | awk '{print $1}' | xargs kill -9

Это работало из терминала, но не из скрипта. Найдя этот ответ, в котором говорилось, что kill не читает PID из стандартного ввода , я изменил сценарий на этот, и это решило проблему:

pids=`echo $some_output | awk '{print $1}'`

for p in $pids; do
    echo "Killing $p"
    kill -9 $p
done

Надеюсь, это поможет тем, кто приземлился здесь, как я!

0
18.10.2020, 12:52

причину можно найти в исходном коде sudo:

/*
 * Do not forward signals sent by a process in the command's process
 * group, as we don't want the command to indirectly kill itself.
 * For example, this can happen with some versions of reboot that
 * call kill(-1, SIGTERM) to kill all other processes.
 */
1
21.12.2020, 07:09

Теги

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