DirectAdmin(DA)面板计划任务(cronjob)详细教程

DirectAdmin面板计划任务其实就是Unix中的crontab,唯一的区别就是时间部分在DA中被更直观的表现出来,其本质是相同的。

既然这样,首先看看crontab的格式,借用维基百科上的这个表可以相当直观的表现:

# 文件格式说明
#  ——分钟 (0 - 59)
# |  ——小时 (0 - 23)
# | |  ——日   (1 - 31)
# | | |  ——月   (1 - 12)
# | | | |  ——星期 (0 - 7)(星期日=0或7)
# | | | | |
# * * * * * 被执行的命令

说明:

一般情况下,各时间之间是且的关系,但日期和星期之间是或的关系。 在“星期域”(第五个域),0和7都被视为星期日。 举几个从网上找来的栗子(未一一验证):
  • 0 */2 * * * /sbin/service httpd restart 意思是每两个小时重启一次apache
  • 50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务
  • 50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务
  • 0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘
  • 1 * * * * /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件
  • 00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} /; 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
  • 30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令
  • 0 7 * * * /bin/ls 每天早上7点执行一次 /bin/ls
  • 0 6-12/3 * 12 * /usr/bin/backup 在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup
  • 0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata 周一到周五每天下午 5:00 寄一封信给 alex@domain.name
  • 20 0-23/2 * * * echo "haha" 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
  • 时间部分大致就是这样,命令部分根据不同的需要填写不同命令。当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可。crontab中经常配置运行脚本输出为:>/dev/null 2>&1,来避免crontab运行中有内容输出。因为shell命令的结果可以通过‘> ’的形式来定义输出,/dev/null 代表空设备文件,> 代表重定向到哪里。1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null",2 表示stderr标准错误,& 表示等同于的意思,2>&1,表示2的输出重定向等同于1。那么重定向输出语句的含义:

  • 1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
  • 2>&1 表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
  • 下面是几个DA的计划任务中常用的的命令:

    运行指定的php文件:/usr/local/bin/php /home/demo_user/domains/domain.com/public_html/script.php
    访问指定网址:/usr/local/bin/curl --silent http://www.domain.com/cron.php > /dev/null