马哥第三次作业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了马哥第三次作业相关的知识,希望对你有一定的参考价值。
1、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
答:
[[email protected] ~]# egrep -o "[[:alpha:]]+\(\)" /etc/rc.d/init.d/functions
checkpid()
run()
pidof()
daemon()
killproc()
pidfileofproc()
pidofproc()
status()
success()
failure()
passed()
warning()
stage()
success()
failure()
passed()
warning()
action()
strstr()
file()
true()
false()
sysctl()
2、使用echo命令输出一个绝对路径,使用grep取出其基名;
答:
[[email protected] ~]# echo /etc/rc.d/init.d/ | egrep -o "[^/]+/?$" | cut -d"/" -f1
init.d
扩展:取出其路径名
[[email protected] ~]# echo /etc/rc.d/init.d/functions | egrep -o "/.*/"
/etc/rc.d/init.d/
3、找出ifconfig命令结果中的1-255之间数字;
答:
[[email protected] ~]# ifconfig | egrep -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"
192
168
1
10
255
255
255
192
168
1
255
64
29
13
206
145
6
73
127
1
255
1
128
4、查找当前系统上没有属主或属组的文件;
答:
[[email protected] ~]# find / -nouser -o -nogroup
find: ‘/proc/2554/task/2554/fd/6’: 没有那个文件或目录
find: ‘/proc/2554/task/2554/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/2554/fd/6’: 没有那个文件或目录
find: ‘/proc/2554/fdinfo/6’: 没有那个文件或目录
/var/spool/mail/mandriva
/home/mandriva
/home/mandriva/.bash_logout
/home/mandriva/.bash_profile
/home/mandriva/.bashrc
进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;
[[email protected] ~]# find / -nouser -o -nogroup -a -atime -3
find: ‘/proc/2596/task/2596/fd/6’: 没有那个文件或目录
find: ‘/proc/2596/task/2596/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/2596/fd/6’: 没有那个文件或目录
find: ‘/proc/2596/fdinfo/6’: 没有那个文件或目录
/tmp/test2017-01-04
/var/spool/mail/mandriva
/var/spool/mail/chen
/home/mandriva
/home/mandriva/.bash_logout
/home/mandriva/.bash_profile
/home/mandriva/.bashrc
/home/chen
/home/chen/.bash_logout
/home/chen/.bash_profile
/home/chen/.bashrc
/home/chen/.bash_history
5、查找/etc目录下大于1M,且类型为普通文件的所有文件;
答:
[[email protected] ~]# find /etc/ -size +1M -type f -ls
33975533 6824 -r--r--r-- 1 root root 6984832 6月 20 2016 /etc/udev/hwdb.bin
67851855 3772 -rw-r--r-- 1 root root 3858924 11月 21 2015 /etc/selinux/targeted/policy/policy.29
6、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
答:
[[email protected] ~]# find /etc/init.d/ -perm -555 -ls
33689619 0 drwxr-xr-x 2 root root 66 6月 20 2016 /etc/init.d/
33975975 4 -rwxr-xr-x 1 root root 2989 9月 16 2015 /etc/init.d/netconsole
33975976 8 -rwxr-xr-x 1 root root 6630 9月 16 2015 /etc/init.d/network
7、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;
答:
[[email protected] ~]# useradd lx
[[email protected] ~]# touch /etc/test
[[email protected] ~]# chown lx.lx /etc/test
[[email protected] ~]# find /etc -mtime -7 -not \( -user root -o -user hadoop \) -ls
34534602 0 -rw-r--r-- 1 lx lx 0 1月 4 21:41 /etc/test
8、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
答:
(以下实验在CentOS 6中完成,CentOS 7 里没有此文件。)
方法一:使用VIM替换
[[email protected] ~]# cp /etc/rc.d/rc.sysinit /tmp
[[email protected] tmp]# vim rc.sysinit
%s/^[[:space:]]/#&/
方法二:使用sed替换
[[email protected] tmp]# sed ‘s/^[[:space:]]/#&/‘ /tmp/rc.sysinit
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg‘s bcheckrc.
#
HOSTNAME=$(/bin/hostname)
set -m
if [ -f /etc/sysconfig/network ]; then
# . /etc/sysconfig/network
fi
9、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
答:
方法一:使用VIM替换
[[email protected] ~]# vim /tmp/rc.sysinit
%s/^#[[:space:]]\+//
方法二:使用sed替换
[[email protected] ~]# sed ‘s/^#[[:space:]]\+//‘ /tmp/rc.sysinit
#!/bin/bash
#
/etc/rc.d/rc.sysinit - run once at boot time
#
Taken in part from Miquel van Smoorenburg‘s bcheckrc.
#
HOSTNAME=$(/bin/hostname)
10、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
答:
方法一:使用VIM替换
[[email protected] ~]# cp /etc/yum.repos.d/CentOS-Media.repo /tmp
[[email protected] ~]# vim /tmp/CentOS-Media.repo
%s/enabled=0/enabled=1/g
方法二:使用sed替换
[[email protected] ~]# sed ‘/^enabled=/{s/=0$/=1/}; /^gpgcheck=/{s/=0$/=1/}‘ /tmp/CentOS-Media.repo
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
11、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20161202
答:
[[email protected] ~]# mkdir -p /backup/messages_logs
[[email protected] ~]# crontab -e
# 每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中
0 0 * * 2,4,6 /bin/cp -a /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`
~
~
~
~
~
"/tmp/crontab.CrVF1F" 3L, 171C
12、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
答:
[[email protected] ~]# mkdir /stats
[[email protected] ~]# crontab -e
#每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
0 */2 * * * /bin/grep ‘^S‘ /proc/meminfo > /stats/memory.txt
13、写一个脚本创建10用户user10-user19;密码同用户名;
答:
vim useradd.sh
#!/bin/bash
#
if [ ! $UID -eq 0 ]; then
echo "此脚本只允许root管理员执行"
exit 1
fi
for username in {10..19};do
if id user$username &> /dev/null; then
echo "此用户 user$username 已存在"
else
useradd user$username &> /dev/null
if [ $? -eq 0 ]; then
echo "user$username" | passwd --stdin user$username &> /dev/null
echo "新建用户 user$username 成功"
fi
fi
done
~
[[email protected] ~]# bash -n useradd.sh
[[email protected] ~]# bash useradd.sh
新建用户 user10 成功
新建用户 user11 成功
新建用户 user12 成功
新建用户 user13 成功
新建用户 user14 成功
新建用户 user15 成功
新建用户 user16 成功
新建用户 user17 成功
新建用户 user18 成功
新建用户 user19 成功
以上是关于马哥第三次作业的主要内容,如果未能解决你的问题,请参考以下文章