第四周學習總結

網絡協議和管理

route、netstat、ip、ss、nmcli命令

網絡接口配置-bonding

配置文件/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS= “miimon=100 mode=0”
配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no

網橋

用虛擬機創建網橋

nmcli con add con-name mybr0 type bridge con-name br0 ifname br0
nmcli con modify mybr0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
nmcli con add con-name br0-port0 type bridge-slave ifname eth0 master br0

進程和計劃任務

進程(process)

task struct 內核存儲進程信息的數據結構格式
task list 多個任務task struct組成的鏈表
fork();clone()寫時複製
進程包含多個線程至少一個
儘可能減少進程切換來提升性能
內存是以頁來存儲數據:page 4K
MMU 負責轉換線性的物理地址
TLB 保存虛擬地址和物理地址映射關係緩存
LRU 近期最少使用算法,釋放內存
進程的基本狀態:創建、就緒、執行、阻塞、終止狀態
運行——>就緒:1,主要是進程佔用CPU的時間過長,而系統分配給該進程佔用CPU的時間是有限的;2,在採用搶先式優先級調度算法的系統中,當有更高優先級的進程要運行時,該進程就被迫讓出CPU,該進程便由執行狀態轉變爲就緒狀態
就緒——>運行:運行的進程的時間片用完,調度就轉到就緒隊列中選擇合適的進程分配CPU
運行——>阻塞:正在執行的進程因發生某等待事件而無法執行,則進程由執行狀態變爲阻塞狀態,如發生了I/O請求
阻塞——>就緒:進程所等待的事件已經發生,就進入就緒隊列
以下兩種狀態是不可能發生的:
阻塞——>運行:即使給阻塞進程分配CPU,也無法執行,操作系統在進行調度時不會從阻塞隊列進行挑選,而是從就緒隊列中選取
就緒——>阻塞:就緒態根本就沒有執行,談不上進入阻塞態

系統管理工具:

ps、top、free、vmstat、iostat、pmap、htop(需要epel源安裝)、glances(需要epel源安裝)、dstat、iotop、nload(需要epel源安裝)、lsof命令

計劃任務:

at和batch一次性計劃任務

1.at隊列存放在/var/spool/at目錄中
2.依賴與atd服務,需要啓動才能實現at任務
3./etc/at.{allow,deny}控制用戶是否能執行at任務
白名單:/etc/at.allow 默認不存在,只有該文件中的用戶才能執行at命令
黑名單:/etc/at.deny 默認存在,拒絕該文件中用戶執行at命令,而沒有在at.deny 文件中的使用者則可執行
如果兩個文件都不存在,只有 root 可以執行 at 命令

週期性任務計劃cron

系統級計劃任務(普通用戶不能創建)

/etc/crontab系統級計劃任務配置文件(不推薦使用)

用戶級計劃任務

/usr/bin/crontab 用戶級計劃任務配置文件
crontab
-u 以誰的身份來創建任務(默認爲自己)
-e 創建計劃任務(會自動生成一個計劃任務文件/tmp/crontab.DkTbc7,再創建完成後會自動刪除該文件)也能刪除計劃任務
-r 刪除全部計劃任務
***再任務中不能使用%,一定要用要需要轉義
日誌文件/var/log/cron
run-parts file 該命令能使該目錄中腳本都運行一遍
推薦寫計劃任務寫入腳本,讓計劃任務來啓動腳本

SHELL腳本編程進階

for循環(兩種格式)

sum=0
for i in {1..100};do
    let sum+=i
done
echo sum=$sum

c語言風格

for((i=1;i<=9;i++));do
    for((j=1;j<=i;j++));do
        echo -e "${j}×${i}=$[j*i]\t\c"
    done
    echo
done

while循環

sum=0
i=1
while [ $i -le 100 ];do
    let sum+=i
    let i++
done
echo sum=$sum

while無限循環

N=$[RANDOM%10+1]
while true;do
    read -p "guess number [1-10]:" GUESS
    if [ "$N" -eq "$GUESS" ];then
        echo OK
        break
    elif [ "$N" -lt "$GUESS" ];then
        echo guess bigger
    else
        echo guess smaller
    fi
done

while 特殊用法

while read name;do
    useradd $name
    echo $name is created
done < student_name.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章