|
|
1
3
这是人们似乎倾向于使用cron的一种非常常见的反模式。
Cron会向您发送一封带有脚本输出的电子邮件,
如果
它产生任何输出。人们经常将输出重定向到
至少,您应该删除
下一个更好的解决方案是将其更改为
不过,这两项更改都没有解决根本问题,即当cron运行脚本时,它使用的环境与命令行上的环境不同。您真正想要的是一种在一致的环境中运行脚本的方式,
和
记录它。“最终解决方案”是在某种服务管理器中定义您的任务,然后偶尔使用cron来启动它。例如,您可以使用systemd定义一个不重新启动的服务,然后使用
我自己并不特别提倡systemd,但谢天谢地,有很多替代方案:
(但是,如果您的发行版是基于systemd的,那么安装和配置服务管理器要比仅使用systemd更艰巨。)每一项都允许您定义一个不会重新启动的服务。然后,使用shell命令向主管发出“运行一次”指令,该主管将任务作为子任务运行。现在,您可以轻松地自己启动作业,并查看日志中的所有错误,然后将该命令添加到crontab中,并知道当cron启动它时,它将以相同的方式运行。 回到您最初的问题,一旦您获得一些日志记录,您可能会发现这是权限问题或系统perl中的升级模块。 |