您的当前位置:首页>全部文章>文章详情

Debian下【crontab】计划任务的使用

gathin发表于:2022-12-21 15:25:25浏览:356次TAG: #Linux #crontab

crontab语法说明

假设需要每分钟执行一次一个脚本

# 每隔 1 分钟执行一次 task.sh
# minute hour mday month wday who command
*/1 * * * * /var/www/task.sh

minute(m) : 代表一小时内的第几分,范围 0-59。
hour (h) : 代表一天中的第几小时,范围 0-23。
mday (dom) : 代表一个月中的第几天,范围 1-31。
month(mon) : 代表一年中第几个月,范围 1-12。
wday (dow) : 代表星期几,范围 0-7 (0及7都是星期天)。
who : 要使用什么身份执行该指令,当您使用 crontab -e 时,不必加此字段。
command(command):所要执行的指令。

两种方式可以将任务添加到crontab

方法一:修改root用户的文件
打开 /etc/crontab 文件,添加上述代码,保存即可(需要ROOT权限)

vim /etc/crontab

方法二:修改root用户的文件
直接ssh执行命令

crontab -e

会打开 /var/spool/cron/crontabs/username文件(如果没有username,这个文件还是root)
添加上述代码
按ctrl+X退出,提示是否保存,按Y,回车,会有提示(本方法的好处:会检查设置是否有错误):

crontab: installing new crontab

crontab 服务重启

/etc/init.d/cron restart
或
service cron restart

查看执行情况(crontab执行日志)
方法1:系统自带
执行结果不论是否成功,都会在 /var/spool/mail/mail文件中有crontab执行日志的记录
另外说在/var/log/cron.log有,我在Debian中没找到
方法2:自定义日志
新建 /var/www/mysql_start.log(我把权限设置555)
把task.sh改成如下:

#!/bin/bash
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]
then
    echo "At time: `date`: MySQL is stop .">> /var/www/mysql_start.log
    /etc/init.d/mysql start
else
    echo "MySQL server is running ."
fi

然后每分钟的执行情况,都会写入这个日志文件,