我在几个不同的 linux 和 freebsd 系统上将它添加到 /etc/crontab 中:
# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * 2 root /sbin/shutdown -r now
Run Code Online (Sandbox Code Playgroud)
我想在每个月的第三个星期二重新启动。然而,所有系统都在本月的第三个星期三(19日)重新启动。
我究竟做错了什么?
更新:感谢 Ranon 在下面的回答,看起来下面的修订版会起作用,任何人都可以确认或者有更好的方法吗?
# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * * root test $(date +\%u) -eq 2 && /sbin/shutdown -r now
Run Code Online (Sandbox Code Playgroud) 有一个非常奇怪的问题。我创建了一个小的 bash 脚本,它通过 ssh(使用公钥身份验证)在远程主机上运行命令。
当我从命令行手动运行此脚本时,它工作正常,但是当放置在 /etc/cron.hourly 中时,它会失败并显示Permission denied, please try again.错误。
ssh -i /root/.ssh/id_rsa user@remote "command";在脚本中显式设置密钥echo `id` > /tmp/whoami.log来仔细检查);和系统是 Ubuntu 12.04 服务器,我在远程端没有太多访问权限进行故障排除,但正如我所说,手动运行 ssh 或从命令行运行相同的 bash 脚本。
知道为什么会发生这种情况或如何解决吗?
结果我弄错了,ssh 密钥受密码保护(钥匙串加载 ssh 代理),因此为什么它从脚本中失败,但在从 bash 会话运行时却没有。添加. ~/.keychain/$HOSTNAME-sh到我的脚本中解决了问题(感谢@grawity 为我指明了正确的方向并提供了全面的答案)。
我试图每分钟运行一个脚本(在运行 Ubuntu 16.04 的 Docker 容器上)。
在/etc/echo.sh简单地echo单词“喜”
cat /etc/crontab
* * * * * root /etc/echo.sh > /var/log/cron.log 2>&1
/etc/init.d/cron reload
* Reloading configuration files for periodic command scheduler cron [ OK ]
tail -f /var/log/cron.log
hi
Run Code Online (Sandbox Code Playgroud)
打印“hi”一次后,没有任何反应。
任何想法为什么?
有没有办法为一个用户使用多个 crontab 文件?沿着每个项目的 crontab 文件而不是每个用户的 crontab 思考...
任何帮助表示赞赏...
我正在尝试在我的 Mac 上设置一个 cron,但它似乎永远不会为我的用户创建一个 crontab。我打开终端并输入:
$ crontab -e
Run Code Online (Sandbox Code Playgroud)
返回这个:
crontab: no crontab for jjmay - using an empty one
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"/tmp/crontab.rBdeP6yv1U" 0L, 0C
Run Code Online (Sandbox Code Playgroud)
然后它在那里等待,直到我关上窗外,我已经让它离开了长达 20 分钟。我打开另一个终端窗口来检查我的 crontab 的创建,但我什么也没得到。
$ crontab -l
crontab: no crontab for jjmay
Run Code Online (Sandbox Code Playgroud)
关于为什么我不能创建它的任何想法,或者我是否可以手动创建我的 crontab 以便我可以编辑它?
我有这个 cron
38 * * * * /bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\'''
Run Code Online (Sandbox Code Playgroud)
我在不同的用户下有这个 cron,所以我切换用户进行部署
sudo su deploy
crontab -e
Run Code Online (Sandbox Code Playgroud)
然后我看到我的 cron 然后我在 root 用户下跟踪日志
tail -n300 -f /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
我看到我的 cron
Jul 5 11:38:01 ip-10-70-75-234 CRON[4971]: (deploy) CMD (/bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\''')
Jul 5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)
Run Code Online (Sandbox Code Playgroud)
但是 cron 要么没有运行,要么存在权限问题……当我在控制台中运行任务时,它运行良好,但在 cron 中却没有……知道我错过了什么
这是 Ubuntu 12.04 LTS
也许我可以将更详细的列表记录到某个地方以查看错误
如果 Apache 正在编写一个大文件并且在该文件上运行 rsync cron 作业,rsync 是否尝试复制该文件?
例子
/var/www./var/www同步。也许我完全疯了,如果是这样 - 那很好。但是我将如何安排工作以随机安排广播一条愚蠢的消息,例如 from fortune?
澄清
是 - 这是我的个人工作站 - 不打算在生产服务器上做一些不稳定的事情:)
我想跑
mysqldump -u aUser -p P4SSw0rd --all-databases > backup.sql
Run Code Online (Sandbox Code Playgroud)
在 cron 工作中。我怎样才能安全地这样做?
我知道我可以将命令放在那里,但是任何有权访问机器的人都会通过 crontab 立即看到它。有没有更好的方法来做到这一点?
如果有一个应用程序可以自行启动,那么最有效的查找位置是什么?有没有人有一个很好的完整列表,其中包含检查启动项、登录项、登录挂钩、Cron、内核扩展等的位置...
此时我忘记了这些文件夹/plist 文件的一半在哪里。我希望有人可以分享一个备忘单。
基本上,我正在寻找 Mac OS 自动启动应用程序或脚本的最常见位置的列表(例如:在登录时或按计划等)