學習筆記(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/*


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章