第六周作业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六周作业相关的知识,希望对你有一定的参考价值。
题外话:
1)吐槽一下,作为一个才看到 37 节的人,来做这周的作业,难度可想而知
2)习题中很多所指文件在我的系统上都不存在,所以我会是使用格式近似的文件来作为替代
3)我把第三题和第二题的位置互换了一下,不影响测试
本周作业内容:
1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
思路
1) vim 编辑器内部指令添加
2) 使用 sed 命令添加
先复制文件,Fedora 23 上没有 /etc/rc.d/rc.sysinit 这个文件,我使用 /etc/rc.d/init.d/functions 这个文件来替代
cp /etc/rc.d/init.d/functions /tmp vim /tmp/functions # 然后输入以下内容 :%[email protected]\(^[[:space:]]\+\)@#\[email protected]
退出不保存
现在使用 sed 命令来替换
sed -i -r "s/(^[[:space:]]+)/#\1/g" /tmp/functions
3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
使用 /tmp/functions 作为演示,在第一题中已经被加入 # 号
依旧是两种思路
vim:
:%[email protected]^#\([[:space:]]\+\)@\[email protected]
退出不保存
sed:
sed -i -r "s/^#[[:space:]]+//g" /tmp/functions
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
使用新的 /tmp/functions 作为演示
复制一个新的 functions 到 /tmp
cp /etc/rc.d/init.d/functions /tmp
vim:
:%[email protected]^[[:space:]]\[email protected]@g
退出不保存
sed
sed -i -r "s/^[[:space:]]+//g" /tmp/functions
4、为/tmp/grub.conf文件中前三行的行首加#号;
使用 /tmp/functions 作为演示,先清除掉所有行开头的 # 与空格
sed -i -r "s/^#[[:space:]]*//g" /tmp/functions
vim
:1,[email protected]\(.*\)@#\[email protected]
退出不保存(迷一样的高亮显示
sed
sed -i -r "1,3s/(.*)/#\1/g" /tmp/functions
5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
使用 /etc/yum.repos.d/fedora.repo 复制到 /tmp 作为演示
复制文件
cp /etc/yum.repos.d/fedora.repo /tmp
vim (17行与28行
:%[email protected]\(enabled=\|gpgcheck=\)[email protected]\[email protected]
sed(原来 sed 里面的定界符也是可以随意换
sed -i -r "[email protected](enabled=|gpgcheck=)[email protected]\[email protected]" /tmp/fedora.repo
6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201608300202
7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20160830
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
9、工作日的工作时间内,每两小时执行一次echo "howdy"
我在很早以前就写过关于 Crontab 的博客了,这是链接:http://www.cnblogs.com/divent/p/5743008.html
创建备份需要的文件(夹)
mkdir /backup touch /stats/memory.txt
使用 crontab -e 打开配置文件并编辑
按照题序
0 */4 * * * /bin/cp -a /etc /backup/etc-$(date +\%Y\%m\%d\%H\%M) 0 0 * * 2,4,6 /bin/cp /var/log/messages /backup/messages_logs/messages-$(date +\%Y\%m\%d) 0 */2 * * * /bin/grep "^S" /proc/meminfo >> /stats/memory.txt # 假设工作时间周一至周五 8-12 14-18 0 8-12/2 * * 1-5 /bin/echo "howdy" 0 14-18/2 * * 1-5 /bin/echo "howdy"
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
11、在此目录创建100个空文件:file1-file100
脚本名:mage-test
#!/bin/bash # Auther: divent # 2016-09-11 19:44:14 # mage script test10-11 dirname="testdir-$(date +\%Y\%m\%d\%H\%M)" mkdir /tmp/$dirname for i in {1..100}; do touch /tmp/$dirname/file$i done
12、显示/etc/passw d文件中位于第偶数行的用户的用户名;
思路:
1)使用 sed ,每次输入 2 行,然后删除第一行
sed ‘1~2d‘ /etc/passwd | cut -d ":" -f 1
2)使用 awk,取出偶数行
awk ‘NR%2==0‘ /etc/passwd | cut -d ":" -f 1
3)算法,使用脚本,根据算法限位取出偶数行(假设还不会使用 awk 与 sed
脚本名:mage-test2
#!/bin/bash # Auther: divent # 2016-09-11 20:08:31 # mage script test12 # 获得 /etc/passwd 的最大行 maxline=$(wc -l /etc/passwd | cut -d " " -f 1) # 从 1 循环到最大行 for i in $(seq 1 $maxline); do #取余,用于判断 n=$[ $i%2 ] if [ "$n" -eq "0" ];then #如果是偶数,则显示 i 对应的行数,使用 head 与 tail 来显示对应行,使用 cut 来切割出用户名 echo -e "\n$(head -n $i /etc/passwd | tail -n 1 | cut -d ":" -f 1)" fi done
13、创建10用户user10-user19;密码同用户名;
14、在/tmp/创建10个空文件file10-file19;
15、把file10的属主和属组改为user10,依次类推。
脚本名:mage-test3
#!/bin/bash # Auther: divent # 2016-09-11 21:57:43 # mage script test 13-15 # 创建10到19的循环 for i in $(seq 10 19); do # 创建用户 useradd "user$i" # 设置密码 echo "user$i" | passwd --stdin "user$i" # 创建文件 touch /tmp/file$i # 修改权限 chown "user$i":"user$i" /tmp/file$i done
本文出自 “Divent” 博客,谢绝转载!
以上是关于第六周作业的主要内容,如果未能解决你的问题,请参考以下文章