第六周-Vim、计划任务及Shell脚本练习

一、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;

cp /etc/rc.d/rc.sysinit /tmp
vim /tmp/rc.sysinit
末行模式输入 :%s@^[[:space:]]\+@#&@g

二、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;

cp /boot/grub.conf /tmp
vim /tmp/grup.conf
末行模式输入 :%s@^[[:space:]]\+@@g

三、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符;

vim /tmp/rc.sysinit
末行模式输入 :%s@^#[[:space:]]\+@@g

四、为/tmp/grub.conf文件中前三行的行首加#号;

vim /tmp/grup.conf
末行模式输入 ::1,3s@^@#&@

五、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;

vim /etc/yum.repos.d/CentOS-Media.repo
末行模式输入 :%s@\(enabled\|gpgcheck\)=0@\1=1@g

、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202

crontab -e
0 */4 * * * /bin/cp -a /etc /backup/etc-`date +%Y%m%d%H%M`

七、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402

crontab -e
0 0 * * 2,4,6 /bin/cp /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`

八、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中

crontab -e
0 */2 * * * /bin/grep "^S" /proc/meminfo | /bin/sed '$a\ ' >> /stats/memory.txt

九、工作日的工作时间内,每两小时执行一次echo “howdy”

crontab -e
0 9-18/2 * * 1-5 /bin/echo "howdy"

我在练习crontab的时候,把6-9每道题的操作分别写成函数,通过shell脚本传递参数来调用函数。

以下是shell代码,这样在crontab里调用脚本+参数就可以实现每个操作

#!/bin/bash
#判断所需文件夹是否存在
if [ ! -d /backup/messages_logs ];then
  mkdir -p /backup/messages_logs
fi

if [ ! -d /stats ];then
  mkdir /stats
fi

#定义备份/etc目录
function Backupetc() {
  cp -a /etc /backup/etc-`date +%Y%m%d%H%M`
}

#定义备份messages文件
function Backupmessage() {
  cp /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`
}

#定义获取内存信息
function meminfo() {
  grep "^S" /proc/meminfo | /bin/sed '$a\ ' >> /stats/memory.txt
}

#定义echo特定文本
function echostr() {
  echo "howdy"
}

#case分多支语句,判断脚本第一个参数,如没有符合条件则会给出错误提示
case $1 in
 etc)
   Backupetc
    ;;
 messages)
   Backupmessage
    ;;
 mem)
   meminfo
    ;;
 echo)
   echostr
    ;;
 *)
   echo "Command error,Please re-enter.(etc|messages|mem|echo)"
    ;;
esac

十、创建目录/tmp/testdir-当前日期时间;

十一、在此目录创建100个空文件:file1-file100

十二、显示/etc/passwd文件中位于第偶数行的用户的用户名;

#!/bin/bash  

time=`date +%Y%m%d%H%M`                  #第十题
mkdir /tmp/testdir-$time

touch /tmp/testdir-$time/file{1..100}    #第十一题

#for i in `seq 1 100`                    #第十一题循环法
#do
#touch /tmp/testdir-$time/file$i
#done

sed -n 'n;p' /etc/passwd | awk -F: '{print $1}'    #第十二题

原创文章,作者:N27_what,如若转载,请注明出处:http://www.178linux.com/84689

(0)
N27_whatN27_what
上一篇 2017-08-13
下一篇 2017-08-13

相关推荐

  • 任务计划2

    [root@localhost app]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/root/bin MAILTO=root   # For details see man 4 crontabs   # Example of job defi…

    Linux干货 2017-05-15
  • linux系统基础目录结构及功能说明

    linux系统基础目录结构及功能说明 [root@localhost /]# ls bin boot dev etc home host lib lib64 media mnt opt proc root run sbin srv sys tmp usr var /bin:所有用户可用的基本命令程序文件;/sbin:供系统管理使用的工具程序;/boot:引导…

    Linux干货 2018-03-04
  • N25_第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@aio ~]# who|cut -d" " -f1|uniq root 2、取出最后登录到当前系统的用户的相关信息。 [root@aio ~]# who| …

    Linux干货 2016-12-19
  • 系统基础之文件管理grep练习题

    1、显示/proc/meminfo文件中以大小s开头的行; (要求:使用三种方式) [root@wen-7 ~]# grep -i "^s" /proc/meminfo  SwapCached:       &…

    Linux干货 2016-08-07
  • 11.网络解析和网络加密

    1、详细描述一次加密通讯的过程,结合图示最佳。 加密过程 1.使用单向加密算法,提取A的文件的特征码。 2.使用A的私钥对提取出来的特征码进行加密,把加密后的特征码附加在A的文件的后面。 3.使用对称加密对刚刚的A的文件和加密后的特征码进行加密,生成对称加密密钥 4.使用B的公钥对第3步骤的对称加密的密钥进行加密,加密后附加在文件的后面。 解密过程 1.使用…

    2017-09-20
  • Linux命令执行

    Linux命令 Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和外部命令。 命令格式 COMMAND [OPTIONS…] [ARGU…

    Linux干货 2017-07-15