首页 > 代码库 > 2016-9-11第六周作业

2016-9-11第六周作业

  • cp [OPTION]... SOURCE(原文件)... DIRECTORY(目录)

  • sed [options] ‘command‘ file(s)

    -i∶直接修改读取的档案内容,而不是由萤幕输出。

  • vi中的末行模式:

    #,+#从左侧#表示的行起始,加上右侧#表示的行数;

    %:全文  

    s:在末行模式下完成查找替换操作
    s/要查找的内容/替换为的内容/修饰符
    要查找的内容:可使用模式
    替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用"g"引用前面查找时查找到的整行内容;

  • crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]

    -e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
    -r [UserName]: 删除目前的时程表
    -l [UserName]: 列出目前的时程表
    -v [UserName]:列出用户cron作业的状态

    crontab -e   

    # 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。

    #分 时 日  月 周      |<==============任务的完整命令行
       * */2 */1 * *        grep "^S" /proc/meminfo

  • cut [OPTION]... [FILE]...
    -d DELIMITER: 指明分隔符
    -f FILEDS:
    #: 第#个字段
    #,#[,#]:离散的多个字段,例如1,2,4
    #-#:连续的多个字段,例如1-6

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

  1. [root@loaclhost ~]# cp /etc/rc.d/rc.sysinit /tmp/

  2. [root@loaclhost ~]# sed -i ‘s/\(^[[:space:]]\)/#\1/g‘ /tmp/rc.sysinit

  1. [root@loaclhost ~]# cp /etc/rc.d/rc.sysinit /tmp/

  2. [root@loaclhost ~]# vi /tmp/rc.sysinit

  3. 在末行模式下输入

  4.  :%s/^[[:space:]]/#&/g

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

  1. [root@loaclhost ~]# cp /boot/grub/grub.conf /tmp/

  2. [root@loaclhost ~]# sed -i ‘s/^[[:space:]]\+//g‘ /tmp/grub.conf

  1. [root@loaclhost ~]# cp /boot/grub/grub.conf /tmp/

  2. [root@loaclhost ~]# vi /tmp/grub.conf

  3. 在末行模式下输入

  4. :s/^[[:space:]]\+//g

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

  1. [root@loaclhost ~]# sed -i ‘s/^#[[:space:]]\+//g‘ /tmp/rc.sysinit

  1. [root@loaclhost ~]# vi /tmp/rc.sysinit

  2. 在末行模式下输入

  3.  :%s/^#[[:space:]]\+//g

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

  1. [root@loaclhost ~]# sed -i ‘1,+2s/^/#&/g‘ /tmp/grub.conf

  1. [root@loaclhost ~]# vi /tmp/grub.conf

  2. 在末行模式下输入

  3. :1,+2s/^/#&/g

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

  1. [root@loaclhost /]# sed -i ‘/enabled/s/0/1/g;/gpgcheck/s/0/1/g;‘ /etc/yum.repos.d/CentOS-Media.repo

  1. [root@loaclhost ~]# vi /etc/yum.repos.d/CentOS-Media.repo

  2. 在末行模式下输入

  3. :%s/enabled=0/enabled=1/g

    :%s/gpgcheck=0/gpgcheck=1/g

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

  1. [root@loaclhost /]# cat /do/crond-shell.sh

    #!/bin/bash

    cd /

    tar zcf /backup/etc-`date +\%Y\%m\%d\%H\%M` ./etc > /dev/null 2>&1

  2. [root@loaclhost ~]# chmod +x /do/crond-shell.sh

  3. [root@loaclhost /]# crontab -e
    crontab: installing new crontab
    * */4 * * * sh /do/crond-shell.sh

[root@loaclhost /]# crontab -e
crontab: no changes made to crontab
* */4 * * * cp -r /etc/ /backup/etc-`date +%Y%m%d%H%M`

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

  1. [root@loaclhost /]# cat /do/week-shell.sh

    #!/bin/bash

    cd /

    tar zcf /backup/messages-‘date+%Y%m%d‘ ./var/log/messages > /dev/null 2>&1

  2. [root@loaclhost ~]# chmod +x /do/crond-shell.sh

  3. [root@loaclhost /]# crontab -e

    crontab: no changes made to crontab

    * * * * */2,4,6 /do/week-shell.sh > /dev/null 2>&1

  1. [root@loaclhost /]# crontab -e

    crontab: no changes made to crontab

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

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

[root@loaclhost /]# crontab -e

crontab: no changes made to crontab

* */2 */1 * * grep "^S" /proc/meminfo >> /stats/memory.txt

9、工作日的工作时间内,每两小时执行一次echo "howdy"

[root@loaclhost /]# crontab -e

crontab: no changes made to crontab

* 9-18/2 * * */1-5 echo "howdy"

脚本编程练习

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

  1. [root@loaclhost /]# cat mkdir.sh
    #!/bin/bash
    mkdir -pv /tmp/testdir-$(date +%F-%H-%M-%S)

  2. [root@loaclhost /]# chmod +x mkdir.sh

  3. [root@loaclhost /]# ./mkdir.sh
    mkdir: 已创建目录 "/tmp/testdir-2016-08-16-22-50-03

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

  1. [root@loaclhost testdir-2016-08-16-22-50-03]# cat mkdir1-100.sh
    #!/bin/bash
    for i in {1..100};do
        mkdir file$i
    done

  2. [root@loaclhost testdir-2016-08-16-22-50-03]# chmod +x mkdir1-100.sh

  3. [root@loaclhost testdir-2016-08-16-22-50-03]# ./mkdir1-100.sh

  4. [root@loaclhost testdir-2016-08-16-22-50-03]# ls
    file1    file16  file23  file30  file38  file45  file52  file6   file67  file74  file81  file89  file96
    file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97
    file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98
    file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99
    file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92  mkdir1-100.sh
    file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93
    file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94
    file15   file22  file3   file37  file44  file51  file59  file66  file73  file80  file88  file95

12、显示/etc/passw d文件中位于第偶数行的用户的用户名;

  1. [root@loaclhost ~]# sed -n ‘p;n‘ /etc/passwd | cut -d: -f1
    root
    daemon
    lp
    shutdown
    mail
    operator
    gopher
    nobody
    saslauth
    sshd
    mageia
    bash
    basher
    user1
    hadoop

13、创建10用户user10-user19;密码同用户名;

[root@loaclhost ~]# cat /do/useradd.sh
#!/bin/bash
for i in {10..19};do
    if id user$i &>/dev/null;then
    echo "user$i exists."
    else
    useradd user$i
    if [ $? -eq 0 ];then
        echo "user$i" | passwd --stdin user$i &> /dev/null
        echo "Add user$i finished."
    fi
    fi
done
[root@loaclhost ~]# chmod +x /do/useradd.sh
[root@loaclhost ~]# ../do/useradd.sh
UserAdd user10 finish.
UserAdd user11 finish.
UserAdd user12 finish.
UserAdd user13 finish.
UserAdd user14 finish.
UserAdd user15 finish.
UserAdd user16 finish.
UserAdd user17 finish.
UserAdd user18 finish.
UserAdd user19 finish

14、在/tmp/创建10个空文件file10-file19;

[root@loaclhost home]# cat /do/file.sh
#!/bin/bash
for i in {10..19};do
    touch /tmp/file$i
done
[root@loaclhost home]# chmod +x /do/file.sh
[root@loaclhost home]# ../do/file.sh
[root@loaclhost home]# ll /tmp/ | grep ‘file‘
-rw-r--r--.   1 root   root       0 8月  16 23:17 file10
-rw-r--r--.   1 root   root       0 8月  16 23:17 file11
-rw-r--r--.   1 root   root       0 8月  16 23:17 file12
-rw-r--r--.   1 root   root       0 8月  16 23:17 file13
-rw-r--r--.   1 root   root       0 8月  16 23:17 file14
-rw-r--r--.   1 root   root       0 8月  16 23:17 file15
-rw-r--r--.   1 root   root       0 8月  16 23:17 file16
-rw-r--r--.   1 root   root       0 8月  16 23:17 file17
-rw-r--r--.   1 root   root       0 8月  16 23:17 file18
-rw-r--r--.   1 root   root       0 8月  16 23:17 file19

15、把file10的属主和属组改为user10,依次类推。

[root@loaclhost home]# cat /do/file-user.sh
#!/bin/bash
cd /tmp
for i in {10..19};do
    chown user$i:user$i /tmp/file$i

done

[root@loaclhost home]# chmod +x /do/file-user.sh
[root@loaclhost home]# ../do/file-user.sh

[root@loaclhost home]# ll /tmp/ | grep ‘file‘
-rw-r--r--.   1 user10 user10     0 8月  16 23:17 file10
-rw-r--r--.   1 user11 user11     0 8月  16 23:17 file11
-rw-r--r--.   1 user12 user12     0 8月  16 23:17 file12
-rw-r--r--.   1 user13 user13     0 8月  16 23:17 file13
-rw-r--r--.   1 user14 user14     0 8月  16 23:17 file14
-rw-r--r--.   1 user15 user15     0 8月  16 23:17 file15
-rw-r--r--.   1 user16 user16     0 8月  16 23:17 file16
-rw-r--r--.   1 user17 user17     0 8月  16 23:17 file17
-rw-r--r--.   1 user18 user18     0 8月  16 23:17 file18
-rw-r--r--.   1 user19 user19     0 8月  16 23:17 file19


2016-9-11第六周作业