【发布时间】:2017-08-22 01:01:30
【问题描述】:
我正在使用一个脚本来运行多个 python 和 shell 脚本。
很少有人使用& 并行运行。我的要求是跟踪这个并行运行任务的进度并显示它我也想获取脚本的 exit_code,如果在执行日志期间有任何脚本失败,它会说 script-1/2/3 由于 x 原因而失败。
我尝试使用以下代码集。每件事都适用于串行处理,但是 对于并行处理命令,我得到了最后一个执行进程 ID:
#!/bin/bash
LOG_DIR_LOC=$1
export python_path='/usr/bin/python'
export log_file=${LOG_DIR_LOC}/log_parallel_exec_`date "+%d-%m-%Y_%H:%M:%S"`.log
export script1='/home/test-arg.py'
export script2='/home/parallel.py'
export script3='/home/test.sh'
pids=""
echo -ne '#.................................................................................................... (1%)\r'
sleep .5
${python_path} ${script1} a b >> ${log_file} 2>&1 &
pids+=($!)
echo -ne '#################################################.................................................... (40%)\r'
sleep .5
${python_path} ${script2} c d >> ${log_file} 2>&1 &
pids+=($!)
echo -ne '###############################################################################...................... (70%)\r'
sleep .5
sh ${script3} >> ${log_file} 2>&1 &
pids+=($!)
echo -ne '##################################################################################################.... (98%)\r'
sleep .5
wait
if [ $? -eq 0 ]; then
echo "SUCCESS - Job exited with a status of $?" >> ${log_file} 2>&1
else
echo "FAILED - Job exited with a status of $?" >> ${log_file} 2>&1
fi
done
echo -ne '##################################################################################################### (100%)\r'
sleep .5
【问题讨论】:
-
您似乎有 3 个并行进程写入同一个日志文件。这不会奏效。
-
我同意我可以修改某些内容以写入 3 个日志文件。脚本并行运行时如何跟踪进度的挑战?
标签: python bash shell parallel-processing