2019-2020-1 20199311《Linux内核原理与分析》第一周作业

1. 问题描述

在学习linux基础入门这门课程中,我遇到了一个问题。假设我们是一个服务器管理员,我们需要每天备份论坛数据(这里我们用 alternatives.log 日志替代),备份当天的日志并删除之前的日志。而且备份之后文件名是 年-月-日 的格式(alternatives.log 在 /var/log/ 下面)。那么我们该如何处理呢?

2. 解决问题

2.1 思考问题解决步骤

首先,解决这个问题的关键之处在于如何使linux每天定时执行备份论坛数据以及删除之前的日志,而用我们手动备份删除显然是不必要的。这时就需要用到linux中一个可以周期性的执行某种任务或等待处理某些事件的命令crontab。

2.2 crontab简介

crontab 命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。

2.2.1 crontab命令的格式:

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

2.2.2 crontab的参数

-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

2.2.3 crontab文件命令行格式

# 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

关于crontab的详细内容可以根据man手册查看。

2.3 问题解决步骤

2.3.1 假设用户为shiyanlou,为用户添加计划任务

在实验楼实验环境下,默认处于shiyanlou用户目录下,那么直接使用

$ crontab -e

为当前用户shiyanlou添加命令即可。
图片描述
我习惯使用vim编辑器,所以选择第2项

2.3.2 将命令行写入crontab文件中

我们假设每天凌晨 5 点的时候定时备份 alternatives.log 到 /home/shiyanlou/tmp/ 目录,命名格式为 年-月-日,比如今天是 2019年9月15日,那么文件名为 2019-9-15。
命令行格式如下

0 5 * * * shiyanlou rm /home/shiyanlou/tmp/*
0 5 * * * shiyanlou cp /var/log/alternatives.log /home/shiyanlou/tmp/$(date +\%Y-\%m-\%d)

图片描述
保存退出后,会看到如下提升

crontab:installing new crontab

图片描述
经检测,目标完成。

3. 总结

经过对这个问题的解决,我初步了解了crontab命令的使用,同时也复习了一下前面实验所学的通配符的知识。

posted @ 2019-09-15 19:51  buguoliujibugaiming  阅读(187)  评论(1编辑  收藏  举报