我有一个执行带有不同args
的脚本的crontable0,5,10 * * * * /path/to/logScript "script2"
0,5,10 * * * * /path/to/logScript "script1"
0,5,10 * * * * /path/to/logScript "script3"
脚本
#!/bin/bash
script=$1
$script args >/path/tmp/log.out 2>/path/tmp/log.err
if [ ! -s /path/tmp/log.err ]; then
echo -n "$(date) success: " >> /path/logfile
cat /path/tmp/log.out >> /path/logfile
else
echo -n "$(date) errors: " >> /path/logfile
cat /path/tmp/log.err >> /path/logfile
fi
我认为我遇到的问题是同时执行脚本。脚本没有得到正确的返回值(知道它是stderr还是stdout)。如果我在终端中一个接一个地执行crontable行,它可以正常工作,但是当它自动执行时,我得到的数据是不正确的。
我试图通过将此更改变为crontable来解决此问题,但我仍然遇到同样的问题。
0,5,10 * * * * /path/to/logScript "script2"&
0,5,10 * * * * /path/to/logScript "script1"&
0,5,10 * * * * /path/to/logScript "script3"&
答案 0 :(得分:1)
如果所有命令同时运行,请认为您可以将命令组合在一个唯一的命令中,使用&在命令结束时将它们推送到后台模式,如下所示:
Array
答案 1 :(得分:0)
您需要将其作为后台流程运行(在流程行的末尾添加"&"以便您可以"生成"它们)
你也可以将它包装成一个循环,其中i是进程数,并在同一个文件中运行它。
func () {
#do this
#do that
#hit him with a bat
}
然后在sh
#!/斌/庆典
for i in $(seq 0 5);
do
function() &
echo "child pid: " $!
done