第六周作业

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” 博客,谢绝转载!

以上是关于第六周作业的主要内容,如果未能解决你的问题,请参考以下文章

第六周作业

第六周作业

第六周作业

第六周作业

第六周作业

第六周作业