linux——计划任务

1.计划任务

        提前计划某个时间点执行某个任务,所以计划任务的作用是做一些周期性的任务,在工作生产中计划任务主要用来定时备份、清理数据。

        优势:1.可以自动执行,提高了工作效率的同时也解放了人力。        2.任何脚本都可以配合计划任务执行。

2.命令的使用

        2.1 编辑计划任务

                使用 crontab -e 命令编辑当前用户的计划任务, 进入编辑之后,按照已经规范的格式编写,即 * * * * * 执行命令,然后保存退出即可,每个用户都有自己的计划任务。

         2.2 删除计划任务

                删除计划任务有两种方式,一种是使用 crontab -r 命令直接删除,第二种就是使用传统的方法,即使用 crontab -e命令进入到计划任务编辑界面,将不再需要的计划任务注释掉即可

        2.3 查看计划任务

                使用 crontab -l 命令即可查看当前用户有哪些计划任务,还可以使用 crontab -l -u user 命令查看指定用户的计划任务,前提是你的权限允许你查看其他用户的计划任务

        2.4 图解(多记)

 3.计划任务的日志文件

        计划任务执行脚本的时候,是在后台执行的,人看不到。不过通过监控crontabd的日志文件查看到计划任务是否执行(即命令 tail -l /var/log/cron),crontab的日志(/var/log/cront):记录哪些计划任务的创建,执行,修改,查看等操作。

Mar 16 15:06:35 sanchuang crontab[22483]: (root) LIST (root)  查看
Mar 16 15:06:49 sanchuang crontab[22484]: (root) BEGIN EDIT (root)  编辑
Mar 16 15:07:07 sanchuang crontab[22484]: (root) REPLACE (root) 修改
Mar 16 15:07:07 sanchuang crontab[22484]: (root) END EDIT (root)  结束编辑
Mar 16 15:07:25 sanchuang crontab[22486]: (root) LIST (root)
Mar 16 15:08:01 sanchuang crond[22151]: (root) RELOAD (/var/spool/cron/root)  加载计划任务开始执行
Mar 16 15:08:01 sanchuang CROND[22491]: (root) CMD (bash /lianxi/sanchuang/create_dir.sh)
Mar 16 15:08:01 sanchuang CROND[22489]: (root) CMDOUT (tar: 从成员名中删除开头的“/”)  脚本的执行输出效果

CROND[22491]  CROND 是进程 [22491] 是crond的进程号 pid号,CMD 表示执行命令 command

        /var/spool/cron是用来存放用户的计划任务         /etc/cron.d/  存放计划任务的目录        /etc/cron.daily/ 存放每天需要执行的任务        /etc/cron.hourly/ 存放每小时需要执行的任务        /etc/cron.monthly/ 存放每月需要执行的任务        /etc/cron.weekly/  存放每周需要执行的任务        /etc/cron.deny 存放拒绝谁执行计划任务

4.黑客获取数据

        

5.anacron

        anacron服务是cron服务的补充程序,起到查漏补缺的作用, 弥补cron在系统关机后不能执行计划任务的问题,等系统开机后将没有执行的计划任务执行一遍。不能替代cron按天、周或月为单位去检查系统未进行的cron任务。 配置文件为:/var/spool/anacron。服务名称:/etc/init.d/anacrond
        开机时自动运行,然后将未执行的计划任务执行一遍后,anacron 就会自动停止                            cat /etc/anacrontab 

6. 使用案例

        例题:5.新建目录/backcup,作为后面需要备份文件的目录。备份/etc/passwd 、/var/log、 /boot到backup目录下打包叫2017-3-29_pwd_log_boot.tar.xz。文件名里加日期年月日就可以了。
每天的23:00备份一次,使用计划任务执行。保留最近20天的文件,20天以前的文件删除。脚本名为backup_pwd_boot_log.sh

1. 创建备份目录:

mkdir /backup

2. 创建备份脚本文件:

touch /usr/local/bin/backup_pwd_boot_log.sh
chmod +x /usr/local/bin/backup_pwd_boot_log.sh

3. 编辑备份脚本文件,并将需要备份的文件打包:

#!/bin/bash

# 备份文件所在目录
BACKUP_DIR="/backup"

# 需要备份的文件
FILES_TO_BACKUP=(
    "/etc/passwd"
    "/var/log"
    "/boot"
)

# 打包并压缩备份文件
BACKUP_FILE_NAME="$(date +'%Y-%m-%d')_pwd_log_boot.tar.xz"
tar -cJf "${BACKUP_DIR}/${BACKUP_FILE_NAME}" "${FILES_TO_BACKUP[@]}"

# 删除20天之前的备份文件
find "${BACKUP_DIR}" -type f -name "*_pwd_log_boot.tar.xz" -mtime +19 -delete

4. 添加计划任务:

crontab -e

5.然后添加以下内容:

# 每天23:00执行备份脚本
0 23 * * * /usr/local/bin/backup_pwd_boot_log.sh

这样,计划任务就创建成功了,不过需要注意文件的权限

如果对压缩命令还不熟悉,可以阅读我之前写的那篇有关压缩命令的讲解:

https://mp.csdn.net/mp_blog/creation/editor/new/129740504

                尝试写出相应的时间:

        

解答如下:         

猜你喜欢

转载自blog.csdn.net/m0_53891399/article/details/130959500