[英]Directing output from cron (calls) bash (calls) python3
我有一个简单的python脚本test.py
,它打印日期和时间,然后引发错误。
我在.bash_profile
定义了一个bash函数,并将其命名为test()
,该函数使用
$ 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脚本的输出定向到日志文件?
首先, test
对于函数来说是个坏名字,因为几乎所有的外壳程序都内置了test
功能,并且几乎所有系统中都可以使用外部test
命令。
现在,当您在cron
运行某些内容时,与启动登录和/或交互式Shell会话不同,它不会读取会话启动脚本,因此~/.bash_profile
(启动登录会话时为source
-d)中定义的功能不可用。
请注意,许多系统不使用bash
运行cron
脚本,例如Ubuntu使用dash
。 无论如何,您在cron
中执行的test
大概是shell的内置test
命令,它将返回不带任何参数的退出代码1。
为什么不直接将以下行放在crontab,
并消除test()
bash函数 Middleman?
* * * * 1 /usr/bin/python3 /home/myname/test.py >> ~/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).log 2>&1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.