Пытаюсь запустить более 1000 процессов, а на 999 зависает.
например
#!/usr/bin/env zsh
for i in {1..$1} ; do
sleep 300 &
done
Затем запустите его,
$ ./launchsleep.sh 3000
./launchsleep.sh:4: job table full
В ulimit -u
настройка может быть здесь.
Оказывается, в zsh (и в большинстве других оболочек) есть таблица заданий с максимальным размером. Эта таблица отслеживает фоновые процессы, и когда она заполняется, вы больше не можете запускать фоновые процессы.
Мое обходное решение состояло в том, чтобы изменить сценарий для запуска процессов демона, а не группы фоновых процессов.
например
launch.sh:
#!/usr/bin/env zsh
for i in {1..$1} ; do
./dosleep.sh
done
dosleep.sh:
#!/usr/bin/env zsh
nohup sleep 300 &
Кроме того, как упоминал @Iain, Solaris имеет ограничение на количество процессов, которые может запускать пользователь (ulimit -u). В Solaris 11, чтобы увеличить это ограничение, отредактируйте / etc / project и увеличьте количество процессов project.max.