1. 程式人生 > >學習筆記(17)

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


學習筆記(17)