【发布时间】:2016-08-21 16:41:05
【问题描述】:
我在我的 VPS 上创建了一个“sh”脚本,它会复制文件系统和 SQL,并将它们保存到我将要推送到备份媒体的同一个文件夹中。我知道我的脚本正在为此工作,因为当我以 root 身份通过 SSH 登录并手动运行命令时,它会创建一个 zip 文件和 SQL 备份,但我为执行此脚本而创建的 CRONjob 不起作用。我在 '/etc/crontab' 中创建了以下 cron 作业:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
4 6 * * * root test -x /usr/sbin/anacron || ( cd / && run- parts --report /etc/cron.daily )
20 1 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
51 5 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
* * * * * root /home/backup/test.sh
第 5 个条目是我创建的用于测试的条目。路径是正确的,我按照之前的说明使用了绝对路径。我编写了一个名为 test/sh 的简单脚本,它将一些文本输出到文件 (test.txt) 以测试 CRON 作业,但它不起作用。我正在使用命令“tail -f”来监视对文本文件的更改,并且它永远不会被调用。该脚本在手动执行时有效。
这是简单的“test.sh”文件。这在手动调用时可以正常工作。
#!/bin/bash
echo "Dumping at: $(date)" >> /home/backup/test.txt
我知道可能存在权限问题,但我认为如果我以“root”身份执行此操作应该没问题吗?谁能看出我哪里出错了?
谢谢
【问题讨论】:
-
test.sh 包含什么?具体来说,它是如何引用 test.txt 的? - 它使用绝对路径?请记住,当 cron 运行您的脚本时,它不会在您手动运行时所在的目录中。
-
您是否检查了 crontab 标签的info wiki 中
Debugging crontab下列出的所有内容? -
我会将test.sh的内容添加到原帖中。抱歉,我忘了这样做
-
您是否使用 chmod +x /home/backup/test.sh 更改了脚本权限?它可以从控制台工作吗?为什么要编辑 /etc/crontab 用户命令“crontab -e”。