bash中0,1,2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。第一个我也不知道是个啥。
有几点需要注意的:
1、经常看到 2>&1 &。2>&1就是用来将标准错误2重定向到标准输出1中的。此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。至于最后一个&,则是让bash在后台执行。但是不能写成2>>&1,这样crontab是不会运行的,至于为啥我也不知道。
下面有个demo,防止我们运行的时候出错:
crontab里面这么写:
*/1 * * * * export l_day=`date -d "-1 day" +\%Y-\%m-\%d` && cd /home/users/test/tmp/script/ && sh ./test.sh $l_day $l_day 1>>/home/users/test/tmp/script/log/test.log 2>&1 &
test.sh文件这么写:
#!/bin/bash arg1=$1 arg2=$2
echo $arg1" <-> "$arg2
ok,就先这么记录着吧,折腾我好长时间。。。shit