Linux下cron定时任务工具使用指南:从配置到执行全解析

root 以外的用户可以使用 crontab 工具来配置 cron 任务。
所有用户定义的 crontab 都保存在 /var/spool/cron 目录中,并使用创建它们的用户的身份执行。
要以用户身份创建 crontab 条目,请以该用户身份登录,然后键入 crontab -e 命令来编辑用户的 crontab。该文件使用与 /etc/crontab 相同的格式。当保存对 crontab 的更改时,会根据用户名保存 crontab 文件,并写入文件 /var/spool/cron/username。
cron 守护进程每分钟检查 /etc/crontab 文件、etc/cron.d/ 目录和 /var/spool/cron 目录是否有更改。如果发现更改,则会将其加载到内存中。这样,当某个crontab文件改变时,就不需要重新启动守护进程了。
安装定时任务:
yum 安装 crontab
阐明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新加载配置
检查crontab服务状态:service crond status
手动启动crontab服务:service crond start
检查crontab服务是否已经设置为开机启动,执行命令:ntsysv
添加开机自动启动:
chkconfig –级别 35 crond 开启
crontab命令:
功能说明:设置定时器。
语法: crontab [-u ][配置文件] 或 crontab [-u ][-elr]
补充说明:cron是一个常驻服务,提供定时器功能,允许用户在特定的时间执行预设的指令或程序。只要用户可以编辑定时器的配置文件,就可以使用定时器的功能。其配置文件格式如下:
分钟 小时 日 月 DayOFWeek 命令
范围:
-e 编辑该用户的计时器设置。
-l 列出该用户的计时器设置。
-r 删除该用户的计时器设置。
-u 指定设置定时器的用户名。
crontab 格式:
基本格式:
分钟 小时 太阳 月 日 命令
* * * * * * *
第 1 列表示 1 到 59 分钟。每分钟用 * 或 */1 表示。
第 2 列代表 1 到 23 小时(0 代表 0 点)
第 3 列代表日期 1 到 31
第 4 列代表第 1 至 12 个月
第 5 列标识从 0 到 6 的星期几(0 表示星期日)
在第 6 列中运行的命令
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表“每个”,
“-”代表从某个数到某个数,
“,”分隔多个离散数字
# 使用 hashsign 为评论添加前缀
# +————- 分钟 (0 – 59)
#| +————- 小时 (0 – 23)
#| | +————- 一个月中的第几天 (1 – 31)
#| | | +——- 月 (1 – 12)
#| | | | +---- 星期几 (0 – 7)(星期日=0 或 7)
#| | | | |
# * * * * * 要执行的命令
crontab 的一些示例如下:
(1) 第一个例子。
30 21 * * * /etc/init.d/nginxrestart
每晚21:30重启nginx。
(2)第二个例子是本教程测试的例子
* * * * * /usr/bin/php -f /root/test.php >> test.log
每分钟执行一次/root/test.php文件,并将结果输出到test.log。
完成了上面的基础工作后,我们来看看如何使用crontab定时执行PHP脚本:
(1)我在/root下新建了一个test.php文件,内容如下:
- php
- #!/usr/bin/php -q
- echo date('Y-m-d H:i:s')."from http://www.phpddt.com \n";
- ?>
注意:您可以使用whereis php来查找php执行文件的位置。
(2)然后使用crontab -e编写如下shell:
注意:test.php必须是可执行文件:chmod +x test.php
测试结果正常,截图如下:
当然,你可以使用 crontab -e 继续添加任务。您可以在/var/spool/cron 下看到根文件。