有没有 crontab 的日志让我知道 crontab 是否工作正常?我使用的是 Linux Mint 17.3。
我做了什么:
crontab -e
以 root身份运行- 它不存在,所以我选择nano编辑器并继续
- 进入这一行
00 12 * * * /home/vlastimil/Development/bash/full-upgrade.sh
- 保存并退出
我的目标是每天 12 小时(中午,而不是午夜)自动更新。这篇文章并不是要争论实现这一目标的最佳方法。
我创建了/home/vlastimil/Development/bash/full-upgrade.sh
包含以下内容的文件:
#!/bin/bash
apt-get update && apt-get dist-upgrade -y && apt-get --purge autoremove -y
最后我为该文件设置了 755 权限。
我不知道如何测试它。它会起作用吗?
答案1
日志可能会转到 syslog,这取决于所涉及的 syslog 守护进程以及它的日志配置方式,从
grep -r cron /etc/*syslog*
查找系统上发生的位置和情况,或者根据 derobertsystemd
相关命令是
journalctl -b 0 _SYSTEMD_UNIT=cron.service
添加涉及文件的测试 cron 作业(最好不要在 中/tmp
,除非供应商出于安全原因将其设为每个用户私有)还应该确认 cron 是否正在工作,只需确保最终删除之前的测试 cron 作业填满一个分区或一些愚蠢的东西。
其他可用性和安全性指针:一些 cron 守护进程可以直接运行脚本,在这种情况下,您可以将脚本复制到/etc/cron.daily
,尽管这可能不适合您不想在顶部运行的东西(与其他所有内容一起运行!)小时。root
在用户的主目录下运行脚本可能会非常糟糕,因为该用户帐户的妥协可能会被利用来获得 root 访问权限,或者如果主目录位于 NFS 上或已加密,则脚本可能会不必要地失败;将脚本移到其他地方以避免这种情况(/root/bin
或者位于本地文件系统首选项之下/usr/local
或/opt
取决于本地文件系统首选项)。
更多的指针落入 shell 脚本调试领域,主要是要注意 cron 不是 shell;使用env
或set
查看 cron 下的设置,检查是否PATH
正确,等等(一个古老而可怕的 Linux 内核错误涉及 java 守护进程崩溃,但前提是它们是从 cron 运行的;调试起来很有趣......)