1

我正在尝试使 cron 作业或任务调度程序工作,但我无法弄清楚为什么我的脚本没有被考虑在内。

我试图简单地归档一个文件夹:

tar -cvf /volume1/NetBackup/Backups/Monday.tgz /volume1/NetBackup/Backups/ns3268116.ovh.net/

每次脚本开始工作但无法完成工作。无论是使用任务计划程序还是 crontab,都会在文件夹 /volume1/NetBackup/Backups/ 中创建一个文件 Monday.tgz,但该文件只有 1024 字节。

4

3 回答 3

6

Synology Cron 真的很挑剔。

以下是我对 Synology DS413j、DSM 5.2 的个人笔记:

  1. 以 root 身份手动编辑 /etc/crontab,crontab -e不可用
  2. 确保使用制表符而不是空格来分隔列
  3. 如果存在语法问题,您的 crontab 更改可能无法在重新启动后继续存在
  4. crontab 中的who列可能不可靠。root在 who 列中使用并/bin/su -c '<command>' <username>以其他用户身份运行
  5. 请记住,它使用的ash不是bash这样检查 bashisms,例如使用>> /path/to/logfile 2>&1' not&>> /path/to/logfile`
  6. 它不支持'MAILTO ='
  7. 您需要重新启动 crondsynoservicectl --reload crond才能使新的 crontab 生效
于 2015-06-19T11:25:33.520 回答
2

您可以尝试为其添加一些诊断。例如:

  1. 将 MAILTO 添加到 crontab 文件中(在 crontab -e 之上)以通过电子邮件接收 cron 错误:

    MAILTO=用户名@domain.com

  2. 将 tar 命令的输出重定向到文件:

    你的命令 > ~/log.txt 2>&1

  3. 检查 cron 日志并查找异常情况。例如(可能取决于您的配置):

    /var/log/cron.log

您也可以尝试在执行 cron 作业时搜索 /var/log/messages。

volume1 是远程主机上的资源吗?如果是,则值得检查系统的这一部分。

于 2014-02-15T12:18:17.090 回答
0

我同意 Crontab 在 Synology Linux 操作系统上真正令人讨厌的性质。

我当然建议将所需的作业创建为.shshell 脚本,并通过使用 GUI 插入的 CRON 任务调用它,如此处所建议
至于今天(2017 年 3 月)是我发现的最佳方法,因为通过 CLI 使用 crontab 几乎是一种痛苦。

于 2017-03-27T03:49:15.647 回答