1

如何设置此日志以获得准确的时间?我正在尝试使用创建日志文件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
4

2 回答 2

3

首先,您的 TIMESTAMP 值永远不会改变。更好的方法是每次显示时使用一个函数来获取时间戳。

getTimestamp() {
    echo `date '+%Y%m%d-%H:%M'`
}

echo "Waiting for pids: $pid1 ===> $(getTimestamp)" >> $MYLOG 2>&1

但问题是这些行同时写入日志文件(当所有 proc 都终止时),所以时间戳是相同的。您可能需要在没有“等待”的情况下使用循环并检查每个 pid 的进程状态。

于 2013-08-18T09:44:46.777 回答
0

我认为这是因为它是同一个变量。只需更改 TIMESTAMP= date '+%Y%m%d-%H:%M'=> TIMESTAMP=$(date '+%Y%m%d-%H:%M')

它应该可以工作

于 2013-08-18T04:19:51.297 回答