linux学习考试复习笔记

1.将用户涉及到的两个配置文件(详细信息与密码) 合并成一个文件,然后排序去冗输出为  简拼-1.txt 。
  #cat  /proc/meminfo  /proc/cpuinfo  /proc/cpuinfo  /proc/meminfo | sort | uniq > test2.txt 
  #less test2.txt  
2.	将简拼-1.txt的文件内容再次追加写入 简拼-1.txt,然后将该文件的读写权限设置为 rw-rwxr-- , 并显示确认。
#cat jianpin.txt > tmp.txt
# cat tmp.txt >> jianpin.txt
# chmod 674  quhaiping.txt
$ 		$ll  quhp    //查看 文件 test 的权限  -rw-r--r-- 

3.	设置全局命令别名 简拼,其功能是 将当前系统所支持的所有文件系统的名字信息
重定向为 简拼-3.txt 。
查看系统支持的文件系统类型 
 	#cd /lib/modules/2.6.35.6-45.fc14.i686/kernel/fs
# ls 
# cd -
/root
    查看proc 文件系统  
  
#ls>jianpin-4.txt
4.	显示能够登录(bash)的所有用户的详细信息,保存到文件 简拼-4.txt 。
# cat /etc/passwd|cut -d':' -f1|grep o>jianpin-4.txt
  #cut -d':'  -f1  /etc/passwd    回车符分隔显示所有用户
  #cut -d':'  -f2  /etc/passwd 
  #cut -d':'  -f4  /etc/passwd    显示不同的列
#cut -d':'  -f1  /etc/passwd | xargs -n 1  finger  > jianp_4.txt    显示所用用户
5.信息一条命令获取网卡eth8 (如HWaddr 00:0C:29:38:0C:5A) 的MAC地址(00:0C:29:38:0C:5A)。
问题: 需要获取当前机器的eth8 d IP(192.168.23.189) 并进一步获取Ip的网段前缀(192.168.23.) 
   #ifconfig
   #ifconfig  eth9
   #ifconfig  eth9 | grep "inet addr" 
   #ifconfig  eth9 | grep "inet addr"  | gawk '{print $2}'  
   #ifconfig  eth9 | grep "inet addr"  | gawk '{print $2}'  | cut -c6-20 
   #ifconfig  eth9 | grep "inet addr"  | gawk '{print $2}'  | cut -c6-16
5.	将命令wget 所属软件包中包含的所有文件信息保存为简拼-6.txt,并通过rpm 命令将其删除.。
rpm  包的删除
#rpm  -e  vim-X11(包名)
6.	设置变量name,其值为“名字全拼+系统的版本号”,并显示该变量的值。
变量的设置:   注意空格报错
# var1=“lang is $LANG”    
# var2=‘lang is $LANG’      //注意区分
# echo $var1
# echo $var2
7.	从设备zero 拷贝1G数据到设备null(bs=4M),并将记录时间保存到文件 简拼-8.txt 。
采用dd 命令测试并记录 sdb1 分区的读写性能   分别读写2G
#  fdisk  /dev/sdb
m for help  p for print  n for add   w for save
输入n 回车; 输入p 回车 选择primary ; 输入1 回车 确认 分区号 ; 输入 起始位置,直接回车; 输入分区大小 +3068M 回车;
输入p 回车确认创建成功; 输入w 回车 将磁盘信息写回
#  time dd if=/dev/sdb1 of=/dev/null  bs=1M  count=2048
记录分区读测试所得时间为 time_read_dd = ?
if = input file
of = output file
bs = block size
count   数量
 #  time dd if=/dev/zero  of=/dev/sdb1 bs=1M  count=2048
记录分区写测试所得时间为 time_write_dd = ?

 二、磁盘与文件系统(15分)。
1. 在磁盘sdb,划分一个1G的普通分区sdb1,再划分一个3G的swap分区sdb2,在退出之前显示两个分区信息并截屏保存为 2-简拼-1.png ,下面步骤依次截图保存;

在sdb上创建一个1G的分区 sdb1  
#  fdisk  /dev/sdb
m for help  p for print  n for add   w for save
输入n 回车; 输入p 回车 选择primary ; 输入1 回车 确认 分区号 ; 输入 起始位置,直接回车; 输入分区大小 +3068M 回车;
输入p 回车确认创建成功; 输入w 回车 将磁盘信息写回
创建swap设备
#fdisk  /dev/sdb
n  p   1   +3068M     //创建sdb1
t    修改系统ID
1
82   改成swap的ID     //从linux分区切换成swap设备
w
#partprobe              //让内核更新分区表
#mkswap   /dev/sdb1     构建swap格式

挂载上
# free
#swapon   /dev/sdb1
#free

#swapon –s  列出目前使用的swap设备有哪些?
2. 将所有磁盘与分区的详细信息 重定向保存为 文件 2-简拼.txt ;
显示 sda sdb 两块磁盘的详细信息
   #  fdisk –l >zhuj.txt
3对分区sdb1 做ext4文件系统,并挂载到目录/mnt,  显示当前挂载分区的大小与类型,并追加写到2-简拼.txt
把分区sdb1 格式化成ext3 文件系统
   #  mkfs -t ext3  /dev/sdb1
   
  把分区挂载到指定目录下
   #  mkdir –p /mnt/name  
   #  mount  /dev/sdb1  /mnt/name   

 查看新挂载的分区 ,注意其大小变化, 因为其格式化文件系统占用了一些磁盘空间
  # cd /mnt/name 
  # df –h 
  # df –h >zhuj.txt
cat zhuj.txt

   # df  -aT        比较这两个参数的区别
   # mount
5.   在 / 目录 也就是 sda 上进行 下面操作
     # df -aTh     确认 / 目录在 挂载在 sda 磁盘上
     # mkdir  -p   /mnt/name 
     # mkdir -p   /mnt/name/test_sda  

     # cp  /pro/cpuinfo    /mnt/name/cpu_sda 

     # dd if=/dev/zero  of=/mnt/name/test_sda/256M   bs=1M  count=256

     # ll  /mnt/name         查看这个目录的文件与子目录
     # df -h  /mnt/name      显示的是  sda磁盘的可用容量
     # du  -ah  /mnt/name    显示的是  这个目录及子目录的大小  256M左右
4.	将分区sdb2添加成swap设备, 列出当前swap设备,追加保存到 2-简拼.txt ;
创建swap设备 
  #fdisk  /dev/sdb  
     n  p   1   +3068M     //创建sdb1
     t    修改系统ID  
     1
     82   改成swap的ID     //从linux分区切换成swap设备
     w
  #partprobe              //让内核更新分区表
  #mkswap   /dev/sdb1     构建swap格式

挂载上
   # free
   #swapon   /dev/sdb1 
   #free 	

 #swapon –s  列出目前使用的swap设备有哪些?
5.查看当前swap设备的使用情况,追加保存到 2-简拼.txt 。

三、Shell编程(15分)。
 1. 实现shell脚本 3_全拼.sh,功能为一个简单的四则计算器,功能如下:
1) 循环交互式要求输入三个变量  num1 oper num2 其中oper 可以为 + - * / 
2)  循环的终止条件是当且仅当  这两个数值 均为 0  输出END。 
3)  根据oper分别完成运算  如  2  +  3    则输出   2+3 =5 ; 再继续要求输入三个变量,再如 3 * 4 则输出 3 * 4 = 12; 如果oper 不属于这四种运算符则输出 Wrong Oper 之后继续要求输入。  

2. 运行脚本, 依次计算四次  10+学号  学号-学号  学号#学号  0+0 。
3. 将这脚本的运行过程依次截图保存为3-简拼-?.png 。
 vim 
	a
chmod + x 1.sh
./1.sh
shell脚本代码如下:
#!/bin/bash
read -p "input num1:" a
read -p "input num2:" b
read -p "input operator:" o
case $o in
+) let "res=a + b"
echo $res;;
-) let "res=a - b"
echo $res;;
/) awk 'BEGIN{printf "%.2f\n",'$a'/'$b'}';;
*) let "res=a * b"
echo $res;;
esac 
exit 0

唐:
#!/bin/bash

read -p "please input num1  " num1
read -p "please input flag  " flag
read -p " please input num2  " num2

case $flag in
        '+')
                echo "$num1 $flag $num2=$(($num1+$num2))"
                ;;
        '-')
                echo "$num1 $flag $num2=$(($num1-$num2))"
                ;;
        '/')
                echo "$num1 $flag $num2=$(($num1/$num2))"
                ;;
        *)
                echo "$num1 $flag $num2=$(($num1*$num2))"
                ;;
esac
exit 0
四、批量用户添加与删除(22分)。
1. 实现shell脚本  4_学号.sh, 功能如下:
1)脚本不需要配置文件,也不会生成任何配置文件;     
2)命令行输入四个参数:前缀   位数   开始序号   终止序号 ;
3) 利用这四个参数构建循环;
4) 在循环中采用 useradd批量添加用户,使用passwd 命令确定用户密码与用户名相同 。
2. 运行脚本   交互时输入 前缀=全拼  位数=5   开始序号=98  终止序号=102 ,将脚本的运行情况截图保存为 4-简拼-1.png 。
3. 确认用户添加成功,复制passwd 到工作目录  passwd_add.txt作为验证。  
4. 一个复杂命令删除刚刚创建成功的这些用户,将命令的运行情况截图保存为 4-简拼-2.png
5. 确认用户删除成功,复制passwd 到工作目录  passwd_del.txt作为验证。
#!/bin/bash 

accountfile="user:passwd"

if [ -f "$accountfile" ]; then
	mkdir –p "$accountfile"`date +%Y%m%d`

	mv $accountfile "$accountfile"`date +%Y%m%d`
fi

touch "$accountfile"

read -p "qianzhui: "  username_start 
read -p "weishu: "  nu_nu
read -p "star num: " nu_start
read -p "shuliang: " nu_amount

nu_end=$(($nu_start+$nu_amount-1))

for (( i=$nu_start; i<=$nu_end; i++ ))
do
 	nu_len=${#i}
	nu_diff=$(($nu_nu-$nu_len))
	if [ "$nu_diff" != "0" ]; then
		nu_nn=00000000000
		nu_nn=${nu_nn:1:$nu_diff}
	fi

	account="$username_start""$nu_nn""$i"
	echo "$account":"$account" >> $accountfile
done

cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd 

pwunconv
chpasswd < "$accountfile"
pwconv

echo "OK"

exit 0

#cat /etc/passwd    确认
#cut -d':' -f1 user:passwd  | xargs -n 1  userdel -r 
#cat /etc/passwd   确认四个用户已成功删除



用户的批量添加

************第一种方法有配置文件
采用 newusers 批量创建用户 
 .1  #groupadd  -g 800  linux2012
 .2  #gvim  student.txt 
t001001:x:801:800::/home/t001001:/bin/bash
t001002:x:802:800::/home/t001002:/bin/bash
t001003:x:803:800::/home/t001003:/bin/bash
t001004:x:804:800::/home/t001004:/bin/bash
.3  #gvim passwd.txt
t001001:t001001
t001002:123456
t001003:123456
t001004:123456  

  .4 #newusers  < student.txt

  .5 #pwunconv   
      #chpasswd  < passwd.txt
      #pwconv

  .6 #cat /etc/passwd  
      #cat /etc/shadow    确认四个用户已成功创建

****************第二种方法无配置文件
7 利用 useradd  与 passwd --stdin  批量创建用户脚本
 7.1  #gvim  account1.sh
#!/bin/bash 
if [ ! -f "$1" ]; then 
echo "$1 no exist!" 
exit 1
fi
usernames=`cat $1`
for username in $usernames 
do
useradd $username
echo $username | passwd --stdin  $username 
done

exit 0       

 7.2 #gvim std.txt
std001
std002
std003
std004

  7.3 #chmod +x *.sh 
      #./account1.sh   std.txt    成功创建std001-004, 可去 /etc/passwd 确认 
      #./account1.sh   std.txt2   报告 该文件不存在 
      #./account1.sh

  7.4  #gvim  delaccount1.sh
#!/bin/bash

if [ ! -f "$1" ]; then 
echo "$1 no exist!"
exit 1
fi
usernames=`cat $1`
for username in $usernames
do
echo "$username will be deleted!"
userdel -r  $username
done

exit 0  
  

   7.5  #chmod +x *.sh
#./delaccount1.sh  std.txt   将这四个用户删除      

***********************第三种方法
只需要输入 四个产生 前缀、位数、首位、数量 就可以批量创建 
 #gvim  account2.sh
#!/bin/bash 

accountfile="user:passwd"

if [ -f "$accountfile" ]; then
mv $accountfile "$accountfile"`date +%Y%m%d`
fi

touch "$accountfile"

read -p "qianzhui: "  username_start 
read -p "weishu: "  nu_nu
read -p "star num: " nu_start
read -p "shuliang: " nu_amount

nu_end=$(($nu_start+$nu_amount-1))

for (( i=$nu_start; i<=$nu_end; i++ ))
do
  nu_len=${#i}
nu_diff=$(($nu_nu-$nu_len))
if [ "$nu_diff" != "0" ]; then
nu_nn=00000000000
nu_nn=${nu_nn:1:$nu_diff}
fi

account="$username_start""$nu_nn""$i"
echo "$account":"$account" >> $accountfile
done

cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd 

pwunconv
chpasswd < "$accountfile"
pwconv

echo "OK"

exit 0

posted @ 2015-12-30 11:59  Joe.Smith  阅读(250)  评论(0编辑  收藏  举报