1批什、編寫腳本,接受二個位置參數(shù)链烈,magedu和/www厉斟,判斷系統(tǒng)是否有magedu,如果沒有則自動創(chuàng)建magedu用戶强衡,并自動設(shè)置家目錄為/www
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Usage: Enter user_name and user_home"
exit 1
fi
id $1 > /dev/null > 2&>1
if [ $? -ne 0 ]; then
useradd -d $2 $1
echo "$1 is create successful"
else
echo "$1 is already exist"
fi
2擦秽、使用expect實現(xiàn)自動登錄系統(tǒng)。
#!/usr/bin/expect
set IP 192.168.109.222
set PORT 22
set PASSWD test123456
spawn ssh root@$IP -p $PORT
expect {
"yes/no" {send "yes\n";exp_continue}
"password" {send "$PASSWD\n"}
}
interact
############################################################################################
詳解:spawn:啟動新的進程,expect和send命令都是使用spawn打開的進程進行交互
expect:匹配spawn進程返回的字符串感挥,如果匹配到則觸發(fā)send
send:發(fā)送指定字符串到spawn進程缩搅,代替標準輸入
interact:退出自動交互界面,用戶開始進行交互
exp_continue:匹配一個expect中的判斷項后触幼,繼續(xù)匹配后續(xù)的判斷項硼瓣,類似控制語句中的continue語句
3、簡述linux操作系統(tǒng)啟動流程
10958113-956a01fda8a9133d.png
#### 啟動第一步--加載BIOS
當你打開計算機電源置谦,計算機會首先加載BIOS信息堂鲤,BIOS信息是如此的重要,以至于計算機必須在最開始就找到它媒峡。這是因為BIOS中包含了CPU的相關(guān)信息瘟栖、設(shè)備啟動順序信息、硬盤信息丝蹭、內(nèi)存信息慢宗、時鐘信息坪蚁、PnP特性等等奔穿。開機時將ROM中的指令映射到RAM的低地址空間,CPU讀取到這些指令,硬件的健康狀況進行檢查,按照BIOS中設(shè)置的啟動設(shè)備來啟動。
#### 啟動第二步--讀取MBR
硬盤上第0磁道第一個扇區(qū)被稱為MBR敏晤,也就是Master Boot Record贱田,即主引導(dǎo)記錄,它的大小是512字節(jié)嘴脾,其中前446字節(jié)為主引導(dǎo)記錄,后64字節(jié)為分區(qū)表信息,最后2個字節(jié)為對應(yīng)的校驗男摧。系統(tǒng)找到BIOS所指定的硬盤的MBR后,就會將其復(fù)制到0×7c00地址所在的物理內(nèi)存中译打。被復(fù)制到物理內(nèi)存的內(nèi)容就是Boot Loader耗拓,那就是lilo或者grub了。
#### 啟動第三步--Boot Loader
Boot Loader 就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序奏司。bootloader供一個菜單乔询,允許用戶選擇要啟動的系統(tǒng)或不同的內(nèi)核版本; 把用戶選定的內(nèi)核裝載到RAM中的特定空間中韵洋,解壓竿刁、展開,而后把系統(tǒng)控制權(quán)移交給內(nèi)核搪缨。Boot Loader有若干種食拜,其中Grub、Lilo和spfdisk是常見的副编。
#### 啟動第四步--加載內(nèi)核
根據(jù)Grub設(shè)定的內(nèi)核映像所在路徑,系統(tǒng)讀取內(nèi)存映像來解壓縮內(nèi)核,同時還會加載內(nèi)核所需的驅(qū)動程序文件,從而對內(nèi)核進行掛載以及驅(qū)動根文件系統(tǒng)负甸。
initrd(Initial RAM Disk),它在stage2這個步驟就被拷貝到了內(nèi)存中,這個文件是在安裝系統(tǒng)時產(chǎn)生的呻待,是一個臨時的根文件系統(tǒng)(rootfs)煮盼。因為Kernel為了精簡,只保留了最基本的模塊带污,因此僵控,Kernel上并沒有各種硬件的驅(qū)動程序,也就無法識rootfs所在的設(shè)備鱼冀,故產(chǎn)生了initrd這個文件报破,該文件裝載了必要的驅(qū)動模塊,當Kernel啟動時千绪,可以從initrd文件中裝載驅(qū)動模塊充易,直到掛載真正的rootfs,然后將initrd從內(nèi)存中移除荸型。
Kernel會以只讀方式掛載根文件系統(tǒng)盹靴,當根文件系統(tǒng)被掛載后,開始裝載第一個進程(用戶空間的進程)瑞妇,執(zhí)行/sbin/init稿静,之后就將控制權(quán)交接給了init程序。
#### 啟動第五步--用戶層init依據(jù)inittab文件來設(shè)定運行等級
內(nèi)核被加載后辕狰,第一個運行的程序便是/sbin/init改备,該文件會讀取/etc/inittab文件,并依據(jù)此文件來進行初始化工作蔓倍。其實/etc/inittab文件最主要的作用就是設(shè)定Linux的運行等級悬钳,其設(shè)定形式是“:id:5:initdefault:”,這就表明Linux需要運行在等級5上偶翅。
運行級別
對應(yīng)說明
0
關(guān)機,shutdown
1
單用戶模式,root用戶,無須認證,一般是維護模式
2
不帶NFS網(wǎng)絡(luò)服務(wù)的多用戶多任務(wù)模式,一般也是維護模式
3
多用戶多任務(wù)的完全功能模式,文本行界面
4
預(yù)留模式
5
多用戶多任務(wù)的完全功能模式,圖形界面
6
重啟,reboot
啟動第六步--init進程執(zhí)行rc.sysinit
在設(shè)定了運行等級后默勾,Linux系統(tǒng)執(zhí)行的第一個用戶層文件就是/etc/rc.d/rc.sysinit腳本程序,它做的工作非常多聚谁,包括設(shè)定PATH母剥、設(shè)定網(wǎng)絡(luò)配置(/etc/sysconfig/network)、啟動swap分區(qū)垦巴、設(shè)定/proc等等媳搪。
啟動第七步--啟動內(nèi)核模塊,執(zhí)行不同運行級別的腳本程序
具體是依據(jù)/etc/modules.conf文件或/etc/modules.d目錄下的文件來裝載內(nèi)核模塊骤宣。根據(jù)運行級別的不同秦爆,系統(tǒng)會運行rc0.d到rc6.d中的相應(yīng)的腳本程序,來完成相應(yīng)的初始化工作和啟動相應(yīng)的服務(wù)憔披。
啟動第八步--執(zhí)行/etc/rc.d/rc.local
/etc/rc.d/rc.local是給用戶自定義啟動時需要執(zhí)行的文件等限。
啟動第九步--啟動mingetty爸吮,進入系統(tǒng)登陸界面
執(zhí)行/bin/login程序,等待用戶登錄
centos7啟動流程
啟動流程
1.開機自檢 (BIOS)
2.MBR引導(dǎo) (Master Boot Record 主引導(dǎo)記錄 通過硬盤啟動等)
3.GRUB菜單(選擇不同模式 進入救援模式)
4.加載內(nèi)核
5.運行systemd進程
6.讀取/etc/systemd/system/default.target
7.systemd/system/sysinit.target初始化系統(tǒng)
4望门、破解centos7 密碼形娇。
(1)進入到下圖時,按上下鍵
1.jpg
(2)現(xiàn)在就沒有倒計時了筹误,按e進入
2.jpg
(3)往下翻桐早,找到以linux16開頭的一行,將光標移到行尾
3.jpg
(4)刪除行尾至ro改為rw rd.break
4.jpg
(5)ctrl+x
5.jpg
然后輸入以下幾條命令
1. chroot sysroot/
2. echo "這個地方填入你更改之后的密碼" | passwd --stdin root
3. touch /.autorelabel #selinux會重新對系統(tǒng)文件進行重新標記
(6)最后一步很重要厨剪,很多同學(xué)都容易忘記哄酝,打錯或者沒有輸入的后果就是系統(tǒng)無法正常啟動。
輸入兩遍exit退出