《求职》第四部分 - 操作系统篇 - Linux基础
常用命令
- 編輯相關(guān)
-
awk:awk是一個強(qiáng)大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數(shù)據(jù)分析并生成報(bào)告時,顯得尤為強(qiáng)大。簡單來說awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片,切開的部分再進(jìn)行各種分析處理。
- NF:字段總數(shù)
- NR:第幾行數(shù)據(jù)
- FS:分隔字符
-
sed
- -n
- -i 直接修改
- 4a:在第四行后添加
- 4i:在第四行前插入
- 1,5c sting:用sting替換1到5行的內(nèi)容
- s/要被替換的字符串/新的字符串/g
-
sort
- -t
- -nr sort |uniq -c |sort -nr
-
tr
- -d:刪除
- [a-z] [A Z]:替換
-
- 查看負(fù)載相關(guān)
- top
- load average cpu
里面的幾個數(shù)字代表什么意思,怎么衡量,為什么- load average 50 算高還是低?怎么計(jì)算的?
- 系統(tǒng)在1,5,15分鐘的平均工作負(fù)載,進(jìn)程隊(duì)列中的平均進(jìn)程數(shù)量。
- 一般不能大于系統(tǒng)邏輯CPU的個數(shù)
- /proc/loadavg
- 關(guān)鍵參數(shù)
- Task:僵尸進(jìn)程的數(shù)量
- CPU:%wa IOwait
- Mem:
- Swap:要盡可能的少用
- load average cpu
- uptime
- free:讀取自文件:/proc/meminfo
- buffer存放要寫回到磁盤的數(shù)據(jù)
- cache存放從磁盤上讀出的數(shù)據(jù)
- -buffers/cache,表示一個應(yīng)用程序認(rèn)為系統(tǒng)被用掉多少內(nèi)存;被程序?qū)崒?shí)在在占用的內(nèi)存
- +buffers/cache,表示一個應(yīng)用程序認(rèn)為系統(tǒng)還有多少內(nèi)存;可用的內(nèi)存數(shù)。
- vmstat:動態(tài)的了解系統(tǒng)資源運(yùn)行
- -d:磁盤
- r:等待運(yùn)行的進(jìn)程數(shù),r<5表示狀態(tài)好
- b:處于非中斷睡眠狀態(tài)的進(jìn)程數(shù),b≈0表示狀態(tài)好
- id:CPU閑置時間
- 如果r經(jīng)常大于3或4,且id經(jīng)常小于50,表示CPU負(fù)荷很重
- ps
- aux
- -l
- lsof:列出被進(jìn)程所打開的文件名
- pwd
- 首先獲取當(dāng)前目錄的i節(jié)點(diǎn)編號,但是并不能知道當(dāng)前目錄的名稱,我們切換到其的父目錄,在里面尋找當(dāng)前i節(jié)點(diǎn)編號對應(yīng)的文件名即可。終止條件是".“和”…"指向同一個i節(jié)點(diǎn),我們可以以此判斷是否發(fā)到達(dá)了根目錄
- pgrep
- top
- 查找
- grep
- -n
- -v
- -A
- -B
- find
- 時間:
- 4:4天前的那一天
- +4:大于等于5天之前
- -4:小于等于4天之內(nèi)
- -exec 命令 { } ;
- 時間:
- grep
- 磁盤
- du
- -sh /
- du -cks * | sort -rn | head -n 10
- 評估目錄所占容量,通過將指定文件系統(tǒng)中所有的目錄、符號鏈接和文件使用的塊數(shù)累加得到該文件系統(tǒng)使用的總塊數(shù)
- du命令是用戶級的程序,它不考慮Meta
Data,而df命令則查看文件系統(tǒng)的磁盤分配圖并考慮Meta Data。 - du以文件名、目錄名為依據(jù)計(jì)算空間使用的,而df是以硬盤塊使用情況來計(jì)算空間使用的。
- -sm 以M為單位列出文件容量
- df
- 列出所有文件系統(tǒng)的整體磁盤使用量,通過讀取塊位圖獲取
- dumpe2fs
- du
- 網(wǎng)絡(luò)配置命令
- netstat
- -tlnp
- ss
- ping
- traceroute
- tcpdump
- tcpdump ip host
- tcpdump tcp port 25 and host 210.27.48.1
- nslookup
- dig
- nmap
- tcp端口掃描:-sT、-sP
- TCP SYN端口掃描:-sS
- nmap -sS 192.168.137.10 -255 -p 20,21,53-110,30000 --v
- UDP端口掃描:-sU
- TCP ACK掃描:-sA
- netstat
系統(tǒng)調(diào)優(yōu)參數(shù)
- /etc/sysctl.conf
這個文件有沒有改過?列舉一些常見的kernel參數(shù)和作用。- time_wait相關(guān)
- net.ipv4.tcp_tw_reuse =
1:是否允許新的TCP連接重新應(yīng)用處于time_wait狀態(tài)的socket - net.ipv4.tcp_tw_recycle = 1:加速time_wait socket回收
- net.ipv4.tcp_max_tw_buckets:time_wait套接字的最大數(shù)量,把time_wait所占用內(nèi)存控制在一定范圍
- net.ipv4.tcp_tw_reuse =
- syn攻擊相關(guān)
- net.inet.tcp.syncookies =
1:開啟syncookies功能,防止dos攻擊,syn攻擊 - net.ipv4.tcp_synack_retries =
2:內(nèi)核放棄連接之前發(fā)送SYN+ACK包的數(shù)量 - net.ipv4.tcp_syn_retries =
2:新連接,內(nèi)核放棄連接之前發(fā)送SYN包的數(shù)量 - net.ipv4.tcp_max_syn_backlog = 65536:表示SYN隊(duì)列的長度
- net.inet.tcp.syncookies =
- 緩沖區(qū)
- net.core.rmem_default:接收套接字緩沖區(qū)大小缺省值
- net.core.wmem_default:發(fā)送套接字緩沖區(qū)大小缺省值
- net.core.rmem_max:最大TCP接收緩沖區(qū)大小
- net.core.wmem_max:最大TCP發(fā)送緩沖區(qū)大小
- kern.ipc.somaxconn :并發(fā)連接數(shù)
- net.core.netdev_max_backlog = 32768:進(jìn)入包的最大設(shè)備隊(duì)列
- time_wait相關(guān)
常見服務(wù)占用端口
- 80 8080 443
- 20 21 22 23 25 53
- 135(RPC)137(NetBIOS/UDP) 138(UDP) 139 (samba)
- 161 SNMP
- 1080 Socket代理
- 3306 11211 8080 jboss tomcat 50170
文件系統(tǒng)
-
(ext4)性能 安全性
-
啟動扇區(qū) 塊組 超級塊 inode表格 block 塊對照表(Bitmap) inode對照表
- 超級塊
- 記錄整個文件系統(tǒng)的整體信息,包括inode(記錄文件的權(quán)限與屬性)與block(記錄數(shù)據(jù))總量、使用量、剩余量
- inode表格 = inode + 存儲block號碼的block (ls -l命令)
- inode本身不記錄文件名,文件名的記錄在目錄的block中
- 創(chuàng)建新的目錄時,新目錄的鏈接數(shù)是2(產(chǎn)生了/.),上層目錄的鏈接數(shù)會增加1(產(chǎn)生了/…)
- 超級塊
-
讀寫文件會遇到的問題
- 文件數(shù)據(jù)離散:文件很大、經(jīng)常變動、無法寫在連續(xù)的塊中、機(jī)械臂移動大、
- 復(fù)制出來、格式化、復(fù)制回去
- 創(chuàng)建文件流程
- 查詢目錄權(quán)限
- 在日志記錄塊中記錄準(zhǔn)備寫入的信息
- 查詢inode bitmap,向inode中寫入權(quán)限和屬性
- 查詢block bitmap,向block寫入數(shù)據(jù)
- 更新inode指向block
- 更新inode bitmap和block bitmap 的狀態(tài),更新superblock內(nèi)容
- 在日志記錄塊中完成文件記錄
- 讀文件失敗
- 塊數(shù)據(jù)損壞
- inode損壞:記錄數(shù)據(jù)塊號碼的塊損壞
- 寫文件失敗
- 文件描述符不夠
- 存儲空間不夠了(塊不夠、inode不夠)
- 文件數(shù)據(jù)離散:文件很大、經(jīng)常變動、無法寫在連續(xù)的塊中、機(jī)械臂移動大、
-
hdfs的一個block多大,為什么128M?
- 不能遠(yuǎn)小于128M:減少硬盤尋道時間、減少Namenode內(nèi)存消耗
- 不能遠(yuǎn)大于128M:
- Map崩潰問題 (數(shù)據(jù)塊大,重新加載時間長)
- 預(yù)設(shè)時間間隔問題(從數(shù)據(jù)塊的角度大概估算,數(shù)據(jù)塊越大,時間越長)
- 問題分解問題:數(shù)據(jù)量大小和問題解決的復(fù)雜度成線性關(guān)系
- 約束map輸出:map之后的數(shù)據(jù)需要排序后再執(zhí)行reduce,大文件不利于歸并排序的思想
-
ext4文件系統(tǒng)的block多大?
- 4k
- HDFS的塊比磁盤塊大,其目的是為了最小化尋址開銷
-
索引式文件系統(tǒng):ext
-
非索引式文件系統(tǒng):FAT 碎片整理
-
cp/mv/rm的區(qū)別(實(shí)現(xiàn))
- cp
- -a(pdr:連同文件屬性一起、鏈接文件屬性、遞歸)
- -u(新才復(fù)制)
- -l -s (復(fù)制為鏈接)
- -d
復(fù)制鏈接文件時,默認(rèn)復(fù)制的是源文件,除非加-d參數(shù),才會復(fù)制鏈接文件
- 當(dāng)目標(biāo)文件存在時,cp
命令并不是先刪除已經(jīng)存在的目標(biāo)文件,而是將原目標(biāo)文件內(nèi)容清空后再寫入。 - mv
的主要功能就是檢查初始文件和目標(biāo)文件是否存在及是否有訪問權(quán)限,之后執(zhí)行
rename 系統(tǒng)調(diào)用,因而,當(dāng)目標(biāo)文件存在時,mv 的行為由 rename()
系統(tǒng)調(diào)用決定,即類似于刪除文件后再重建一個同名文件。 - 刪除文件名是指在原目錄下不再含有此文件名,并不一定刪除磁盤上文件的內(nèi)容。只有在文件的鏈接數(shù)為1,并且沒有進(jìn)程打開此文件的時候,unlink()
才會真正刪除文件內(nèi)容。
- cp
-
軟硬連接(inode這塊,ln / ln -s)
- 硬鏈接:一個inode節(jié)點(diǎn)對用不同的文件名,
- 不創(chuàng)建新的inode,每增加一個硬鏈接,inode節(jié)點(diǎn)鏈接數(shù)加一
- rm
硬鏈接:刪除的只是文件名,對應(yīng)的數(shù)據(jù)塊只有在inode節(jié)點(diǎn)鏈接數(shù)減少為0的時候才會被系統(tǒng)回收。 - 不能對目錄創(chuàng)建硬鏈接,因?yàn)槲募到y(tǒng)不能存在鏈接環(huán),否則會導(dǎo)致文件便利操作的混亂(du,pwd等命令的運(yùn)作原理就是基于文件硬鏈接)
- 不能跨文件系統(tǒng)
- 不能對不存在的文件創(chuàng)建硬鏈接
- 軟鏈接:如果目標(biāo)路徑名較短則直接保存在inode中,如果較長則分配一個block存儲
- 創(chuàng)建新的inode,指向的數(shù)據(jù)塊存放著源文件的路徑
- 刪除源文件,軟鏈接失效
- 可以對目錄 創(chuàng)建軟連接,遍歷操作會忽略目錄的軟鏈接
- 可以跨文件系統(tǒng)
- 可以對不存在的文件創(chuàng)建軟鏈接
- 硬鏈接:一個inode節(jié)點(diǎn)對用不同的文件名,
開機(jī)啟動過程
- Mbr 與gpt的區(qū)別
- BIOS、CMOS、MBR、Boot
Loader、Grub2、Kernel、/sbin/init、/etc/init/*.conf、/ect/inittab、/etc/rc.d/rc.sysinit、/etc/rc.d/rc.$runleave - 雙系統(tǒng)
- 多重引導(dǎo):MBR、各分區(qū)的啟動扇區(qū)boot sector
Shell常用腳本
- 從日志文件里面篩選出符合要求的ip或者其他信息
- cat logname | sort | uniq -c | sort -nr | head -n 10
- 正則表達(dá)式匹配IP地址
- [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1-3}\.{1,3}
- ^((25[0-5]|2[0-4]\d|[1]{1}\d{1}\d{1}|[1-9]{1}\d{1}|\d{1})( ∣ ( ? ! . |(?!\\. ∣(?!.)\.)){4}$
- ((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))
- 20G大小的文件,內(nèi)容都是IP,有重復(fù)的,如何找出這里面的top N ?
- 分表、哈希
- 統(tǒng)計(jì)nginx日志出現(xiàn)次數(shù)最多的ip
- awk ‘{print $1}’ urllogfile | sort | uniq -c | sort -nr -k1
| head -n 10
- awk ‘{print $1}’ urllogfile | sort | uniq -c | sort -nr -k1
- 查看Web服務(wù)器(Nginx Apache)的并發(fā)請求數(shù)及其TCP連接狀態(tài)
- netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print
a, S[a]}’
- netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print
Swap
- swap分區(qū)是怎么設(shè)置的?
- 使用物理分區(qū)構(gòu)建swap:fdisk分區(qū)(改分區(qū)類型ID)、mkswap格式化、swapon啟動、free查看、
- 使用文件構(gòu)建swap:dd、mkswap、swapon、free
- 為什么要有swap分區(qū),工作原理是什么?為什么云服務(wù)器上的swap沒有開啟?
- 內(nèi)存不足時,將內(nèi)存中暫時不使用的程序與數(shù)據(jù)放置到swap中
- 服務(wù)器休眠時,運(yùn)行中的程序狀態(tài)會被記錄到swap
- 某些程序運(yùn)行時會利用swap的特性
Iptables
- filter
- INPUT
- OUTPUT
- FORWARD
- nat
- PREROUTING
- OUTPUT
- POSTROUTING
- mangle
- PREROUTING
- INPUT
- FORWERD
- POSTROUTING
- OUTPUT
- 語法
- iptables [-t 表名] <-A|I|D|R>鏈名 -i|o網(wǎng)卡名稱 -p
協(xié)議類型 -s源IP --sport 源端口號 -d 目標(biāo)IP地址 --dport
目標(biāo)端口號 <-j 動作> - iptables -P INPUT DROP
- iptables -A INPUT -m state --state NEW -j DROP
- iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables -A INPUT -p tcp -dport 445 -j ACCEPT
- iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
- 只允許某個IP上網(wǎng)
- iptables [-t 表名] <-A|I|D|R>鏈名 -i|o網(wǎng)卡名稱 -p
Shell操作
-
find /data -type f -name “*.txt” | xargs sed -i ‘s/oldgirl/oldboy/g’
-
mkdir -p /data/oldboy && echo
-
算術(shù)運(yùn)算
- $[]
- $(())
- $(expr a + b) 或者 expr a \* b :注意運(yùn)算符兩邊要空格,且乘法符號要轉(zhuǎn)義
-
查看http的并發(fā)請求數(shù)與其TCP連接狀態(tài)
- netstat -tan | awk ‘/^tcp>/{split($5,ip,"😊;count[ip[1]]++}END{for(i in count) print i,count[i]}’
-
awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10
-
cat /dev/urandom | head -1 | md5sum | haed -c 5
-
watch -n 1 “/sbin/ifconfig eth0 | grep bytes”
-
find /opt -size +15k -exec mv {} /tmp/ ;
-
sed和awk
- 如果文件是格式化的,即由分隔符分為多個域的,優(yōu)先使用awk
- awk適合按列(域)操作,sed適合按行操作
- awk適合對文件的抽取整理,sed適合對文件的編輯。
-
寫一個腳本,該腳本能對標(biāo)準(zhǔn)的apache日志進(jìn)行分析并統(tǒng)計(jì)出總的訪問次數(shù)和每個訪問ip的訪問次數(shù),按訪問次數(shù)列出前5名?
-
顯示/test下所有目錄
- ls -d */
- find . -type d -maxdepth 1
- ls -F | grep ‘/$’
- ls -l | grep ‘^d’ | awk ‘{print $9}’
-
將文件/etc/a 下中除了 b文件外的所有文件壓縮打包放到/home/a下,名字為a.tar.gz
- tar -exclude /etc/a/b -Pcvfz /home/a/a.tar.gz /etc/a
-
如何查看某進(jìn)程打開的所有文件
- lsof -p `ps -ef | grep crond | awk ‘{print $2}’`
-
獲取網(wǎng)卡eth0的80端口的數(shù)據(jù)包信息,找出訪問最高的
- tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F “.” ‘{print $1"."$2"."$3"."$4"."}’|sort|uniq -c|sort -nr|head -5
-
查看/var/log目錄下的文件數(shù)
- ls /var/log -1R | grep “-” | wc -l
-
查看Linux系統(tǒng)每個IP的連接數(shù)
- netstat -n | awk ‘/^tcp/{print $5}’ | awk -F":" ’{print $1}’ | sort | uniq -c | sort -rn
-
用iptables控制來自192.168.1.2主機(jī)的80端口請求
- iptables -A INPUT -p tcp -s 192.168.1.2 -dport 80 -j ACCEPT
-
Linux如何掛載Windows下的共享目錄
- mount .cifs //IP地址/server /mnt/server -o user=username,password=123
-
生成32位隨機(jī)密碼
- cat /dev/urandom | head -1 | md5sum | head -c 32
-
密碼加密
- echo abc | openssl md5
- echo abc | openssl base64
- echo abc | openssl sha
-
ps aux 中的VSZ代表什么意思,RSS代表什么意思?
- VSZ:虛擬內(nèi)存集,進(jìn)程占用的虛擬內(nèi)存空間
- RSS:物理內(nèi)存集,進(jìn)程占用的實(shí)際物理內(nèi)存空間
-
修改內(nèi)核參數(shù)
- vi /etc/sysctl.conf
- sysctl -p
-
取0-39隨機(jī)數(shù)
- expr $[RANDOM%39] + 1 # 注意操作符兩邊的空格
-
限制apache每秒新建連接數(shù)為1,峰值為3
- iptables -A INPUT -d 172.16.100.1 -p tcp -dport 80 -m limit -limit 1/second -j ACCEPT
-
怎么把腳本添加到系統(tǒng)服務(wù)里,即用service來調(diào)用?
- 腳本里添加
- #!/bin/bsh
- # chkconfig: 345 85 15
- # description: httpd
- chkconfig httpd -add
- service start httpd
- 腳本里添加
-
按修改時間排序顯示目錄中的文件
- ls -lrt /etc
-
打印文件的權(quán)限值
- stat -c %a /etc/inittab
-
查看 ARP 緩存記錄的命令是?
- “arp –a”
-
軟件工具的原則
- 一次做好一件事
- 處理文本行,不要處理二進(jìn)制數(shù)據(jù)
- 使用正則表達(dá)式
- 默認(rèn)使用標(biāo)準(zhǔn)輸入、輸出
- 避免喋喋不休
- 輸出格式必須與可接受的輸出格式一致
- 讓工具去做困難的部分
- 構(gòu)建特定工具前,先想想
-
獲取密碼
- printf “Enter new password:”
- stty -echo
- read pass < /dev/tty
- printf “Enter again:”
- read pass2 < /dev/tty
- stty echo
-
在程序中執(zhí)行跟蹤:
- set -x:打開跟蹤功能
- set +x:關(guān)閉跟蹤功能
-
為/home/qiuye目錄結(jié)構(gòu)建立一份副本在/home/qy下
- find /home/qiuye -type -d -print | sed ‘s;/home/qiuye/;/home/qy/;’ | sed ‘s/^/mkdir /’ | sh -x
-
sed ‘s/Tony/Camus/2’:只替換第二次匹配到的
-
單詞頻率過濾器
- tr -cs A-Za-z’ ‘\n’ | tr A-Z a-z | sort | uniq -c | sort -k1,1nr -k2 | head 25
-
tcpdump tcp port 80 -s 0 -w net_stat.pcap
歡迎訪問我的網(wǎng)站:
BruceOu的嗶哩嗶哩
BruceOu的主頁
BruceOu的博客
CSDN博客
接收更多精彩文章及資源推送,請訂閱我的微信公眾號:
總結(jié)
以上是生活随笔為你收集整理的《求职》第四部分 - 操作系统篇 - Linux基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阶段三-02 用例之间上下文传递
- 下一篇: Linux云计算-02_CentOS L