一、系统故障排除:
1.bash损坏
    1>使用系统安装光盘进入救援模式
使用linux rescue
    2>挂载光盘,重装bash软件包
mount /dev/hdc /mnt/source
rpm -i --replacepkgs /mnt/source/Server/bash-3.2-32.el5.i386.rpm --root=/mnt/sysp_w_picpath
2.grub损坏
    1>切换root目录,重新安装grub
chroot /mnt/sysp_w_picpath
grub
root (hd0,0)
setup (hd0)
quit
    2>编辑grub配置文件
vim /boot/grub/grub.conf
default 0
timeout 3
title Redhat 5.8
   root (hd0,0)
   kernel /vmlinuz-2.6.18-308.el5 quiet
   initrd /initrd-2.6.18-308.el5.img
3.系统自动重启
    1>配置文件/etc/inittab文件错误
vim /etc/inittab    //编辑更正可能的错误
vim /etc/rc.sysinit //编辑更正可能的错误
vim /etc/rc.d/rc3.d/S99local //编辑更正可能的错误
    2>添加了自动重启的任务计划
crontab -e   //删除该任务计划
4.root密码未知
    passwd    //重置密码
二、创建一个大小为10G的RAID5设备,其chuck大小为32k,此设备开机自动挂载至/backup目录
    1>创建4个5G的磁盘类型为fd的分区
fdisk /dev/sda 。。。
partprobe /dev/sda  //重新加载分区信息
    2>创建Raid5设备并查看
mdadm -C /dev/md0 -a yes -c 32 -n 3 -x 1 -l 5 /dev/sda{5,6,7,8}
mdadm -D /dev/md0   //查看
    3>开机自动挂载
mke2fs -j /dev/md0
vim /etc/fstab
   /dev/md0   /backup   ext3   defaults 0 0
mkdir /backup
mount -a
三、创建一个由2个物理卷组成的大小为20G的卷组myvg,要求PE大小为8M,在卷组中创建一个大小为5G的逻辑卷lv1,此逻辑卷可以开机自动挂载到/users目录
    1>创建2个10G的分区类型为8e的分区
fdisk /dev/sda 。。。
partprobe /dev/sda  
    2>创建物理卷
pvcreate /dev/sda9 /dev/sda10
    3>创建卷组myvg
vgcreate myvg /dev/sda9 /dev/sda10
vgchange -s 8M myvg //更改PE为8M
    4>创建5G的逻辑卷并开机挂载
lvcreate -L 5G -n lv1 /dev/myvg
mke2fs -j /dev/myvg/lv1
vim /etc/fstab
   /dev/myvg/lv1   /users   ext3    defaults  0 0
mkdir /users
mount -a
四、用户创建和更改
    1>新建系统用户组mysql;新建系统用户mysql,要求其没有家目录且shell为/sbin/nologin
groupadd -r mysql
useradd -r -M -s /sbin/nologin -g mysql mysql
    2>新建GID为600的组magedu;新建用户gentoo,其家目录为/users/gentoo,密码和用户名相同
groupadd -g 600 magedu
useradd -d /users/gentoo gentoo
echo gentoo | passwd --stdin gentoo
    3>新建用户centos,其家目录为/users/centos,密码与用户名相同
useradd -d /users/centos centos
echo centos | passwd --stdin centos
    4>新建用户www,其家目录为/users/www;删除www用户,但保留其家目录
useradd -d /users/www www
userdel www
    5>用户gentoo和centos均以magedu为其附加组
usermod -a -G magedu gentoo
usermod -a -G magedu centos
五、创建一个2G分区,文件系统为ext3,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的3%,可以开机自动挂载至/data目录,挂载时需要使用卷标引用
    1>创建要求的分区
fdisk /dev/sda 。。。
mke2fs -l 1024 -m 3 -L DATA -j /dev/sda11
    2>使开机自动挂载
vim /etc/fstab
   LABEL=DATA /data   ext3  defaults  0 0
mkdir /data
mount -a
六、缩减前边创建的逻辑卷lv1的大小至2G,要求gentoo等家目录不能丢失;缩减完成后以gentoo的身份下载指定文件至gentoo的家目录
    1>缩减逻辑卷lv1至2G
umount /dev/myvg/lv1 
e2fsck -f /dev/myvg/lv1    //强制检测
resize2fs /dev/myvg/lv1 1G //缩减逻辑边界至1G
lvreduce -L 1G /dev/myvg/lv1 //缩减物理边界至1G
mount -a
    2>切换到gentoo下载文件
su - gentoo
wget ftp://172.16.0.1/Sources/httpd-2.2.22.tar.bz2
七、复制文件/var/log/messages至/data目录,其属主为root用户,属组为root组;要求此文件可以被任何人读取,可以被gentoo用户和magedu组读写,但centos没有任何访问权限
    1>复制指定文件查看属组属主信息
cp /var/log/messages /data 
ll /data
chown root:root /data/messages
    2>使用acl重新挂载
vim /etc/fstab
   LABEL=DATA   /data   ext3  defaults,acl   0 0
mount -o remount /data
    3>设置权限
chmod 644 /data/messages
setfacl -m g:magedu:rw- /data/messages //设置magedu组读写权限
setfacl -m u:centos:--- /data/messages //设置centos用户无任何权限
getfacl /data/messages //查看acl设置
八、配置yum源,并使用yum安装软件包
    1>配置yum源
vim /etc/yum.repos.d/loacl.repo
   [repo1]
   name=Server
   baseurl=http://172.16.0.1/yum/Server
   gpgcheck=0
   [repo2]
   name=VT
   baseurl=http://172.16.0.1/yum/VT
   pgpcheck=0
   。。。
    2>使用yum安装软件包
yum install mysql-server httpd
九、下载并编译安装vsftpd,实现匿名用户可以上传文件至/var/ftp/incoming目录中。而且可以删除文件或重命名文件,也可以创建子目录
    1>下载并编译安装
wget ftp://172.16.0.1/pub/Sources/vsftpd/vsftpd-2.3.5.tar.gz
tar xf vsftpd-2.3.5.tar.gz
cd vsftpd-2.3.5
make && make install
    2>编辑配置文件
mkdir /etc/vsftpd
cp vsftpd.conf /etc/vsftpd
vim /etc/vsftpd/vsftpd.conf
   anonymous_enable=YES
   write_enable=YES
   anon_upload_enable=YES
   anon_mkdir_write_enable=YES
   anon_other_write_enable=YES
mkdir -p /var/ftp/incoming
chmod 777 /var/ftp/incoming
十、新建目录/backup/test,其属组为magedu,且此组具有读写权限,其他用户没有任何权限;magedu组成员在此目录中创建的文件的属组都是magedu,且magedu组中每个成员只能删除自己的文件
    1>创建目录,并指定属组
mkdir /backup/test
chown :magedu /backup/test
    2>更改权限
chmod 770 /backup/test
chmod o+t /backup/test
chmod g+s /backup/test
十一、配置内核参数,允许在不同网络接口间转发数据包,且重启后不失效
    1>编辑配置文件
vim /etc/sysctl.conf
   net.ipv4.ip_forward = 1
sysctl -p    //重新读取配置文件
十二、配置任务计划每隔两天在凌晨3点20分备份依次/etc目录,备份文件存放至/backup目录,文件名形如:etc-2012-07-01.tar.bz2
    1
   

十三、使用find命令完成以下任务
    1>找到/etc目录中属于root用户且至少7分钟没有访问过的普通文件,并讲他们复制到/tmp/test目录,/tmp/test为/users/test的链接文件
ln -s /users/test /tmp/test
find /etc -user root -amin +7 -exec cp {] /tmp/test \;
    2>找到/users目录下所有没有属主且没有属组的文件,并将其属主修改为gentoo,将其属组修改为magedu
find /users -nouser -nogroup -exec chown gentoo:magedu {} \;
十四、为逻辑卷lv1创建快照lv1_snap,要求此卷只读且大小为1G,而后通过此卷将数据备份至/backup目录归档压缩存放,备份文件名为users.tar.bz2
    1>创建逻辑卷lv1的快照
lvcreate -L 1G -n lv1_snap -s -p r /dve/myvg/lv1
    2>归档压缩
mount /dev/myvg/lv1_snap /mnt
tar jcf /backup/user.tar.bz2 /mnt/*
十五、配置本机eth0网卡的第二个IP地址,配置静态路由,要求重启后可以生效
    1>配置第二个IP地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
   IPADDR=192.168.1.19
   NETMASK=255.255.255.0
    2>配置静态路由
vim /etc/sysconfig/network-scripts/route-eth0
   10.0.0.0/8 via 192.168.1.254
十六、为grub的编辑功能设置密码,密码以密文格式存储,且密码为magedu
    1>生成md5加密密文
grub-md5-crypt
    2>把生成密文添加到grub.conf文件
vim /boot/grub/grub.conf
   password --md5 $1$figqi0$Qfytge5dTOatAIjUh3qMo/ //添加在第一个title前边
十七、写一个脚本实现以下功能
1) 使用函数实现:
   判断一个用户是否存在,用户名通过参数传递而来;
   如果存在,就显示此用户的shell和UID
   如果不存在,就说此用户不存在;
2) 提示用户输入用户名,而后将其传递给上面的函数;
3) 判断结束后不退出,而是提示用户可继续输入其它用户名,或输入(quit)退出;
    vim 17.sh
    #!/bin/bash
    # show somthing
    YN() {
id $1 &> /dev/null && echo -e "$1 shell:`grep "^$1\>" /etc/passwd | cut -d: -f7`\n$1 UID:`id -u $1`" || echo "No such user"
    }
    read -p "In put the username: " MYUSER
    while [[ $MYUSER != quit ]];do
    YN $MYUSER
    read -p "You can input agin or quit to exit: " MYUSER
    done
十八、写一个脚本实现以下功能
1) 显示一个菜单给用户:
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
q|Q) quit.
2) 当用户给定选项后显示相应的内容;
3) 每次执行完成后不退出脚本,而是提示用户可以继续查看其它信息;直到用户键入q、Q、quit或QUIT退出;
4) 如果用户给出的不是菜单中可用的选项,则告诉用户选项错误,需要重新选择;
vim 18.sh
#!/bin/bash
# show somthing
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
q|Q) quit.
EOF
read -p "Input the option: " COS
while true;do
    case $COS in
d|D)
    df -h ;;
m|M)
    top -n1 | grep Mem ;;
s|S)
    top -n1 | grep Swap ;;
q|Q)
    echo quit.
    exit ;;
*)
    echo -n "Error," ;;
esac
read -p "Error,please input agin: " COS 
done
十九、写一个脚本实现以下功能
1) 删除/dev/sdb磁盘上的所有分区;
a) 先判断/dev/sdb磁盘设备是否存在;如果不存在,就退出脚本;
b) 再判断此设备上是否有分区处于挂载使用状态,如果是,先强行卸载之;
c) 在删除之前,请用户先确认;
2) 在/dev/sdb上创建3个分区:
a) sdb1大小为50M;
b) sdb2大小为200M;
c) sdb3大小为64M; 此分区以后要做为交换分区使用;
注意:创建结束后要让系统重新读取此设备上的分区表;
3) 为上述的分区创建文件系统:
a) sdb1为ext2; 
b) sdb2为ext3;
c) sdb3为swap;
4) 挂载上述文件系统:
a) sdb1挂载至/mnt/boot;
b) sdb2挂载至/mnt/sysroot;
注意:挂载点须事先存在,否则,请在脚本中自行创建;
vim 19.sh
#!/bin/bash
# create disk
read -p "Input the disk: " D
! fdisk -l 2> /dev/null | grep $D &> /dev/null && echo "No such disk." && exit || read -p "Are you sure $D? yes|no: " COS
[[ $COS == yes ]] || exit
MD=`mount | grep $D | cut -d' ' -f1`
for I in $MD;do
    fuser -km $I
    umount $I
done
dd if=/dev/zero of=$D bs=512 count=1 &> /dev/null
fdisk $D &> /dev/null << EOF
n
p
1
 
+50M
n
p
2
 
+200M
n
p
3
 
+64M
t
3
82
w
EOF
partprobe $D
sleep 2
mke2fs ${D}1 &> /dev/null && mke2fs -j ${D}2 &> /dev/null && mkswap ${D}3 &> /dev/null
[ -e /mnt/boot ] || mkdir /mnt/boot
mount ${D}1 /mnt/boot
[ -e /mnt/sysroot ] || mkdir /mnt/sysroot
mount ${D}2 /mnt/sysroot
echo OK
二十、写一个脚本完成如下功能
1) 显示当前系统上每一个进程及其进程号,而后提示用户输入一个进程号
a) 如果用户输入的进程号错误,而说明其错误,并提醒用户重新输入;
2) 显示用户所先进程的state, PPID和VmRSS及期对应的值;
vim 20.sh
#!/bin/bash
# show somthing
ps -eo comm,pid
read -p "Input a pid: " COS
while true;do
    if ps -eo pid | grep "\<$COS\>" &> /dev/null ;then
        VAR=`cat /proc/$COS/status | sed -n '/State/p ; /PPid/p ; /VmRSS/p'`
        echo "$VAR"
    elif [[ $COS == quit ]] ;then
        exit
    else
        echo -n "Error,"
    fi
    read -p "Input agin or quit to exit: " COS
done