繁体   English   中英

指导cron(调用)bash(调用)python3的输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM