Симптом очень прост. Например:
ls | grep a | grep b | grep c | grep d
бросает
-bash: child setpgid (8948 to 8943): Operation not permitted
-bash: child setpgid (8950 to 8943): Operation not permitted
-bash: child setpgid (8952 to 8943): Operation not permitted
-bash: child setpgid (8953 to 8943): Operation not permitted
-bash: child setpgid (8954 to 8943): Operation not permitted
-bash: child setpgid (8955 to 8943): Operation not permitted
-bash: child setpgid (8962 to 8957): Operation not permitted
-bash: child setpgid (8964 to 8957): Operation not permitted
-bash: child setpgid (8966 to 8957): Operation not permitted
-bash: child setpgid (8967 to 8957): Operation not permitted
-bash: child setpgid (8968 to 8957): Operation not permitted
-bash: child setpgid (8969 to 8957): Operation not permitted
-bash: child setpgid (8976 to 8971): Operation not permitted
-bash: child setpgid (8978 to 8971): Operation not permitted
-bash: child setpgid (8980 to 8971): Operation not permitted
-bash: child setpgid (8981 to 8971): Operation not permitted
-bash: child setpgid (8982 to 8971): Operation not permitted
-bash: child setpgid (8983 to 8971): Operation not permitted
-bash: child setpgid (8990 to 8985): Operation not permitted
-bash: child setpgid (8992 to 8985): Operation not permitted
-bash: child setpgid (8994 to 8985): Operation not permitted
-bash: child setpgid (8995 to 8985): Operation not permitted
-bash: child setpgid (8996 to 8985): Operation not permitted
-bash: child setpgid (8997 to 8985): Operation not permitted
Количество используемых grep
и каналов не имеет значения. Иногда ls | grep a
также выдает ошибку.
AFAIK, ls
anad grep
не требует привилегий root. Таким образом, мне интересно, как решить эту проблему.
Текущая машина - Cent OS 5 (ядро 2.6.18). Если вам нужна более подробная информация, пожалуйста, дайте мне знать.
Добавлено: трассировка ls
и grep
type ls
ls is aliased to `ls -hF --color=auto'
which ls
/bin/ls
type grep
grep is /bin/grep
which grep
/bin/grep
Добавлено 2
В этот момент я обнаружил, что это не ограничивается ls и grep. Кажется, что это относится ко всем командам, использующим каналы. например, echo 'Hello' | tee outfile
выбрасывает ту же ошибку.
Добавлено 3: в ответ на @Argonauts '
Поскольку журналы слишком длинные, обратитесь по адресу https://gist.github.com/anonymous/5459fa0322d178f85b0cd2d5ee2add53.
Короче,
ulimit -a
- размер трубы (512 байт, -p) 8
- максимальное количество пользовательских процессов (-u) 129094
type log
говорит-bash: type: log: not found
: ОКtrap -p
:trap -- 'history_to_syslog' DEBUG
. Это вызовет проблемы?- Пробная версия с очищенной средой: иногда без ошибок, но иногда с ошибками.
- Нужно исследовать
- Отладочный вывод Bash
- Strace