Linux-Cron定时任务使用

背景

最近用了几年的学生机服务器快过期了,就瞅活动便宜升级了一台轻量级的2核4G、5M的云服务器,但是后来发现轻量级服务器无法使用自动备份快照!!!这可咋整,虽然个人没有什么太重要的数据需要保存,但是MySQL里面还是有点货的、还有一些其他的东西需要自动备份,就想着自己写个脚本,定时把需要备份的东西,分别推到Git仓库里,有的用比没的好。

cron简介

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

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

基本运行命令
# 启动服务
service cron start

# 关闭服务
service cron stop

# 重启服务
service cron restart

# 重新载入配置
service cron reload

# 查看状态
service cron status
定时规则示例
# 每五分钟执行
*/5 * * * *

# 每小时执行
0 * * * *

# 每天执行
0 0 * * *

# 每周执行
0 0 * * 0

# 每月执行
0 0 1 * *

# 每年执行
0 0 1 1 *
查看定时任务
crontab -l
创建定时任务
crontab -e

image-20210713113931688

选择适合你的编辑器,这里选用的是2。

# 在文档下方填入定时任务(并将正确和错误的日志都输入到以下目录文件中)
*/5 * * * * /docker/docker-data-backup-gz-001.sh > /var/log/docker-backup.log 2>&1 &
脚本日志输出

如果crontab不重定向输出,并且crontab所执行的命令有输出内容的话,是一件非常危险的事情。因为该输出内容会以邮件的形式发送给用户,内容存储在邮件文件/var/spool/mail/$user,如果命令执行比较频繁(如每分钟一次),或者命令输出内容较多,会使这个邮件文件不断追加内容,文件越来越大。而邮件文件一般存放在根分区,根分区一般相对较小,所以会造成根分区写满而无法登录服务器

不输出任何内容
*/5 * * * * /docker/docker-data-backup-gz-001.sh &>/dev/null 2>&1 
将正确和错误日志都输出到 /var/log/docker-backup.log
*/5 * * * * /docker/docker-data-backup-gz-001.sh > /var/log/docker-backup.log 2>&1 &
只输出正确日志到 /var/log/docker-backup.log
*/5 * * * * /docker/docker-data-backup-gz-001.sh > /var/log/docker-backup.log &
# 等同于
*/5 * * * * /docker/docker-data-backup-gz-001.sh 1> /var/log/docker-backup.log &
只输出错误日志到 /var/log/docker-backup.log
*/5 * * * * /docker/docker-data-backup-gz-001.sh 2> /var/log/docker-backup.log &

指令说明

  • /dev/null 代表空设备文件

  • >是把输出转向到指定的文件,如文件已存在的话也会重新写入,文件原内容不会保留。

  • >> 是把输出附向到文件的后面,文件原内容会保留下来。

  • 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"

  • 2 表示stderr标准错误

  • & 表示等同于的意思,2>&1,表示2的输出重定向等同于1

查看cron日志
tail -f /var/log/syslog
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值