5.19隨筆

MBR信息查看
dd if=/dev/sda of=mbr.hex bs=512 count=1 #第一塊硬盤中主讀取數據存放mbr.hex文件中,每次讀512字節,總共讀一次
hexdump -C mbr.hex
Grub2信息查看
more /boot/grub2/grub.cfg
Kernel信息查看
more /boot/initramfs-*
Systemd信息查看
more /etc/systemd/system/default.target
Grub legacy相關配置文件
more /boot/grub/grub.conf
default=0 #默認啓動菜單項目,0表示第一個title系統,1爲第二個,以此類推
timeout=5 #可選擇等待的時間
splashimage=(hd0,0)/grub/splash.xpm.gz #定義啓動時的背景圖片
hiddenmenu #隱藏菜單
title CentOS 6 (2.6.32-696.el6.x86_64) #操做系統名稱
root (hd0,0) #表示內核文件存放的位置,這裏指的是分區位置,非根目錄!
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=d147051c-f05d-44a1-97d9-2f
dec594bf1f rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16
crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet #內核名稱以及一些啓動時的
核心參數。因爲啓動過程當中須要掛載根目錄,所以就須要指定根目錄所在的分區
initrd /initramfs-2.6.32-696.el6.x86_64.img #ramfs文件路徑,ramfs是一個簡單的文件系統,它是基於
ram的動態文件系統的一種Linux硬盤緩衝機制
grub是提供命令行接口的!
救援模式應用:
Centos6
狀況1,忘記、破解root口令
1. 開機啓動,在出現內核選項時按"鍵盤e鍵"進行編輯;在行尾添加single-->Enter-->ctrl+b
2. echo 'new_passwd' | passwd --stdin root
3. reboot
狀況2,grub破壞的修復
1. mv /boot/grub/grub.conf /boot/grub/grub.conf.bak
2. reboot
3. 此時會進入grub的命令行模式
4. root (hd0,0)
5. kernel /vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda3
6. initrd /initramfs-2.6.32-696.el6.x86_64.img
7. boot
8. mv /boot/grub/grub.conf.bak /boot/grub/grub.conf
狀況3,破壞/boot目錄,並修復
#這種比較極端的狀況,須要藉助光盤
1. rm -rf /boot/*
2. Rescue installed system #使用光盤啓動,救援模式
3. 語言,鍵盤都選擇默認;不啓用網絡
4. df -h #檢查當前的系統環境
5. chroot /mnt/sysimage/
6. df -h
7. mount /dev/sr0/ /mnt
8. rpm -ivh kernel --force #安裝內核
9. ls /boot
10. grub-install /dev/sda #安裝grub
11. ls /boot
12 vi /boot/grub/grub.conf #可參考上步的配置,如下內容以實際爲準
default=0
timeout=5
title c69
root (hd0,0)
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda3
initrd /initramfs-2.6.32-696.el6.x86_64.img
13. sync
14. exit
15. reboot
狀況4,破壞fstab文件,並修復
1. 開機啓動,在出現內核選項時按"鍵盤e鍵"進行編輯;在行尾添加single-->Enter-->ctrl+b
2.用命令試驗環境 df-Th
mount -o remount rw /
vi fstab進行編輯-----> oklinux

CentOs 7
狀況1,忘記、破解root口令
1. 開機啓動,在出現內核選項時按"鍵盤e鍵"進行編輯;找到linux16行並在行尾添加內核參數
rd.break;並按ctrl+x進入單用戶模式
2. mount –o remount,rw /sysroot
3. mount
4. chroot /sysroot
5. passwd root
6. touch /.autorelabel
7. exit
8. rebootcentos

法二:1. 開機啓動,在出現內核選項時按"鍵盤e鍵"進行編輯;找到linux16行並在行尾添加
內核參數init=/bin/bash並按ctrl+x進入單用戶模式
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot
*******************************
注意:法一與法二的區別是:不用掛載,直接切換環境,更改密碼
******************************
狀況2,grub破壞的修復
1. cd /boot/
2. rm -rf grub* #手動刪除grub下的全部文件
3. 以光盤啓動引導系統
4. chroot /mnt/sysimage
5. ls /boot
6.grub2-install /dev/sda
7. grub2-mkconfig -o /boot/grub2/grub.cfg
8. exit
9. reboot
狀況3,破壞/boot目錄,並修復
1. rm -rf /boot/*
2. chroot /mnt/sysimage
3. mount /dev/sr0 /mnt
4. rpm -ivh /mnt/Packages/kernel-3.1.x.rpm --force
5. ls /boot
6. reboot
狀況4,破壞grub2下的grub.cfg並修復
1. cp /boot/grub2/grub.cfg grub.cfg.bak
2. rm -rf /boot/grub2/grub.cfg
3. init 6
4. grub>insmod xfs
grub>set root=(hd0,1)
grub>linux16 /vmlinuz-xxxxx root=/dev/mapper/centos-root
*** ** root=/dev/sda3 也可用UUID
grub>initrd16 /initramfs-.xxxxx.img
grub>boot
mv /boot/grub2/grub.cfg.bak /boot/grub2/grub.cfg
5. init 6bash

Selinux配置文件
more /etc/sysconfig/selinux
getenforce #查詢當前selinux的模式
setenforce 0 #臨時關閉selinux,重啓後失效,==permissive
setenforce 1 #打開selinux,重啓後失效,==enforcing
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #配置文件修改,重啓後生效網絡

break命令來退出任意類型的循環,包括while和until循環
#break n;n指定了要跳出的循環層級,默認爲1,代表跳出的是當前的循環,n爲2,break命令就會中止下一級
#continue命令能夠提早停止某次循環中的命令,但並不會徹底終止整個循環
$0是程序名,$1是第一個參數,$2是第二個參數
total=$[ $1 * $2 ] 作運算的格式
./s3.sh 'micheal jackson' #有空格的字符必需要使用引號
#若是腳本參數超過9個,仍然能夠處理,須要修改變量名。在第9個變量後,在變量前加${10}
name=$(basename $0) #basename,返回不包含路徑的腳本
if [ -n "$1" ] #-n檢測$1中是否有數據
echo There were $# parameters supplied. # $#含有腳本運行時攜帶的命令行參數的個
if [ $# -ne 2 ] #-ne測試命令行參數數量
# $*變量會將全部參數當成單個參數
# $@變量會單獨處理每一個參數
more s11.sh
#!/bin/bash
#
echo
count=1
#
for param in "$*" #用for命令遍歷這兩個特殊變量,你能看到它們是如何不一樣地處理命令行參數的
do
echo "\$* Parameter #$count = $param"
count=$[ $count + 1 ]
done
#
echo
count=1
#
for param in "$@"
do
echo "\$@ Parameter #$count = $param"
count=$[ $count + 1 ]
doneapp

#read命令從標準輸入(鍵盤)或另外一個文件描述符中接受輸入。在收到輸入後,read命令會將數據放進一個變量
echo -n "Enter your name: " #-n不會在字符串末尾換行
read name
echo "Hello $name測試

read -p "Please enter your age: " age #-p命令行指定提示符
days=$[ $age * 365 ]
#在上個例子中當有名字輸入時,read命令會將姓和名保存在同一個變量中。read命令會將提示符後輸入的全部數
據分配給單個變量,要麼你就指定多個變量
read -p "Enter your name: " first last
echo "Checking data for $last, $first…"ui

read -p "Enter your name: "
echo
echo Hello $REPLY, welcome to my program. #read命令行中不指定變量,read命令會將它收到的任何數
據都放進特殊環境變量REPLY中操作系統

#read -t 指定一個計時器 秒數
if read -t 5 -p "Please enter your name: " name命令行

#當輸入的字符達到預設的字符數時,就自動退出,將輸入的數據賦給變量 ***-n3 表示最多三個字符
read -n1 -p "Do you want to continue [Y/N]? " answer接口

#要隱藏的數據類型,如輸入密碼
read -s -p "Enter your password: " pass
echo
echo "Is your password really $pass? "

#read讀取linux文件中的文件
count=1
cat /etc/passwd | while read line
do
echo "Line $count: $line"
count=$[ $count + 1]
done
echo "Finished processing the file"
#while循環會持續經過read命令處理文件中的行,直到read命令以非零退出狀態碼退出

總結: 認真踏實,終上天庭

相關文章
相關標籤/搜索