如何设置此日志以获得准确的计时?我正在尝试使用date '+%Y%m%d-%H:%M'
创建日志文件。我的输出发生的是时间戳是相同的。
RUN refresh proc ===> 20130817-21:05
Waiting for pid:24638 ===> 20130817-21:05
Run parallel scripts ===> 20130817-21:05
Waiting for pids: 24652 ===> 20130817-21:05
Waiting for pids: 24653 ===> 20130817-21:05
Waiting for pids: 24654 ===> 20130817-21:05
Waiting for pids: 24655 ===> 20130817-21:05
Running post process ===> 20130817-21:05
Process Complete ===> 20130817-21:05
我知道在此过程中已经过了一段时间。创建我的日志我做错了什么? 这是我的工作脚本:
# Setup job
TIMESTAMP=`date '+%Y%m%d-%H:%M'`;
MYLOG=$BASEDIR/mvhistory.log
#Run Procedures
echo "====================================================" >> $MYLOG 2>&1
echo "RUN refresh proc ===> $TIMESTAMP" >> $MYLOG 2>&1
STAGING.sql &
pid0=$!
wait $pid0
echo "Waiting for pid:$pid0 ===> $TIMESTAMP" >> $MYLOG 2>&1
echo "Run parallel scripts ===> $TIMESTAMP" >> $MYLOG 2>&1
1.sql &
pid1=$!
2.sql &
pid2=$!
3.sql &
pid3=$!
4.sql &
pid4=$!
wait $pid1 $pid2 $pid3 $pid4
echo "Waiting for pids: $pid1 ===> $TIMESTAMP" >> $MYLOG 2>&1
echo "Waiting for pids: $pid2 ===> $TIMESTAMP" >> $MYLOG 2>&1
echo "Waiting for pids: $pid3 ===> $TIMESTAMP" >> $MYLOG 2>&1
echo "Waiting for pids: $pid4 ===> $TIMESTAMP" >> $MYLOG 2>&1
echo "Running post process ===> $TIMESTAMP" >> $MYLOG 2>&1
run_CLEAN.sql
echo "Process Complete ===> $TIMESTAMP" >> $MYLOG 2>&1
exit 0
答案 0 :(得分:3)
首先,TIMESTAMP值永远不会改变。更好的方法是使用函数在每次显示时获取时间戳。
getTimestamp() {
echo `date '+%Y%m%d-%H:%M'`
}
echo "Waiting for pids: $pid1 ===> $(getTimestamp)" >> $MYLOG 2>&1
但问题是这些行是同时写入日志文件的(当所有proc都被终止时),所以时间戳是相同的。 您可能需要在没有“等待”的情况下执行此操作,使用循环并检查每个pid的进程状态。
答案 1 :(得分:0)
我认为这是因为它是相同的var。
只是改变
TIMESTAMP = date '+%Y%m%d-%H:%M'
=> TIMESTAMP = $(日期'+%Y%m%d-%H:%M')
它应该有效