首发于编程杂记

Ubuntu18定时任务脚本

cron简介

在Linux系统中,计划任务一般是由 cron 承担,我们可以把 cron 设置为开机时自动启动。cron 启动后,它会读取它的所有配置文件(全局性配置文件 /etc/crontab ,以及每个用户的计划任务配置文件),然后 cron 会根据命令和执行时间来按时来调用度工作任务。

cron 是一个 linux 下的定时执行工具,可以在无需人工干预的情况下运行作业。由于 cron 是 Linux 的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service cron start //启动服务 
/sbin/service cron stop //关闭服务  

/sbin/service cron restart //重启服务 
/sbin/service cron reload //重新载入配置

/etc/init.d 这个目录是所有服务的脚本,可以通过执行脚本并且加上参数,开启关闭或者重启对应的服务。

常用的corn服务

cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用 crontab 指令来管理cron机制

crontab参数:

-u:编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab
crontab -u 使用者名称
-l:可以列出crontab的内容
-r:可以移除crontab
-e:可以使用系统预设的编辑器,开启crontab
-i:可以移除crontab,会跳出系统信息让你再次确定是否移除crontab

示例:

*/5 * * * * 每五分钟执行
0 * * * * 每小时执行
0 0 * * * 每天执行  
0 0 * * 0 每周执行   
0 0 1 * * 每月执行      
0 0 1 1 * 每年执行

常用命令:

重启cron:/etc/init.d/cron restart
查看cron:crontab -l
查看cron的状态(开启或关闭):service cron status
打开cron文件:crontab -e
查看cron日志:/var/log/syslog

crontab时间格式说明

minute(分):可以设置0-59分
hour(小时):可以设置0-23小时
day of month(日期):可以设置1-31号
month(月份):可以设置1-12月
day of week(星期):可以设置0-7星期几,其中0和7都代表星期天,也可以使用名称来表示星期天到星期一,例如sun表示星期天,mon表示星期一
"*"代表取值范围内的数字
"/"代表"每"
"-"代表从某个数字到某个数字
","分开几个离散的数字

编写定时器

创建一个 cron 文件:

cd ~
touch ihdu_crontab

编写定时命令:

每5分钟调用对应的python脚本执行一次内网环境下的拨号连接。

*/5 * * * * python3 /home/g2080/ihdu3.py

cron 文件添加到定时服务中:

crontab ihdu_crontab

查看定时服务:

crontab -l

启动定时服务:

service cron start

查看定时任务的状态:

service cron status

Bingo! 至此已经成功了~

cron 常用命令参考:

详细的 cron 使用方法可以参考:crontab命令_Linux crontab 命令用法详解:提交和管理用户的需要周期性执行的任务

# 将文件中的定时任务添加至服务中
crontab xk_wangcron 
# 查看添加至服务中的任务【需要2分钟之后才会更新状态】
crontab -l
# 修改【增加】定时任务至服务中,不通过刚刚创建xk_wangcron定时任务文件
crontab -e
# 启动这些任务
service cron start
# 若是修改定时任务内容之后,可以重启定时任务
service cron restart
# 查看定时任务的状态
service cron status
# 修改rsyslog服务,将 /etc/rsyslog.d/50-default.conf  文件中的 #cron.* 前的 # 删掉;
# 用以下命令重启rsyslog服务:
service rsyslog restart;
# 查看定时任务日志
cat /var/log/cron.log
# 查看定时任务日志的最近5个记录
tail -n 5 /var/log/cron.log

设置开机启动定时任务

在设置完成定时任务后,我们可能还想要让这个定时任务在每一次机器重启的时候都能够自动开启,而不是仅仅限制于当下运行环境:

这样,通过 sysv-rc-conf 来设置是否开机启动 cron 定时器服务,关于 sysv-rc-conf 的说明可以参考:Ubuntu下使用sysv-rc-conf管理服务_OSKernelLAB-CSDN博客

可以看到 cron 服务已经设置了开机启动了。

cron 服务没有被开启,执行以下代码,将其加入开机自启动:

chkconfig –level 35 crond on


如果想要进一步的自定义开机启动脚本,可以参考:


参考资料:

编辑于 2020-11-02 18:55