从cron(调用)bash(调用)python3引导输出

时间:2016-09-04 04:49:41

标签: python bash cron

我有一个简单的python脚本test.py,它打印日期和时间然后引发错误。

我在.bash_profile中定义了一个名为test()的bash函数,该函数使用

调用脚本
$ python3 ~/test.py

最后,我设置了一个cron行,每分钟调用一次test() bash函数进行测试

test >> ~/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).log 2>&1

当我运行python脚本或bash函数时,我正确地将打印和错误都提供给终端。当cron调用python脚本目录时,它会正确记录。但是当cron调用bash函数时,没有任何内容写入日志文件。

问题

当cron调用bash函数时,如何正确地将python脚本的输出定向到日志文件?

2 个答案:

答案 0 :(得分:2)

首先,test是函数的错误名称,因为几乎所有shell都内置了test,并且几乎所有系统都有外部test命令。

现在,当您在cron中运行时,与登录和/或交互式shell会话的启动不同,不会读取会话启动脚本,因此~/.bash_profile中定义的函数(source - d开始登录会话时)无法使用。

请注意,许多系统不使用bash来运行cron脚本,例如Ubuntu使用dash。无论如何,你在test中执行的cron大概是shell的内置test命令,它将返回退出代码1而没有任何参数。

答案 1 :(得分:0)

为什么不直接在crontab,中添加以下内容并删除 test() bash函数中间人?

* * * * 1    /usr/bin/python3 /home/myname/test.py >> ~/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).log 2>&1