学习笔记(17)

1.ping -c1 -W2  2秒没有收到响应报则认为网络不通,默认5秒

2.seq 2 3 10(echo {2..10..3})  3为步进值 

3.for num in "/root/bin/*.sh"; do echo the filename is $num; done 支持通配符

4.seq -s + 100 |bc   -s 指定连接符号为+

5.if cmd1 &> /dev/null; then  if后面判断接命令可以判断命令的执行结果

6.脚本中使用wait,可以直接退出  { if ping -c1 -W1 .... fi ; } &  done wait wait 单独一行,补充

  for i in {1..254}; do

      { if ping -c1 -W1 $net.$i &> /dev/null; then

             echo $net.$i >> hostlist.txt

        fi;  } &  & 表示把执行放到后台

  done

  wait  wait 不加的话需要输入回车后才退出至命令提示符

7.let i++ 返回$? 为1 ,let ++i 返回$? 为 0 所以使用++i会更保险

8.n=10; for i in seq 1 $n

9.eval 可以先扫描后面是否有变量,若有可以替换成值,for i in `eval {1..$n}`; 没有eval变量会有问题

1.colror=$[RANDOM%7+31]  随机取颜色

11.openssl rand -base64 20 | tr -dc '[:alpha:]' |head -c 8  

12.echo -e "\033[1;41m  \033[0m\033[1;43m  \033[0m" 打印背景颜色(象棋背景色)

13.while : ; do

    echo task

    sleep 420

   done


   while : 等价于 while true

14.kill(killall) -0 httpd 可以探测服务是否启动成功 -0:表示信号探测,结合sleep 来指定多少秒探测

15.while read line; do ... done </path/to/file

   while read -p "Input a number:" num; do echo $num ;sleep 1; done

   df | while read disk;do

       if $disk |grep "^/dev/sd" > /dev/null; then

           usage=`echo $disk |sed -r 's@.* ([[:digit:]]+)%@\1@'`

           ...

       fi

   done

16.help for  可以查看for循环的使用方法,其他的都可以使用help 来查看帮助

17.for ((sum=0,i=1;i<=100;i++)); do

       let sum+=i

   done

   echo sum=$sum

18.允许选择的文本块

   v 面向字符

   V 面向行

   ctrl-v 面向块

19.PS3="Please choose the menu(1-4):"

   select menu in baoyu yanwo renshen jitang; do \

    case $menu in

    baoyu)

    echo $menu price is 1000

    break

    ;;

    yanwo)

    echo ...

    break

    ;;

    *)

    esac

   done


   用户输入保存在$REPLY中

20.PS2 是多行重定向的提示符,PS1 是prompt 提示符, PS3是select 的提示符

    PS3="Please choose a number:"

    select num in `seq 3`; do

       case $num in 

       1)

            echo "Number 1"

            ;;

        2)

        echo "Number 2"

        ;;

        3)

        echo "Number 3"

        ;;

        esac

    done

21.kill -l 查看信号(trap -l)

22.trap 'echo press ctrl+c' int     可以使用2代替int信号

   for ((i=0;i<10;i++)); do

       echo $i

       sleep 0.5

   done

   trap -p  打印自定义的-p

   trap '' 2 忽略你的ctrl +c 操作

   9信号不能被捕获自定义 ,如 trap '' 9,定义后依旧可以使用kill -9 杀掉进程无效

23.压缩文件是看后缀的,所以要先修改后缀才能解压缩,/boot/initramfs... 内核文件要先改后缀,file 查看类型

   cpio -tv < file(cpio文件类型)

   cpio -idv 

   initramfs 是放辅助性的驱动模块文件,模拟文件系统较模拟磁盘效率高 intrd(centos 5)

24./boot/grub/grub.conf 加载/boot文件系统的文件,要加载根文件系统使用initramfs,该文件正好在/boot下面

   /文件系统需要驱动,而/驱动在 /lib下面

25.md5sum vmlinuz /boot/vmlinuz  比较hash值来判断内容是否相同

26.vmlinuz文件是从光盘文件拷贝过去的,initramfs文件是系统安装完之后生成的,使用mkinitrd来生成

   #mkinitrd /boot/initramfs-`username -r`.img  `uname -r`

   chroot /mnt/sysimage 切换根目录

   再次执行 # mkinitrd /boot/initramfs-`username -r`.img  `uname -r` 不切换根的话找不到mkinitrd 命令

   sync 

   sync  同步到磁盘,以防万一

实验 破坏/boot/initramfs文件的修复方法

实验  删除/boot/vmlinuz文件的修复方法

删除/boot所有的文件,不包括目录,修复

rm -f /boot/*


猜你喜欢

转载自blog.51cto.com/9980200/2114359