-1
同じスクリプト(generate_records.php
)の束を画面に表示しています。私は簡単にプロセスを並列化するためにこれをやっています。 &> log_$i
(StdOutとStdErr)のようなものを使用して、各PHPプロセスの出力をログファイルに書きたいと思います。`screen` CLIコマンドによって起動されたサブプロセスの出力をログファイルに書き込みますか?
私のシェルスクリプトは弱いソースです。正しい構文を取得できません。私は空の画面の出力を得続けます。
Exmaple: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
なぜ 'screen'を使用していますか?出力をファイルに送るために通常のシェルI/Oリダイレクトを使用するだけではどうですか? ( 'php generate_records.php" $ start_id "" $ num_records_per_processor ""偽 "> log-for- $ start_id.txt 2>&1&') – larsks
私は 'screen'を使って同じスクリプトの束を並行して起動しています。私はあなたのコマンドが正常に動作すると思うが、私は 'screen'コマンドのコンテキストで動作するようにはできません。それは私が思うと苦労している 'screen'コマンドまたはsh構文上の問題です。 –