馬哥教育第二十四至二十六天學習總結
1.使用nmcli創建bond, team ,bridge
bond
nmcli connection add con-name bond0 type bond ifname bond0 mode active-backup
nmcli connection add type bond-slave ifname eth2 master bond0
nmcli conncetion add type bond-slave ifname eth3 master bond0
nmcli connection up bond-slave-eth2
nmcli connection up bond-slave-eth3
cat /proc/net/bonding/bond0 查看bond狀態
lsmod |grep bonding
team
nmcli connection add con-name team0 type team ifname team0 config ‘{"runner":{"name":"activebackup"}}‘
nmcli connection add type team-slave ifname eth2 master team0
nmcli connection add type team-slave ifname eth3 master team0
teamdctl team0 state
bridge
nmcli connection add type bridge con-name br0-con ifname br0-con ifname ipv4.method manual ipv4.addresses 8.8.8.6/24
nmcli connection add type bridge-slave ifname eth2 master br0-con
nmcli connection add type bridge-slave ifname eth3 master br0-con
brctl show
hostname
ping x.x.x.x
ping -c1 只ping一個包
ping -w1 錯誤後僅重試1s
ping -s 60000 指定一個包大小
ping -f
思考:在禁Ping情況下,實際是icmp包協議被禁止,但是可以通過tcp協議方式去Ping不會關閉的某些端口如80,443等-- 實用工具:tnsping 工作在windows下(可以測試網絡穩定性和丟包率); hping3; nmap(只能實現一次全網所描,不能測試網絡穩定性和丟包率)
ftp lftp lftpget http:// ftp://
wget
-P 指定下載目錄,默認下載到運行程序的當前目錄
-O 指定文件名,默認與原文件名一致
--limit-rate=xx(K,M,G) 下載速度
-c 斷電續傳
-q 靜默下載
links
--dump 只看文字
--source 看源碼
curl
進程管理
root --> cat --> /etc/shadow
ps
BSD方式
a 所有用戶在所有終端上運行的前臺進程
x 當前用戶運行的所有進程(包括前臺進程和後臺daemon)
ax 所有用戶運行的所有進程
aux 所有用戶運行的所有進程,結果中顯示用戶名
f 顯示父子進程關系
-C 用進程名進行過濾
axo 配合
o 自定義輸出列
%cpu %mem pid uid gid cmd comm tty(顯示終端名,如?,表示daemon後臺進程) ruser (命令發起人) euser 命令的真正執行人 state
k 排序或--sort
VSZ:虛擬內存集,線性內存,表示操作系統承諾內存集
RSS:常駐內存集,實際分配內存
UNIX方式
-e 顯示所有進程
-f 顯示完整格式
-ef
-eF 以更完整格式顯示所有進程
-efH 顯示父子進程關系
-eo 自定義顯示結果:ps -eo %cpu,%mem,pid,nice,pri,stat,comm
nice值
-20~19 數字越小,優先級越高
renice -n #(-20~19) pid
nice -n #(-20~19) -# command
查看方式 ps axo nice
pgrep
-u UID/USERNAME 基於執行程序的用戶名進行搜索
-U 實際發起者 (考慮命名有u+s權限,實際生效者可變)
-t 終端名
-P 查看子進程
pidof 進程名 查詢對應進程名的PID
uptime top htop(epel)
[epel]
name=centos69 epel
baseurl=http://x.x.x.x/fedora-epel/$releasever/$basearch
gpgcheck=0
馬哥教育M28-二十五天、
vmstat
r:可運行進程
b:處於不可中斷睡眠狀態的進程個數
swpd:當前虛擬內存的已使用空間
free :物理內存的剩余空間,直至不夠用時,才會使用虛擬內存
buffer/cache:用於緩存的內存總量
si: 表示內存從swap讀入的總量
so:表示從內存寫出到swap的總量
bi:表示內存從硬盤讀入的總量
bo:表示從內存寫出到硬盤的總量
in: 每秒中斷的速率
cs:進程切換速率
us: 用戶空間時間
sy:內核空間,系統空間
id:空閑時間
wa:等待時間
st: 被虛擬機偷走的時間
vmstat -s 詳細查看內存信息 vmstat 1 1
iostat
pmap pid (經常用來查看內存泄漏問題,進程單個程序占用內存大小異常或者查看文件描述符數量異常情況)
pmap -x pid
ls -l /proc/pid/fd |wc -l
kill
-0 無作為,可以用來單純判斷進程是否運行 >dev/null;echo $?
-1 -HUP:強制進程重讀配置文件(在無需關閉進程前提下實用)
-2 -INT: 終止正在運行的進程,相當於ctrl+c
-3 -QUIT:相當於ctrl+\
-9 -KILL :強制正在運行的進程 (exit)
-18 恢復後臺睡眠進程
-19 暫停進程到後臺睡眠
-15 -TERM:終止正在運行的進程(默認)(先釋放資源再停止,可能阻塞信號)
killall 進程名
pkill
-u 用戶名 殺死指定用戶所運行的所有進程
pkill -t pts/1 殺死指定終端上運行的所有進程
進程的前後臺
ctrl+z 將運行在前臺的進程暫停,或kill -19 PID
bg 將在當前終端上暫停的進程,放入後繼續運行,或kill -18 PID
fg 將在當前終端上暫停的或在當前終端上後臺運行的進程,放入前臺繼續運行
使進程不再依附於終端在後臺運行(與終端剝離shell)
nohup command &>/dev/null
screen; screen -S ; screen -sl ;screen -r
(command&);(command&)
*並行運行多條命令:
vim all.sh
sh1&
sh2&
sh3&
(sh1&);(sh2&)
{sh1& sh2& sh3&}
馬哥M28-第二十六天、
at hh:mm 未來某一時間點運行一次的計劃任務
atq 或 at -l 列出指定隊列中等待運行的作業
at -c 隊列序號 查看指定序號隊列的詳細信息
atrm 隊列序號 或 at -d 隊列序號 刪除指定序號的隊列
echo wall 123 |at 20:00
at 20:00 << EOF
wall hello
EOF
at 20:00 -f at.txt
at的任務是否運行依賴於atd服務
centos : service atd start
centos : systemctl start atd.service
限制用戶不能使用at配置計劃任務
當僅/etc/at.deny存在時,寫入deny的用戶不能配置at
當/etc/at.allow存在時/etc/at
deny失效,只有寫在allow中的用戶才能配置at,當/etc/at.allow和/etc/at.deny都不存在時,僅有root才能配置at
cron
/etc/crontab 系統級計劃任務 (必須嚴格區別個人計劃任務)
00 07 1,15 * 3 root /root/naozhong.sh 僅能通過root定義,不過可以以普通用戶的身份去執行計劃任務中的命令。
日誌/var/log/crond
特殊的日期表達方式:
@reboot Run once after reboot
當下次啟動計算機時,啟動到crond服務時運行該計劃。
@yearly 0 0 1 1
@annually 0 0 1 1
@monthly 0 0 1
@weekly 0 0 0
@daily 0 0
@hourly 0 *
centos7:單用戶啟動
1.grub:linux16 最後加上空格rd.break 按ctrl+x
2.mout -o remout,rw /sysroot
3.vim /sysroot/etc/crontab
centos6:單用戶啟動解決循環重啟任務
1.grub: kernel 最後空格+1 先ESC加到主界面 再b啟動
2.vim /etc/crontab
/etc/crontab 是系統級計劃任務的主配置文件
--> /etc/cron.d 是系統計劃任務的擴展配置文件目錄,其中的所有都應該是按crond的格式編寫,每一個文件都會生效
--> /etc/cron.d/0hourly
01 root run-parts /etc/cron.hourly 又用run-parts命令,擴展到了/etc/cron.hourly目錄,其中的所有腳本均會在每小時的01分執行
crontab
crontab -e [-u username]
crontab -l
crontab -r 直接該用戶的crontab文件,所以所有計劃全刪除,如只需刪除某條,直接crontab -e 編輯刪除該行即可
crontab -i -r 功能同上,在刪除前詢問
限制用戶不能使用crontab配置計劃任務
當今當/etc/cron.deny
存在時(默認)寫入deny的用戶不能配置crontab,當/etc/cron.allow存在時/etc/cron.deny失效,只有寫在allow中的用戶才能配置crontab,當/etc/cron.allow以及/etc/cron.deny都不存在時,僅有root才能配置crontab
shell腳本編程進階
判斷某字符串是否為整數
num=1322; [[ "$num" =~ ^[0-9]+$ ]] && echo true
$score -ge 60 -a $score -lt 80
$score -ge 60 -o $score -lt 80
隨機生成16位包含數字、大小寫字母、符號的密碼
cat /dev/urandom |tr -dc ‘a-zA-Z0-9_\$\@#?.‘ |head -c 12
練習:寫一個彩票系統,判斷5個數字。
1 5 3 8 9
輸入 第一個值。
輸入 第二個值。
輸入 第三個值。
輸入 第四個值。
輸入 第五個值。
每一步在輸入完,都會判斷,如果中了,則有輸出結果:
第一次中輸出 : First blood
第二次中輸出 : Double kill
第三次中輸出 :Triple kill
第四次中輸出 :Quadra Kill
第五次中輸出 :Penta Kill 以及 ACE!
一次也不中輸出: Defeat!
1 #!/bin/bash
2 # ------------------------------------------
3 # Filename: lucky_dog
4 # Revision: 1.0
5 # Date: 2018-03-16
6 # Author: Hodge
7 # Email: [email protected]
8 # ------------------------------------------
9 # Copyright: 2018 Hodge
10 # License: GPL
11
12 cnt=0
13 #標記命中次數
14 for i in `seq 1 5`
15 do
16 echo "第$i次判斷"
17 read -p ‘please input your num:‘ num_by_usr
18 num_judge=$[$RANDOM%3]
19 echo " lucky_num is $num_judge"
20 flag=1
21 if [ $num_by_usr -eq $num_judge ]
22 then
23 cnt=$[$cnt+1]
24 flag=0
25 #若命中則下面輸出,不命中不輸出,防止不命中依然輸出
26 fi
27 if [ $flag -eq 0 ]
28 then
29 case "$cnt" in
30 1)echo First blood;;
31 2)echo Double kill;;
32 3)echo Triple kill;;
33 4)echo Quadra kill;;
34 5)echo Penta kill ACE;;
35 esac
36 fi
37 done
38 if [ $cnt -eq 0 ]
39 then
40 echo "defeat"
41 fi
作業:
使用?,利用for,顯示出一個等腰三角形。
1、判斷/var/目錄下所有文件的類型
2、添加10個用戶user1-user10,密碼為8位隨機字符
3、/etc/rc.d/rc3.d目錄下分別有多個以K開頭和以S開頭的文件;分別讀取每個文件,以K開頭的輸出為文件加stop,以S開頭的輸出為文件名加start,如K34filename stop S66filename start
4、編寫腳本,提示輸入正整數n的值,計算1+2+…+n的總和
5、計算100以內所有能被3整除的整數之和
6、編寫腳本,提示請輸入網絡地址,如192.168.0.0,判斷輸入的網段中主機在線狀態
7、打印九九乘法表
8、在/testdir目錄下創建10個html文件,文件名格式為數字N(從1到10)加隨機8個字母,如:1AbCdeFgH.html
9、打印等腰三角形
- 探測局域網內的主機
172.18.250-254.X
能ping通顯示並保存至/root/ip.log
要求並行探測提高效率
馬哥教育第二十四至二十六天學習總結