1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
答:可使用vim的查找替换功能完成;
命令如下:
[[email protected] ~]# cp /etc/rc.d/rc.sysinit /tmp ##复制文件 [[email protected] ~]# vim /tmp/rc.sysinit ##vim编辑该文件
命令结果如下(下图红框为与上图对比效果):
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
答:命令如下
[[email protected] ~]# cp /boot/grub/grub.conf /tmp ##复制文件至/tmp下 [[email protected] ~]# vim /tmp/grub.conf ##vim编辑该文件
结果如下:
3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
答:使用vim编辑器查找替换功能
结果如下:
4、为/tmp/grub.conf文件中前三行的行首加#号;
答:
结果如下:
5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
答:
:%s/enabled=0/enabled=1 ##查找替换"enabled=0"为"enabled=1" :%s/\(gpgcheck=\)0/\11 ##查找替换"gpgcheck=0"为"gpgcheck=1",可使用条件引用
修改"enabled=0"为"enabled=1",命令如下:
(注:下图演示的文件为/etc/yum.repos.d/rhel-source.repo)
结果如下:
修改"enabled=0"为"enabled=1",命令如下:
结果如下:
6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201608300202
答:命令如下:
00 */4 * * * root /bin/usr/tar -cjf /backup/etc-`date +%y%m%d%H%M` /etc
(注:执行计划任务,可直使用crontab -e来编辑。格式为“分 小时 日 月 星期 命令”)
查看计划任务:
7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20160830
答:00 6 * * 2,4,6 root /bin/cp /var/log/messages /backup/messages_logs/messages-`date +%y%m%d`.bak
计划任务如下:
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
答:00 */2 * * * cat /proc/meminfo | grep "^S.*" >> /stats/memory.txt
计划任务入下:
9、工作日的工作时间内,每两小时执行一次echo "howdy"
答:00 */2 * * 1-5 /usr/bin/echo "howdy"
计划任务如下:
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
答:
#/bin/bash export dirtime=`date +%y%m%d%H%M%S` ##定义一个名称为当前时间的变量 mkdir /tmp/testdir-$dirtime ##创建以当前时间为名称的文件夹
结果如下:
11、在此目录创建100个空文件:file1-file100
答:
#/bin/bash export dirtime=`date +%y%m%d%H%M%S` ##定义一个名称为当前时间的变量 mkdir /tmp/testdir-$dirtime ##调用变量创建以当前时间为名称的文件夹 for f in {1..100};do ##循环次数 touch /tmp/testdir-$dirtime/file$f ##在规定的文件夹内创建文件 done
结果如下:(mk已用alias定义,alias=./test1.sh)
12、显示/etc/passw d文件中位于第偶数行的用户的用户名;
答:
#bin/bash export nu=2 ##定义一个变量,作为循环中的对比条件 for idnum in {1..100};do ##循环次数 cat /etc/passwd -n | egrep "\b$nu[[:space:]]\b*" ##输出在passwd文件中以该变量开头且后面跟一个空格的内容 let nu+=2 ##由于要输出passwd文件中所有的偶数,我们让变量自加2 done ##完成循环后退出
结果如下:(mk已用alias定义,alias=./test1.sh)
13、创建10用户user10-user19;密码同用户名;
答:
#/bin/bash export u=10 ##定义一个变量为10 for username in {1..10};do ##循环10次 if id user$u &> /dev/null;then ##条件判断,用于判断用户是否已存在 echo "用户 user$u 存在" else useradd user$u ##若不存在则添加该用户 echo "user$u" | passwd --stdin user$u >> /dev/null ##修改用户密码同用户名 echo "用户 user$u 添加成功,密码同用户名。请及时修改" let u+=1 ##让变量自加1 fi ##条件判断完成 done ##完成循环后退出
14、在/tmp/创建10个空文件file10-file19;
答:
#/bin/bash export i=10 ##定义一个变量为10 for t in {1..10};do ##循环10次 if test -e /tmp/file$i;then ##"test"判断文件是否存在,存在则为真,否则为假 echo "文件已存在" else touch /tmp/file$i ##创建文件 let i+=1 ##让变量自加1 fi ##判断结束 done ##完成循环后退出
结果如下:(mk已用alias定义,alias=./test1.sh)
15、把file10的属主和属组改为user10,依次类推。
答:
#/bin/bash export i=10 ##定义一个变量为10 for t in {1..10};do ##循环10次 chown user$i:user$i /tmp/file$i ##修改文件的属组和属主为user+当前变量 echo "文件user$i 属组属主已修改" let i+=1 ##让变量自加1 done
结果如下:(mk已用alias定义,alias=./test1.sh)