久了不用,经常忘记,记录一下crontab的简单用法,以利于未来用到或忘记时快速查阅。
以下命令是在Ubuntu Linux上的终端执行的,可能有些命令不适用于其他版本的Linux。
如何知道Linux系统是否安装了cron服务?有三个方法可以知道Linux系统是否安装了cron服务,方法一是使用apt命令,方法二是使用dpkg命令,方法三是使用systemctl命令。
查看Linux是否安装cron服务
方法1: 使用apt命令
apt list cron --installed
方法2: 使用dpkg命令
# 命令1
dpkg -l cron
# 命令2
dpkg -l | grep cron
# 命令3
dpkg -l | cut -d " " -f3 | grep cron
# 命令4 可以查看cron服务被安装在哪些路径下
dpkg -L cron
方法3: 使用systemctl命令
# 查看cron服务的状态
systemctl status cron
# 安装cron服务
sudo apt update
sudo apt install cron
# 激活cron服务 开机自启(开机时自动启动)
sudo systemctl enable cron
# 禁用cron服务 开机自启
sudo systemctl disable cron
# 查看cron服务 是否激活了开机自启
sudo systemctl is-enabled cron
# 启动cron服务
sudo systemctl start cron
# 停止cron服务
sudo systemctl stop cron
# 直接kill掉cron服务,慎用这个命令,一般用systemctl stop停止服务
sudo systemctl kill cron
# 重启cron服务
sudo systemctl restart cron
# 查看cron服务的状态
sudo systemctl status cron
步骤1: 安装和启动cron服务。如何安装cron服务?如何启动cron服务?前文已列出解决方法。
步骤2: 编写一个定时任务需要执行的脚本。这里我用python写了一个名叫create_machine_prize.py的脚本。
用python写了create_machine_prize.py
步骤3: 确定脚本执行的时间点。我这里希望脚本每10分钟执行一次,所以,该脚本的crontab任务配置如下:
*/10 * * * * /usr/bin/env bash -c 'cd /data/web/m.xyz.com && /data/web/m.xyz.com/env/bin/python -m cron_jobs.create_machine_prize' > /dev/null 2>&1
步骤4: 执行crontab -e命令,进入crontab任务编辑界面,复制步骤3的crontab任务配置,然后粘贴进去,保存后退出,执行crontab -l命令查看刚才添加的任务是否存在。
执行crontab -e命令后进入的编辑环境,就是vi编辑器的环境,只要会用vi编辑器,编辑crontab任务的配置没有任何难度。
命令执行过程如下所示:
helper@hgdm:~$ crontab -e
crontab: installing new crontab
helper@hgdm:~$ crontab -l
*/10 * * * * /usr/bin/env bash -c 'cd /data/web/m.xyz.com && /data/web/m.xyz.com/env/bin/python -m cron_jobs.create_machine_prize' > /dev/null 2>&1
执行crontab -e和crontab -l
步骤5: 确定一下任务是否正确执行了。这里,我把任务的处理结果写入了数据库,我去数据库查看一下是否有数据就知道了。
其实,测试时最好把任务的输出结果写入到一个日志里,以利于出错时高效排错。若需写入日志,可以使用以下crontab配置:
*/10 * * * * /usr/bin/env bash -c 'cd /data/web/m.xyz.com && /data/web/m.xyz.com/env/bin/python -m cron_jobs.create_machine_prize' >>/home/helper/logs/create_machine_prize.log 2>>&1
本文只是写了crontab的简单使用。如何配置任务的执行时间点,需要去查相关资料了。
,