首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cron作业不工作(或者至少登录到它应该是的文件)

问Cron作业不工作(或者至少登录到它应该是的文件)
EN

Unix & Linux用户
提问于 2021-07-19 20:46:53
回答 1查看 298关注 0票数 0

Cron作业设置为:

代码语言:javascript
复制
*/15  * * * * speedtest >> /home/pi/speedtest.log

speedtest脚本是:

代码语言:javascript
复制
#!/bin/sh
speedtest-cli --csv >> /home/pi/speedtest.log

使用Speedtest-CLI。作业正在按时执行,但我得到的只是cron输出,看起来如下:

代码语言:javascript
复制
Jul 19 08:17:01 raspberrypi CRON[29275]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 19 08:30:01 raspberrypi CRON[29378]: (pi) CMD (speedtest >> /home/pi/speedtest.log)
Jul 19 08:30:01 raspberrypi CRON[29377]: (CRON) info (No MTA installed, discarding output)
Jul 19 08:45:01 raspberrypi CRON[29430]: (pi) CMD (speedtest >> /home/pi/speedtest.log)
Jul 19 08:45:01 raspberrypi CRON[29429]: (CRON) info (No MTA installed, discarding output)
Jul 19 09:00:01 raspberrypi CRON[29608]: (pi) CMD (speedtest >> /home/pi/speedtest.log)
Jul 19 09:00:01 raspberrypi CRON[29607]: (CRON) info (No MTA installed, discarding output)
Jul 19 09:15:01 raspberrypi CRON[29791]: (pi) CMD (speedtest >> /home/pi/speedtest.log)
Jul 19 09:15:01 raspberrypi CRON[29790]: (CRON) info (No MTA installed, discarding output)

但我没有看到speedtest.log正在更新。怎么一回事?

EN

回答 1

Unix & Linux用户

发布于 2021-07-19 22:31:03

通过cron运行的作业,或者systemd启动脚本不运行在桌面上相同的运行时环境中。systemd启动脚本以root的形式运行。您的PATH更改或其他环境变量设置都不会自动传播到cron作业。例如,没有$DISPLAY,所以GUI程序需要特殊处理(读man xhost)。

可以为cron文件中的所有crontab作业设置环境变量,读取man 5 crontab。

查看echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias在每个环境中的结果。

由于crontab行的D13部分默认由/bin/sh解释,它的语法比/bin/bash更简单,因此我建议让command调用bash脚本(可执行、挂载,从#!/bin/bash开始),后者设置环境,然后调用所需的程序。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/659083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档