第六周-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

相关推荐

  • CA和证书

    A与B双方通信,需要通过签证机构CA颁发证书,才可以互相信任,从而安全的进行数据传输。想要获取证书,除了付费购买认证机构的证书,还可以自签名获取证书。 openssl命令可以搭建CA,实现自签名证书。下面以三台主机为例,模拟根CA、子CA的搭建,以及客户端申请证书的过程。 一、搭建根CA /etc/pki/tls/openssl.cnf文件是openssl的…

    2017-09-10
  • N25第六周 vim,crontab命令的使用

    请详细总结vim编辑器的使用并完成以下练习题 vim是一款功能强大的文本编辑器,是程序员的必备神器。 vim工作模式分为三种:编辑模式,输入模式,末行模式,三种工作模式可以进行来自由切换     编辑模式—》输入模式: 直接键i      输入模式—》…

    Linux干货 2016-12-29
  • Linux Cluster之keepalived及keepalived + LVS DR的实现

      一、HA Cluster基础 系统可用性A=MTBF/(MTBF+MTTR) MTBF:平均无故障时间 MTTR:平均修复时间 降低MTTR的方式:冗余(redundent) 衡量标准:几个9 90%、99%、99.9%… 提升系统可用性的办法之一:降低MTTR 通过冗余(redundant)的方式能够避免单点故障(SPoF),从而…

    2016-11-02
  • DNS 子域授权和高级应用

    DNS 基础主从部分 http://www.178linux.com/12395 实验环境:     系统环境:Centos 6.7     关闭SELINUX:setenforce 0 #立即生效   (实际是宽容模式)     配置防火墙:iptables…

    Linux干货 2016-11-15
  • Linux系统下的bonding设置

    bonding多个物理网卡聚合成一个虚拟网卡     Bonding,其原理是讲多个物理网卡聚合成一个虚拟网卡,一张网卡正常工作,其余网卡作为备用,每隔一段时间(miimon=毫秒),向正常工作的网卡发一状态询问,若没回复,则认为其运行失败,然后就会启用备用网卡,但是IP地址不会改变。   &nbs…

    Linux干货 2016-09-07
  • Tomcat性能优化-2

    修改Connector运行模式 启用NIO 或 APR bio介绍 bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O操作 默认模式,性能最差,没有经过任何优化处理和支持 nio模式 nio(non-blocking I/O),Java SE 1.4…

    Linux干货 2016-09-19