我在屏幕中启动了一堆相同的脚本(generate_records.php
)。我这样做是为了轻松并行化流程。我想使用&> log_$i
(StdOut和StdErr)之类的东西将每个PHP进程的输出写入日志文件。
我的shell脚本很弱,我无法正确使用语法。我一直得到屏幕的输出,这是空的。
例如:launch_processes_in_screens.sh
max_record_id=300000000
# number of parallel processors to run
total_processors=10
# max staging companies per processor
(( num_records_per_processor = $max_record_id / $total_processors))
i=0
while [ $i -lt $total_processors ]
do
(( starting_id = $i * $num_records_per_processor + 1 ))
(( ending_id = $starting_id + $num_records_per_processor - 1 ))
printf "\n - Starting processor #%s starting at ID:%s and ending at ID: %s" "$i" "$starting_id" "$ending_id"
screen -d -m -S "process_$i" php generate_records.php "$starting_id" "$num_records_per_processor" "FALSE"
((i++))
done
答案 0 :(得分:0)
如果您使用screen
的唯一原因是并行启动多个流程,则可以完全避免它并使用&
到start them in the background:
php generate_records.php "$starting_id" "$num_records_per_processor" FALSE &
您也可以使用parallel
删除一些代码。