跳转到内容

Unix 指南/说明/计划作业

来自维基教科书,开放的书籍,开放的世界

使用 cron 计划作业

[编辑 | 编辑源代码]

cron 是 UNIX/Linux 系统中的一个自动调度程序,它执行由系统、root 或单个用户计划的作业(脚本)。调度信息包含在 crontab 文件中(每个用户的文件不同且独立)。当 cron 守护进程启动时,它会搜索 crontab 文件,这些文件位于 /var/cron/tabs 目录中,以用户名命名。cron 守护进程每分钟唤醒一次,并检查 crontab 文件中是否安排了任何要执行的作业。每次 cron 守护进程唤醒以检查 crontab 文件时,它还会检查 /etc/crontab 文件中文件的时间戳是否修改,它会跟踪并记录这些修改。当你简单地“touch”/etc/crontab 文件时,cron 守护进程会捕获它,并最终停止执行 crontab 中的计划作业 - 这就是停止 cron 守护进程的方法。为了让 cron 守护进程继续运行计划作业,你需要重新启动它(重启它)。

使用 'cron.allow' 和 'cron.deny' 控制访问

[编辑 | 编辑源代码]
  • 当用户列在 /etc/cron.allow 文件中时,将授予访问权限
  • 否则,如果在 /etc/cron.deny 中找到了用户名,则将拒绝访问
  • 如果这两个文件都不存在,那么根据站点相关的配置参数,只有超级用户可以访问,或者所有用户都可以访问。
  • 对于标准的 Debian 系统(包括 Ubuntu),当这两个文件都不存在时,所有用户都将获得访问权限。
  • 对于 Fedora 系统,当这两个文件都不存在时,只有超级用户将获得访问权限。


提交 cron 作业的四个地方

[编辑 | 编辑源代码]
  1. /var/spool/cron/username 文件:每个单独的用户(由用户名标识)控制他或她自己的独立文件
  2. /etc/crontab 文件:这是**系统 crontab** 文件。只有 root 才有权限修改此文件。
  3. /etc/cron.d 目录。放置在此目录中的每个文件都与 /etc/crontab 格式相同。只有 root 才有权限创建或修改此目录中的文件。
  4. /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录
    • 这些目录中的每个文件都是一个 shell 脚本,它在 /etc/crontab 文件中指定的时间运行(默认情况下,分别在小时后的第一分钟,每天凌晨 4:02,星期日凌晨 4:22,以及每月第一天凌晨 4:42)。
    • 只有 root 才有权限创建或修改这些目录中的文件。

crontab 格式

[编辑 | 编辑源代码]
* * * * * command to be executed
- - - - 
| | | | |
| | | | ----- day of week (0 - 6) (Sunday=0)
| | | ------- month (1 - 12)
| | --------- day of month (1 - 31)
| ----------- hour (0 - 23)
 ------------ min (0 - 59)
  1. 任何字段中的星号 (*) 表示该字段的所有可能值。
  2. 可以使用值列表、值范围和增量。示例
    • 列表:日期可以表示为**列表 Mon,Wed,Fri**。
    • 范围:小时可以指定为**范围 9–5**
    • 增量:**0–31/3in** 第三个字段表示每月的第三天
    • ***/5** 表示每五分钟
  3. 可以指定任何变量来微调作业将运行的环境。示例
    • **MAILTO=otheruser** 变量可以使邮件发送给除提交 cron 作业的用户之外的用户
  1. crontab −l : 列出您自己的个人 crontab 文件的当前内容
  2. crontab −r : 删除所有 crontab 条目
  3. crontab −e : 编辑 crontab 文件
  4. ps -e |grep cron : 显示 cron 守护进程是否正在运行的状态。
  5. /usr/sbin/cron & : 启动用户 cron 守护进程。
华夏公益教科书