从crontab运行的脚本会留下一个空文件

时间:2015-08-06 20:20:34

标签: python linux bash shell cron

我试图在我的Linux系统上运行crontab的脚本,该脚本留下一个空文件。当我运行登录终端的脚本时,它运行正常。

Cron line:

$datagridMapper
        ->add('startDate', 'sonata_type_date_picker')
        ->add('endDate', 'sonata_type_date_picker')
    ;

脚本“start_reader_services”调用Python脚本,如下所示:

@reboot sleep 1m; /bin/bash /root/start_reader_services

tag_output基本上打印出一系列ID。当我将stdout发送到我的串口(tag_output> / dev / ttyO0)时,相同的机制工作,但现在,从cron写入文件,文件被创建,但是是空的。

正如我所提到的,在命令行上运行start_reader_services或任何一部分,它按预期工作。

做完了:   - 将bash设置为cron shell   - 在cron上设置java环境

根据要求:

/root/java/tag_output >> $TAGS_PATH/tags_$DATE_FILE.log

标记输出的第一行:

ls -l /root/java/tag_output
-rwxr-xr-x 1 root root 1981 Aug  6 12:06 /root/java/tag_output

任何帮助?

2 个答案:

答案 0 :(得分:0)

tag_output是否可以写入 stderr 而不是 stdout ?尝试重定向 stderr

/root/java/tag_output >> $TAGS_PATH/tags_$DATE_FILE.log 2>&1

顺便说一句,您可能还想引用并使用shell变量扩展的大括号;这使它更容易阅读,可能更安全一点:

/root/java/tag_output >> "${TAGS_PATH}/tags_${DATE_FILE}.log" 2>&1

答案 1 :(得分:0)

使用crontab python初始化和更新crontab之后,然后发出

cron.write(), give the command, cron.__reduce__()[2]['lines'] = filter(None, cron.__reduce__()[2]['lines'])

这样做将删除Linux crontab中打印的空行。