我正在尝试启动 1000 多个进程,但它挂在 999 处。
例如
#!/usr/bin/env zsh
for i in {1..$1} ; do
sleep 300 &
done
Run Code Online (Sandbox Code Playgroud)
然后运行它,
$ ./launchsleep.sh 3000
./launchsleep.sh:4: job table full
Run Code Online (Sandbox Code Playgroud)
事实证明,zsh(和大多数其他 shell)有一个最大大小的作业表。该表跟踪后台进程,当它填满时,您不能再启动任何后台进程。
我的解决方法是更改我的脚本以启动守护进程而不是一堆后台进程。
例如
launch.sh:
#!/usr/bin/env zsh
for i in {1..$1} ; do
./dosleep.sh
done
dosleep.sh:
#!/usr/bin/env zsh
nohup sleep 300 &
Run Code Online (Sandbox Code Playgroud)
此外,正如@Iain 所提到的,Solaris 对用户可以启动的进程数有限制 (ulimit -u)。在 Solaris 11 中,要增加此限制,请编辑 /etc/project 并增加 project.max-processes。
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |