zoukankan      html  css  js  c++  java
  • 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命令的使用,同时也复习了一下前面实验所学的通配符的知识。

  • 相关阅读:
    班会记录
    CSS之伪元素
    JavaScript之返回顶部
    尝试Hexo
    GitHub之上传文件
    Git之使用
    Git之基本命令
    运行第一个Node.js程序
    go语言圣经 map 章节习题
    go语言圣经第4章JSON部分习题
  • 原文地址:https://www.cnblogs.com/w-a-n-s-d-j/p/11523906.html
Copyright © 2011-2022 走看看