240. 【Linux】好用的定时器
我在 Linux 运维时,经常会用到定时器,比如定期备份重要的文件,非常好用。
Linux 系统使用 cron 程序来安排要定期执行的作业。cron 程序会在后台运行并检查一个特殊的表(被称作 cron 时间表),以获知已安排执行的作业。
一、cron 时间表
cron 时间表采用一种特别的格式来指定作业何时运行。其格式如下:(敲重点)
min hour dayofmonth month dayofweek command
这个格式非常重要,要牢记。cron 时间表允许你用特定值、取值范围(比如1~5)或者通配符(星号)来指定条目。
命令列表必须指定要运行的命令或脚本的全路径名。你可以像在普通的命令行中那样,添加任何想要的命令行参数和重定向符号。
15 10 * * * /home/qijing/test.sh > test.out
二、示例
shell 脚本如下(我是存放在 /script_qijing
目录下)
#!/bin/bash
# Program:
# backup workspace
# History:
# 2022/03/10 junfenghe.cloud@qq.com version:0.0.1
path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export path
tar -zcvf /backup/backup_workspace_$(date +"%Y_%d").tar.gz /root/workspace_docker_file /root/workspace_kubernetes
作用是将将两个文件夹打包成一个压缩包,并且保存在 /backup
目录下。(/root/workspace_docker_file
其实是我编写 Dockerfile 的目录,/root/workspace_kubernetes
是我编写 kubernetes yaml配置文件的目录)
接下来编辑 /etc/crontab
文件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
11 22 * * * root /scripts_qijing/backup_workspace.sh
编辑完保存之后,Linux 系统将在每天晚上 10 点 11 分的时候用 root 用户执行一次脚本/scripts_qijing/backup_workspace.sh
,非常的好用。
敲重点:编辑这个 /etc/crontab
文件时额外添加了个执行脚本的用户,这里写的是root
,按文件内提示加上
效果如下:
/backup
目录下多了一个 backup_workspace_2022_10.tar.gz 压缩包。成功了。
PS: 会写 Shell 脚本的程序员都是幸福的