1、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
答:
[root@localhost ~]# 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取出其基名;
答:
[root@localhost ~]# echo /etc/rc.d/init.d/ | egrep -o "[^/]+/?$" | cut -d"/" -f1
init.d
扩展:取出其路径名
[root@localhost ~]# echo /etc/rc.d/init.d/functions | egrep -o "/.*/"
/etc/rc.d/init.d/
3、找出ifconfig命令结果中的1-255之间数字;
答:
[root@localhost ~]# 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、查找当前系统上没有属主或属组的文件;
答:
[root@localhost ~]# 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天内曾被访问过的文件或目录;
[root@localhost ~]# 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,且类型为普通文件的所有文件;
答:
[root@localhost ~]# 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/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
答:
[root@localhost ~]# 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的文件;
答:
[root@localhost ~]# useradd lx
[root@localhost ~]# touch /etc/test
[root@localhost ~]# chown lx.lx /etc/test
[root@localhost ~]# 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替换
[root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp
[root@localhost tmp]# vim rc.sysinit
%s/^[[:space:]]/#&/
方法二:使用sed替换
[root@localhost 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替换
[root@localhost ~]# vim /tmp/rc.sysinit
%s/^#[[:space:]]\+//
方法二:使用sed替换
[root@localhost ~]# 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替换
[root@localhost ~]# cp /etc/yum.repos.d/CentOS-Media.repo /tmp
[root@localhost ~]# vim /tmp/CentOS-Media.repo
%s/enabled=0/enabled=1/g
方法二:使用sed替换
[root@localhost ~]# 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
答:
[root@localhost ~]# mkdir -p /backup/messages_logs
[root@localhost ~]# 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文件中
答:
[root@localhost ~]# mkdir /stats
[root@localhost ~]# 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
~
[root@localhost ~]# bash -n useradd.sh
[root@localhost ~]# bash useradd.sh
新建用户 user10 成功
新建用户 user11 成功
新建用户 user12 成功
新建用户 user13 成功
新建用户 user14 成功
新建用户 user15 成功
新建用户 user16 成功
新建用户 user17 成功
新建用户 user18 成功
新建用户 user19 成功