我正在運行單元測試腳本和測試用例設置我需要不時運行shell命令。因此在單元測試執行期間shell命令運行約50次。'exec():無法分叉'在Ubuntu 14.04.3 LTS
它在CentOS版本6.6(最終)服務器上正常工作,但在Ubuntu 14.04.3 LTS上不起作用。
的問題是,圍繞第20次shell腳本執行後,我收到以下錯誤:
exec(): Unable to fork [$(which mysql) -u user -ppwd test_db < "/opt/jenkins/workspace/some - project/application/../tests/Application/assets/sql/test_db.sql" 2> /dev/null]
我檢查了在互聯網中的所有主題,沒有人幫助我。我已經增加了進程號並將打開的文件限制到了極高的值
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 3885
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 100000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 6553500
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
PHP報告類似的數字。 (文件test.php的包含<?php echo system("ulimit -a");
)
# php test.php
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 8192
coredump(blocks) 0
memory(kbytes) unlimited
locked memory(kbytes) 64
process 6553500
nofiles 100000
vmemory(kbytes) unlimited
locks unlimited
locks unlimited
我運行腳本從CLI非根用戶。
我增加PHP內存大小爲2Gb
memory_limit => 2048M => 2048M
我試着使用系統,直通,shel_exec它使沒有區別。
PHP版本是5.6
PHP 5.6.14-1+deb.sury.org~trusty+1 (cli)
是否有人知道如何解決這個問題?
請問您可以在php內部運行'ulimit'命令:'echo system(「ulimit -a」);' – Kadir
Beter在http://serverfault.com/社區提問有關服務器的問題。 – sidneydobber
我已經將ulimit的輸出從PHP添加到問題中。一般來說 - 相同的數字。 – Stepashka