我试图通过 crontab 运行存储在我的主目录中的脚本,但它不起作用。每次运行时,CRON 日志都会显示以下信息:
Sep 3 18:30:01 backup CRON[6778]: (root) CMD (/home/hannes/script > /tmp/yc.log)
Sep 3 18:30:01 backup CRON[6777]: (CRON) info (No MTA installed, discarding output)
Run Code Online (Sandbox Code Playgroud)
定时任务:
*/1 * * * * /home/hannes/script > /tmp/yc.log
Run Code Online (Sandbox Code Playgroud)
如果我尝试添加 .sh 文件扩展名,它不会改变任何内容。yc.log 文件保持为空。
这是我尝试执行的脚本(如果我手动运行它,效果很好):
#!/bin/sh
cp -r -p mnt/main-nas/PATH-TO-FILE mnt/backup-nas/01/temp/server
zip -r mnt/backup-nas/01/1.19_Test.`date +%d.%m.%Y_%H.%M.%S`.zip mnt/backup-nas/01/temp/server
rm -r mnt/backup-nas/01/temp/server
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!:)
您的脚本实际上正在运行...但它在某个地方出错了。由于您不捕获stderr输出,因此 stderr 会发送cron给在本地运行脚本的用户。(也失败了)
根本原因是:您的脚本仅重定向stdout到文件。然而,许多失败的脚本和程序都用来stderr输出错误消息。您需要通过添加2>&1到执行的命令行末尾来捕获该错误cron,这也将捕获stderr错误并将错误记录到您的文件中。
因为您之前没有捕获到它,所以 stderr 是通过邮件传递到的root- 但因为您没有用于本地传递的本地 MTA(邮件传输代理,又名本地邮件传输协议 (LMTP) 服务器),所以您收到了这些 cron 错误。通过stderr捕获,您现在将看到错误以及脚本无法正常运行的原因。
一旦日志中出现错误输出,您就可以进一步调试脚本以确定需要执行哪些操作来“修复”问题。
| 归档时间: |
|
| 查看次数: |
2310 次 |
| 最近记录: |