我已经在 CentOS 5 上的特定时间设置了几个“at”作业。今天早上我没有在队列中看到这些命令(“atq”),正如预期的那样,但我也没有看到可以我检查负责执行它们的守护进程是否按时执行或有任何问题。不幸的是,我没有从脚本本身记录足够的信息。有任何想法吗?
最近,配置为从用户的 crontab 运行的作业停止执行。尝试为用户列出或编辑 crontab 时,结果是:
user@host:~$ crontab -l
crontabs/user/: fopen: Permission denied
user@host:~$ crontab -e
crontabs/user/: fdopen: Permission denied
Run Code Online (Sandbox Code Playgroud)
显然它与权限相关,但我不确定权限是如何更改的——更重要的是,它们应该设置为什么。
/usr/bin/crontab 上的权限:
$ ll /usr/bin/crontab
-rwxr-sr-x 1 root libuuid 35896 Aug 24 2010 /usr/bin/crontab*
Run Code Online (Sandbox Code Playgroud)
/var/spool/cron/crontab 目录的权限:
# ll /var/spool/cron/
total 12
drwxr-xr-x 3 root root 4096 Oct 12 2010 ./
drwxr-xr-x 7 root root 4096 Jun 5 20:51 ../
drwx-wx--T 2 root libuuid 4096 Jan 10 2014 crontabs/
Run Code Online (Sandbox Code Playgroud)
crontab 目录中的权限:
# ll /var/spool/cron/crontabs/
total 16
drwx-wx--T 2 root libuuid 4096 …Run Code Online (Sandbox Code Playgroud) 我当前的 logrotate 配置如下所示(使用 logrotate 3.8.7)
"/var/log/haproxy.log" {
daily
size 250M
rotate 1
create 644 root root
missingok
compress
notifempty
copytruncate
}
Run Code Online (Sandbox Code Playgroud)
它每天成功运行一次,但是当大小超过 250M 时它不会被轮换。因此,无论大小如何,它都会等到一天结束时进行轮换。
我读过,有是MAXSIZE选项,转换后size 250M,以maxsize 250M它仍然无法正常工作。
我是否需要设置一个 cron 以每小时的方式运行 logrotate,或者 logrotate 会自动运行,因为它正在侦听该文件大小,并且我还有其他错误发生?
对于 cron 工作,我们知道我们可以设置时间如下。
# +------------ Minute (0 - 59)
# | +---------- Hour (0 - 23)
# | | +-------- Day of the Month (1 - 31)
# | | | +------ Month (1 - 12)
# | | | | +---- Day of the Week (0 - 7) (Sunday is 0 or 7)
# | | | | |
# * * * * * command
Run Code Online (Sandbox Code Playgroud)
我想知道的是,当我们设置月份的第31天时,这是否意味着每个月的结束,尽管该月没有第31天。希望得到答案。
提前致谢
假设我有几个需要每 15 分钟运行一次的 cron 脚本。我可以将它们设置为 run: */15 * * * *,但是它们同时运行。服务器闲置几分钟然后突然尝试同时执行十几个脚本似乎很愚蠢。
有没有办法让一个脚本在 1、16、31、46 分钟运行,另一个在 2、17、32、47 分钟运行?
换句话说,我希望每个脚本每 15 分钟运行一次,但我不在乎它们是否专门在刻点标记上运行。
通常指示通过命令行引入新的 cron 作业;但我发现手动编辑(在文本编辑器中)用户 cron 文件(如/var/spool/cron/crontabs/root.
在文本编辑器中编辑文件是否危险?
默认文件中的注释令人困惑。第一行说
# DO NOT EDIT THIS FILE - edit the master and reinstall.
Run Code Online (Sandbox Code Playgroud)
但是第四行说
# Edit this file to introduce tasks to be run by cron.
Run Code Online (Sandbox Code Playgroud) 我有一台运行 CentOS 6.2 最小的服务器,但它似乎没有默认安装 crontab?
crontab -e
-bash: crontab: command not found
Run Code Online (Sandbox Code Playgroud)
在搜索谷歌时,我发现了对“vixie-cron”和“anacronda”的引用,但没有关于让 cron 在 CentOS 6 上工作的官方/支持方式是什么的完整答案。
也许有人可以对此有所了解?
更新:
rpm -qf `which crontab`
/usr/bin/which: no crontab in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
rpm: no arguments given for query
Run Code Online (Sandbox Code Playgroud) 如果我这样做:
*/9 * * * * /path/to/wotnot
Run Code Online (Sandbox Code Playgroud)
任务将在两小时内的什么时间运行,从 09:00 开始
是A吗:
09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57
Run Code Online (Sandbox Code Playgroud)
或乙:
09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54
Run Code Online (Sandbox Code Playgroud) 假设我创建了两个 cron 作业:
但是,Cron Job A 需要 12 个小时才能运行(不要问为什么,这是一个示例)。
Cron Job B 会在早上 8 点 05 分运行还是一次只执行一个 cron 作业?
如果之前运行的 Cron 作业被系统重启/重启中断,它会在后续启动后恢复/再次运行吗?
cron ×10
linux ×5
centos ×1
centos6 ×1
logrotate ×1
permissions ×1
syslog ×1
ubuntu-10.10 ×1
unix ×1