Linux学习|Gentoo/Arch/FreeBSD

240. 【Linux】好用的定时器

2022-03-10  本文已影响0人  七镜

我在 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 脚本的程序员都是幸福的

上一篇下一篇

猜你喜欢

热点阅读