linux運維必備178個命令
●線上查詢及幫助命令(2 個) ●文件和目錄操做命令(13 個)
●查看文件及內容處理命令(22 個) ●文件壓縮及解壓縮命令(4 個)
●信息顯示命令(12 個) ●搜索文件命令(4 個)
●用戶管理命令(9 個) ●基礎網絡操做命令(11 個)
●深刻網絡操做命令(5 個) ●有關磁盤文件系統的命令(8 個)
●關機和查看系統信息的命令(3 個) ●系統安全相關命令(10 個)
●查看系統用戶登錄信息的命令(6 個) ●查看硬件信息相關命令(8 個)
●系統性能監視高級命令(10 個) ●進程管理:(16 個)
●很是危險的系統命令(5 個) ●linux 系統3位劍客(3 個)
●其它(16 個) html
線上查詢及幫助命令(2 個)
man help
文件和目錄操做命令(13 個)
ls stat tree pwd mkdir rmdir cd touch cp mv rm ln find rename
ls list(列表) 列表目錄文件 ls -lhi
例子:ls / 列根/目錄下目錄和文件; ls a.doc 列舉文件a.doc的全部信息
-l(long)長格式列舉細節,-d(directorys)查看目錄 -h 人類可讀 -a 所有包括隱藏文件 -f 列舉文件類型 -R 遞歸列舉 -F 給目錄最後加斜線
-i inode節點號 例如:ls –lhi 查看inode節點數量: df –i
1節點號 2屬性權限 3硬連接數 4所屬者 5所屬組 6大小 79修改時間 10名
inode小結 磁盤被分區並格式化爲ext4文件系統後會產生必定數量的inode和block
索引節點的做用是存放文件的屬性信息以及做爲指針指向文件block位置
Ext3ext4 文件系統 block 纔是存放文件實體的位置
Inode是磁盤上的一塊存儲空間,默認大小256字節
Inode爲一串數字,在系統裏每一個文件inode號是惟一的
inode相同的文件是互爲硬連接文件,能夠認爲是一個文件
block的大小通常有1k,2k,4k幾種,其中引導分區爲1k
若是一個文件很大,可能佔有多個block,若是很小,至少佔1個
mkfs.ext4 –b 2048 -I 256 /dev/sdb
-p 給不一樣類型文件加標識
stat 查看單個文件屬性 例如: stat /etc/passwd
tree 顯示目錄樹 (須要yum安而且設置LANG=en) 不加參數爲顯示當前目錄下全部目錄 通常用法:tree -difL 2
-a顯示全部包括隱藏
-d只顯示目錄
-L 2只顯示目錄的2層
-f顯示完整的目錄結構
-i不顯示前面的橫槓
-F普通文件不顯示/
pwd print work directory 打印當前工做目錄
mkdir make directorys 建立目錄 例子:mkdir /data 在根/下建立data目錄 -p能夠遞歸建立 例如 mkdir a/b/c/d/e
cd change directory 改變目錄路徑例子: cd /etc cd - 上一次目錄 cd .. 上一級目錄
touch 建立文件或更新文件時間戳atime等時間信
cp copy -r 遞歸; -a 至關於-pdr; -p 連同屬性一塊兒複製過去,但上下文會繼承目標目錄的上下文,而非默認屬性
配合大括號使用 {} bash A{B,C} bash AB AC
同一路徑下:cp /etc/ssh/sshd_conf{,.bak} 不一樣路徑下: cp /etc/{ssh/sshd_conf,tmp/}
In 硬鏈接 例子: In -s 源文件 目標文件 軟鏈接是不要s屬性(symbolic的意思)
rm remove -f(force)強制,-r(recursive)遞歸,用於刪除目錄
mv move 移動文件或者目錄 例子 mv find /date -type f -name "*.txt"
/tmp/ 與find聯用
find 查找格式爲 find 【在哪裏查的絕對路徑】 -type -f文件 -d目錄 -c字符 -b塊 -s通訊文件 -name 【文件名】 -size [【大小+1M,1M,-1M】 -mtime 【修改時間:+7,7,-7】天(modify/change/access三種)!感嘆號爲取反 -exec 執行什麼動做 【動做: mv {} /tmp】 \; -prune –print 當輸出文件夾時只輸出頂目錄:
find /etc/* -type d –prune –print | awk -F\/ '{print $3}'
查找時如何區分文件和目錄?node
- 根據顏色區分,深藍色爲目錄,白色爲文件
- ls –l 輸出結果中以d開頭的絕對是目錄
- ls –F或-p(先後加斜槓)經過給目錄加標識,而後經過過濾標識就是目錄
-
上面的find 查找類型爲 d的。 linux
例如:find /tmp/oldboy -type f ! -name passwd | xargs rm -f 刪除/tmp/oldboy下全部文件除了passwd
find /var/log -type f -name 「.log」 -size +1M -mtime +7 -exec mv {} /tmp \; 查找/var/log下全部7天之前以log結尾的大於1M的文件移動到/tmp下
rename 更名 例如:rename aa abc baa 將baa文件中的aa 替換爲 abc 即babc
結合正則表達式作:
-n 直接在終端打印結果,而非實際執行,肯定無誤後再去掉-n
-v 打印被修改爲功的文件
-f 若重名,覆蓋已經存在的文件,慎用!
例如:將全部.nc文件中的Sam32替換成Stm32:
rename -v ‘s/ Sam32/ Stm32’ *.nc
查看文件及內容處理命令(22 個)
cat tac rev more less head tail cut split paste sort uniq wc iconv dos2unix file diff vimdiff chattr lsattr
cat 查看文件內容
tac 行反序查看文件內容,與cat相反 能夠與其餘命令連用
例如:tail -3 /etc/passwd | tac 反行向顯示該文件最後三行
rev 行不變,每行字符串反向輸出
more 分頁顯示文件內容,格式爲:more file_name 能夠與其餘命令連用
例如: cat /etc/passwd | more
能夠經過參數-數字 來限制每頁顯示的行數 例如: more -12 /var/log/syslog
-c 爲清除當前內容,直接顯示下一頁內容
+/strig用來搜索例如:more +/abc /var/log/syslog 在該文件中搜索「abc」
摁空格顯示下一頁,摁b顯示上一頁
less 與more差很少,可是最後不會退出,也不會加載文件只是顯示
head 讀取文件的前n行 例如: head -n 3 /etc/passwd
打印文件aaa 2-5行 : head -5 aaa | tail -4
tail 讀取文件末尾的後n行
cut 針對行進行豎向切割,
例如: cut -b -9 abc 顯示abc文件每行的前9個字符
cut –b 9- abc 顯示abc文件每行的第9字符之後的
cut –d: -f1,3-5 顯示以冒號分割的第1 3至5 列
split 針對日誌文件分割,例如:split -b 500k date.file -d -a 3 part
若是想用數字後綴使用-d不然字母,-a length指定後綴長度,最後參數爲前綴名
paste 粘貼的含義,將兩個行數相同的文件,其內容放在相同行。-s 按列對應放
例如:paste file1 file2 paste -s file1 file2
sort 排序,按行從首字母向後依次比較ASCⅡ碼值,升序輸出到屏幕
-n是按照數字大小排序,-r是以相反順序,
-k是指定須要愛排序的欄位,-t指定欄位分隔符爲冒號
sort -nrk 3 -t: abc 將以:分隔的 第三列按行排序 輸出
uniq 忽略重複行,通常與sort連用 例子 sort file.txt | uniq -c 而且顯示重複行的次數
wc 統計文件 -l行數 -w單詞數 -c字節數 文件名 通常連用例如:
統計當前文件夾下有多少個文件 ls -l | wc –l
統計/etc/passwd中使用shell:/sbin/nologin的使用人數:
cat /etc/passwd | awk -F: '/sbin\/nologin$/' | wc -l
iconv 字符轉碼
dos2unix 將dos文件轉換成unix文件格式
file 顯示文件類型
diff 比較文件的不一樣參數較多不一一列舉
vimdiff Vim模式比較文件,且可編輯 vim file1 file2
chattr 用來改變文件目錄的更底層屬性 例如:chattr +i /etc/resolv.conf 去掉就是 -i
lsattr 用來查看文件目錄的更底層屬性 例如:lsattr /etc/resolv.conf
egrep
文件壓縮及解壓縮命令(4 個)
tar unzip gzip zip
tar: 打包壓縮
-c 歸檔文件
-x 解壓縮文件
-z gzip壓縮文件
-j bzip2壓縮文件
-v 顯示壓縮或解壓縮過程 v(view)
-f 使用檔名
例:tar -cvf /home/abc.tar /home/abc 只打包,不壓縮
tar -zcvf /home/abc.tar.gz /home/abc 打包,並用gzip壓縮
tar -jcvf /home/abc.tar.bz2 /home/abc 打包,並用bzip2壓縮
固然,若是想解壓,就直接替換上面的命令
tar -cvf / tar -zcvf / tar -jcvf 中的「c」 換成「x」 就能夠了。
zip 壓縮文件 例如 zip -q -r html.zip
unzip 解壓ZIP格式壓縮包 例如 unzip html.zip
gzip 壓縮文件,例如 gzip -r log.tar 會將文件log.tar壓縮成log.tar.gz文件
-dz 解壓,例如 gzip -dz log.tar.gz
-r 爲對目錄操做 例如: gzip -rv dir5 全部dir5下的文件變成.gz 文件夾存在ios
信息顯示命令(12 個)
uname hostname dmesg uptime file stat du df top free date cal
uname 顯示系統信息
uname -a 顯示內核、當前時間
hostname 顯示主機名
dmesg 顯示linux內核的環形緩衝區中的全部驅動
| grep sda 列出全部被內核檢測到的硬盤設備
| grep usb (dma tty memory) 等等信息
uptime 輸出結果:16:26:11 up 7:50, 2 users, load average: 0.66, 0.53, 0.27
打印系統當前時間 up開啓多久 用戶鏈接數 系統平均負載,統計1,5,15分鐘的
系統平均負債,即特定時間內運行隊列中的平均進程數,應該小於3
file 顯示文件類型
stat 顯示指定文件的詳細信息,比ls更詳細
du -sh [文件] 顯示文件的大小s僅顯示統計 h以KMG大小單位輸出
df 查看磁盤掛載狀況 例如: df -h
fdisk 查看物理磁盤
top 動態查看系統進程
free 查看內存與swap分區
date 打印時間 ; -s 20171111指定一個時間正則表達式
cal 打印日曆,-j 顯示一年的第幾天;-3 顯示含左右3個月的日曆
搜索文件命令(4 個)
which find whereis locate type
Which 查找並顯示給定命令的絕對路徑 例子:which pwd 結果爲/bin/pwd
find 查找格式爲 find 【在哪裏查的絕對路徑】 -type -f文件 -d目錄 -c字符 -b塊 -s通訊文件 -name 【文件名】 -mtime 【修改時間:+7,7,-7】(modify/change/access三種)!感嘆號爲取反 -exec 執行什麼動做 【動做: mv {} /tmp】 \;
-prune –print 當輸出文件夾時只輸出頂目錄:
find /etc/* -type d –prune –print | awk -F\/ '{print $3}'
查找時如何區分文件和目錄?shell
- 根據顏色區分,深藍色爲目錄,白色爲文件
- ls –l 輸出結果中以d開頭的絕對是目錄
- ls –F或-p(先後加斜槓)經過給目錄加標識,而後經過過濾標識就是目錄
- 上面的find 查找類型爲 d的。
whereis 查找-b二進制文件,-m manual路徑下的說明文件,-s 源代碼文件
locate 配合數據庫查看文件位置,速度快
type 顯示指定命令的類型,判斷給出的指令是內部指令仍是外部,也能夠看內部路徑
用戶管理命令(9個)
useradd usermod userdel groupadd passwd chage id su sudo
useradd 添加用戶 語法:useradd 用戶名 -s 指定登陸方式 -g 指定組 -G 指定從屬組
usermod 用戶信息修改 例如:usermod -G staff newuser2 將用戶添加到staff組中
-G 改從屬組 -g 改組 -u 改ID -l 改用戶名 -L鎖定帳號 -U解鎖帳號
userdel 刪除用戶,若不加選項,則僅刪除用戶賬號,而不刪除相關文件。
例子: userdel linuxde //刪除用戶linuxde,但不刪除其家目錄及文件;
userdel -r linuxde //刪除用戶linuxde,其家目錄及文件一併刪除;
groupadd 建立一個新組 例子: groupadd -g 1099 aaa 建立一個ID爲1099名叫aaa組
passwd 設置密碼與過時時間,通常只有root用戶可用,普通用戶只能改本身密碼
-d:刪除密碼,僅有系統管理者才能使用 passwd -d donny
-f:強制執行 passwd -fd donny
-k:設置只有在密碼過時失效後,方能更
-l:鎖住用戶不能更改密碼 passwd -l donny
-u:解開已上鎖的賬號 passwd -u donny
-s:列出密碼的相關信息,僅有系統管理者才能使用
改密碼另以命令:echo 「123456」 | passwd –-stdin 用戶名
chage 修改帳號密碼有效期
-m:密碼可更改的最小天數。爲零時表明任什麼時候候均可以更改密碼。
-M:密碼保持有效的最大天數。 chage -M 90 donny
-w:用戶密碼到期前,提早收到警告信息的天數。 chage -w 10 donny
-E:賬號到期的日期。過了這天,此賬號將不可用。 chage -E 15 donny
-d:上一次更改的日期。
-i:停滯時期。若是一個密碼已過時這些天,那麼此賬號將不可用。
-l:例出當前的設置。由非特權用戶來肯定他們的密碼或賬號什麼時候過時。
id 顯示用戶ID和組ID 不帶選項打印活躍用戶的信息 例子: id donny
-a 打印當前用戶用戶名、UID 和該用戶所屬的全部組
-g或--group 顯示用戶所屬羣組的ID。
-G或--groups 顯示用戶所屬附加羣組的ID。
-n或--name 顯示用戶,所屬羣組或附加羣組的名稱。
-r或--real 顯示實際ID。
-u或--user 顯示用戶ID。
su su user 切換用戶,加載配置文件.bashrc
su - user 切換用戶,加載配置文件/etc/profile ,加載bash_profile
sudu 以他人的身份來執行命令,在/etc/sudoers 中設置foobar ALL=(ALL) ALL
第一個ALL是指網絡中的主機,咱們後面把它改爲了主機名,它指明foobar能夠在此主機上執行後面的命令。第二個括號裏的ALL是指目標用戶,也就是以誰的身份去執行命令。最後一個ALL固然就是指命令名了。例如,咱們想讓foobar用戶在linux主機上以jimmy或rene的身份執行kill命令,這樣編寫配置文件:foobar linux=(jimmy,rene) /bin/kill
基礎網絡操做命令(11 個)
telnet ssh scp wget ping route ifconfig ifup ifdown netstat ip
telnet 遠程登錄,23號端口,xinetd服務 例子:telnet 192.168.120.121 須要輸入用戶名密碼
ssh 遠程登錄, 22號端口,sshd服務 例子: ssh donny@192.168.120.121 –p 22
scp 遠程安全拷貝,基於ssh,把當前一個文件cp到遠程另一臺主機上,
例如: scp /home/donny/abc.tar.gz root@192.168.120.121:/home/root
若是想反過來操做,把文件從遠程主機copy到當前系統,也很簡單:
scp root@/abc.tar.gz 192.168.120.121:/home/root/abc.tar.gz /home/donny/abc.tar.gz
wget 用來從指定的URL下載文件,例:wget http://www.linuxde.net/testfile.zip
wget ftp-url 匿名下載ftp服務器文件,下面爲帶用戶名密碼下載
wget --ftp-user=USERNAME --ftp-password=PASSWORD url
ping 使用ICMP傳輸協議,發出要求迴應的信息,測試聯通性。
ping 192.168.1.1 或者 ping www.server.com
route 設置靜態路由,重啓網卡或機器後會失效,永久有效改配置文件/etc/rc.local
route 不加參數爲顯示當前路由(其中flags爲節點狀態,U開啓、G網關、D動態性地寫入、M由路由導向器動態修改的、!關閉)
route add -net 0.0.0.0 netmask 0.0.0.0 dev eth0 增長一條默認路由
route add -net 192.168.0.0 netmask 255.255.255.0 reject 屏蔽此路由
route del -net 192.168.0.0 netmask 255.255.255.0 reject 取消屏蔽
route add fefault gw 192.168.120.240 添加一個默認網關(重啓失效)
route del fefault gw 192.168.120.240 刪除一個默認網關
ifconfig 顯示激活的網絡設備信息,可配置可是重啓不保存不建議
ifup 激活指定的網絡接口: ifup eth0
ifdown 禁用指定的網絡接口: ifdown eth0
netstat 打印網絡系統的狀態信息
查看p pid號l 監聽的端口a端口 n用IP顯示 t TCP傳輸的鏈接 r 路由flags
netstat -plantr
查看鏈接某服務端口最多的IP地址:netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
ip 版本6中配置ip命令
刪除網卡配置 ip a f dev eth0
添加網卡配置 ip a add 192.168.1.1/24 dev eth0
深刻網絡操做命令(5 個)
lsof mail nslookup dig
lsof lsof命令用於查看你進程開打的文件,打開文件的進程,進程打開的端口(TCP、UDP)。找回/恢復刪除的文件。是十分方便的系統監視工具,由於lsof命令須要訪問核心內存和各類文件,因此須要root用戶執行。
查看哪個程序正在佔用80端口 lsof –i tcp:80
mail 郵件發送和接受命令 mail -s 「hello」 donny@linuxde.net
使用管道進行郵件發送 echo 「hello」 | mail -s donny@linuxde.net
nslookup 查詢DNS解析是否成功
dig 查看域名系統是否工做正常:dig www.baidu.com
查看某個域名的整個解析過程:#dig @8.8.8.8 www.baidu.com +trace
有關磁盤文件系統的命令(8 個)
mount umount df du fsck dd dumpe2fs dump
mount 掛載
umount 取消掛載
df 顯示文件掛載 例如: df -h
du 測量大小 例如: du -sh aaa
fsck 修復文件系統中的錯誤 分區有問題 : fsck -y /etc/sdb2
dd dd if=/dev/zero of=abc bs=1M count=100
du -sh abc 能夠看到生成了 100M的一個文件
/dev/zero是一個字符設備,會不斷返回0值字節
dumpe2fs 命令用於打印「ext2/ext3」文件系統的超級塊和快組信息。直接使用
dumpe2fs /dev/sda3 | egrep –i 「block count | Inode count」
------查看inode節點 和 block塊 數量
dump 備份ext2和3文件系統,
例如將/home目錄備份到/tmp/home.bak,層級0,並記錄在/etc/dumpdates
dump -0u -f /tmp/home.bak /home
關機和查看系統信息的命令(3 個)
shutdown halt init
shutdown 關機 :shutdown +5 「提示信息」
halt 關機
init 查看系統進程命令:ps -ef | head
查看init的配置文件:more /etc/inittab
查看系統當前運行的級別:runlevel
查看當前操做系統: cat /etc/redhat-release
系統安全相關命令(10 個)
chmod chown chgrp chage passwd su sudo umask chattr lsattr
chmod chmod u+x,g+w f01 //爲文件f01設置本身能夠執行,組員能夠寫入的權限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01 //對文件f01的u,g,o都設置可執行屬性
還有粘滯位概念:
chmod u+s [命令] 以此命令所屬者名義執行
chmod g+s [命令]或[文件夾] 在此文件夾下或用此命令,建立的文件都繼承其組
chmod o+t [文件]或[文件夾] 除了root和擁有着,其餘人都沒法刪除該文件/夾
chown chown user:market f01 //把文件f01給uesr,添加到market組
chgrp chgrp -R mengxin /usr/meng
chage 修改密碼過時時間
-m:密碼可更改的最小天數。爲零時表明任什麼時候候均可以更改密碼。
-M:密碼保持有效的最大天數。
-w:用戶密碼到期前,提早收到警告信息的天數。
-E:賬號到期的日期。過了這天,此賬號將不可用。
-d:上一次更改的日期。
-i:停滯時期。若是一個密碼已過時這些天,那麼此賬號將不可用。
-l:例出當前的設置。由非特權用戶來肯定他們的密碼或賬號什麼時候過時。
chage -M 60 donny
passwd 設置密碼與過時時間,通常只有root用戶可用,普通用戶只能改本身密碼
-d:刪除密碼,僅有系統管理者才能使用 passwd -d donny
-f:強制執行 passwd -fd donny
-k:設置只有在密碼過時失效後,方能更
-l:鎖住用戶不能更改密碼 passwd -l donny
-u:解開已上鎖的賬號 passwd -u donny
-s:列出密碼的相關信息,僅有系統管理者才能使用
改密碼另以命令:echo 「123456」 | passwd –-stdin 用戶名
su su user 切換用戶,加載配置文件.bashrc
su - user 切換用戶,加載配置文件/etc/profile ,加載bash_profile
sudu 以他人的身份來執行命令,在/etc/sudoers 中設置foobar ALL=(ALL) ALL
第一個ALL是指網絡中的主機,咱們後面把它改爲了主機名,它指明foobar能夠在此主機上執行後面的命令。第二個括號裏的ALL是指目標用戶,也就是以誰的身份去執行命令。最後一個ALL固然就是指命令名了。例如,咱們想讓foobar用戶在linux主機上以jimmy或rene的身份執行kill命令,這樣編寫配置文件:foobar linux=(jimmy,rene) /bin/kill
umask 文件權限掩碼,取消什麼權限
chattr 用來改變文件目錄的更底層屬性 例如:chattr +i /etc/resolv.conf 去掉就是 -i
lsattr 用來查看文件目錄的更底層屬性 例如:lsattr /etc/resolv.conf
查看系統用戶登錄信息的命令(6 個)
whoami who w last lastlog users
whoami 打印當前用戶名
who 看有哪些用戶登錄
w 看有哪些用戶登錄 比who詳細
last 用於顯示用戶最近登陸信息。單獨執行last命令,它會讀取/var/log/wtmp的文件,並把該給文件的內容記錄的登入系統的用戶名單所有顯示出來。
lastlog 用於顯示系統中全部用戶最近一次登陸信息。
lastlog文件在每次有用戶登陸時被查詢。可使用lastlog命令檢查某特定用戶上次登陸的時間,並格式化輸出上次登陸日誌/var/log/lastlog的內容。它根據UID排序顯示登陸名、端口號(tty)和上次登陸時間。若是一個用戶從未登陸過,lastlog顯示Never logged。注意須要以root身份運行該命令。
users 看有哪些用戶登錄 只顯示用戶名和登錄會話
查看硬件信息相關命令(8 個)
ifconfig free fdisk ethtool mii-tool dmidecode dmesg lspci
ifconfig 顯示激活的網絡設備信息,可配置可是重啓不保存不建議
free 查看內存與swap分區
fdisk 用於觀察硬盤實體使用狀況,fdisk -l
也可對硬盤分區 fdisk /dev/sdb
m幫助;p查看當前分區狀況;d刪除分區;n添加分區;w保存
建立分區時,擴展分區須要再建立成邏輯分區纔可以使用
ethtool 用於獲取以太網卡的配置信息,或者修改這些配置 ethtool eth0
mii-tool 用於查看、管理介質的網絡接口的狀態 mii-tool -v eth0
dmidecode 獲取有關硬件方面的信息
查看服務器型號:dmidecode | grep 'Product Name'
查看主板的序列號:dmidecode |grep 'Serial Number'
查看系統序列號:dmidecode -s system-serial-number
查看內存信息:dmidecode -t memory
查看OEM信息:dmidecode -t 11
dmesg 檢查和控制內核的環形緩衝區/var/log/dmesg中的信息
系統性能監視高級命令(10 個)
內存:top vmstat mpstat iostat sar ipcs ipcrm lsof strace:跟蹤一個進程的系統調用 ltrace:跟蹤進程調用庫函數的情
top 動態查看系統進程
vmstat 顯示虛擬內存狀態 例如:vmstat 3 5 間隔3秒報告5次
mpstat 顯示各個可用CPU的狀態/proc/stat文件中
iostat 監視系統輸入輸出設備和CPU的使用狀況 iostat -x /dev/sda1
標示 說明
Device 監測設備名稱
rrqm/s 每秒須要讀取需求的數量
wrqm/s 每秒須要寫入需求的數量
r/s 每秒實際讀取需求的數量
w/s
每秒實際寫入需求的數量
rsec/s 每秒讀取區段的數量
wsec/s 每秒寫入區段的數量
rkB/s 每秒實際讀取的大小,單位爲KB
wkB/s 每秒實際寫入的大小,單位爲KB
avgrq-sz 需求的平均大小區段
avgqu-sz 需求的平均隊列長度
await 等待I/O平均的時間(milliseconds)
svctm I/O需求完成的平均時間
%util 被I/O需求消耗的CPU百分比
sar 系統運行狀態統計工具,能夠連續對系統取樣,得到大量的取樣數據,消耗的系統資源很小
-A:顯示全部的報告信息;
-b:顯示I/O速率;
-B:顯示換頁狀態;
-c:顯示進程建立活動;
-d:顯示每一個塊設備的狀態;
-e:設置顯示報告的結束時間;
-f:從指定文件提取報告;
-i:設狀態信息刷新的間隔時間;
-P:報告每一個CPU的狀態;
-R:顯示內存狀態;
-u:顯示CPU利用率;
-v:顯示索引節點,文件和其餘內核表的狀態;
-w:顯示交換分區狀態;
-x:顯示給定進程的狀態。
sar -o temp 60 10 觀察系統部件10分鐘,並對數據進行排序
ipcs 進程間通訊設施的狀態 例如: ipcs -apm
ipcrm 刪除一個或更多的消息隊列、信號量集或者共享內存標識 先用ipcs -a 看 再用ipcrm -m ID號
lsof 查看你進程開打的文件
-a:列出打開文件存在的進程;
-c<進程名>:列出指定進程所打開的文件;
-g:列出GID號進程詳情;
-d<文件號>:列出佔用該文件號的進程;
+d<目錄>:列出目錄下被打開的文件;
+D<目錄>:遞歸列出目錄下被打開的文件;
-n<目錄>:列出使用NFS的文件;
-i<條件>:列出符合條件的進程。(四、六、協議、:端口、 @ip )
-p<進程號>:列出指定進程號所打開的文件;
-u:列出UID號進程詳情;
strace 診斷、調試、統計與一體的工具,後續再研究!
進程管理:(16 個)
bg:後臺運行 fg:掛起程序 jobs:顯示後臺程序 kill,killall,pkill:殺掉進程 crontab:設置定時 ps:查看進程 pstree:顯示進程狀態樹 top:顯示進程 nice:改變優先權 nohup:用戶退出系統以後繼續工做 pgrep:查找匹配條件的進程
bg bg命令與在指令後面添加符號"&"的效果是同樣的:bg 1 任務號
fg 將後臺任務轉換到前臺執行
jobs 顯示後臺程序 -l:顯示進程號; -p:僅任務對應的顯示進程號; -n:顯示任務狀態的變化; -r:僅輸出運行狀態(running)的任務; -s:僅輸出中止狀態(stoped)的任務。
kill 刪除執行中的程序或工做,先用ps查找進程,而後用kill殺掉:ps -ef | grep vim ; kill 5591
killall 使用進程的名稱來殺死進程,使用此指令能夠殺死一組同名進程。咱們可使用kill命令殺死指定進程PID的進程,若是要找到咱們須要殺死的進程,咱們還須要在以前使用ps等命令再配合grep來查找進程,而killall把這兩個過程合二爲一,是一個很好用的命令
-u:殺死指定用戶的進程 ; -l:忽略大小寫的不一樣
pkill 也就是說:kill對應的是PID,pkill對應的是command
crontab 計劃任務服務 crond 默認隨系統安裝,查看是否開啓:
chkconfig --list crond
/etc/init.d/crond {start|stop|status|reload|restart|condrestart}
ps –ef | grep crond
crontab -e -u Donny
分 時 日 月 周 命令絕對路徑 >/dev/null 2>&1 不返回消息提示
‘每’; - ‘到’; ,和 ; /間隔n 。
例子: 00 23,00-07/2 /application/apache/bin/apachectl graceful
天天晚上23點到第二天早上7點 每隔2隔小時 重啓阿帕奇服務 注意分不能爲
/30
開發—虛擬機測試—IDC機房測試環境—IDC正式環境(分組,灰度發佈)
ps 報告當前系統的進程狀態: ps -aux | grep 列出須要的進程 或者ps -ef
-a 顯示全部終端機下執行的程序,除了階段做業領導者以外
-u 以用戶爲主的格式來顯示程序情況,也可以使用用戶名稱來指定
-x 顯示全部程序,不以終端機來區分
-f 顯示UID,PPIP,C與STIME欄位。
-e顯示全部程序。
pstree 樹狀圖的方式展示進程之間的派生關係,顯示效果比較直觀
顯示當前全部進程的進程號和進程id: pstree -p
顯示全部進程的全部詳細信息,遇到相同的進程名能夠壓縮顯示: pstree -a
top 動態查看系統進程
nice 指定的進程調度優先級,例子:nice -19 tar zcf pack.tar.gz documents
nohup 將程序以忽略掛起信號的方式運行起來,若是使用nohup命令提交做業,那麼在缺省狀況下該做業的全部輸出都被重定向到一個名爲nohup.out的文件中,除非另外指定了輸出文件:
nohup command > myout.file 2>&1 &
pgrep 名稱爲依據從運行進程隊列中查找進程,
-o:僅顯示找到的最小(起始)進程號;
-n:僅顯示找到的最大(結束)進程號;
-l:顯示進程名稱;
-P:指定父進程號;
-g:指定進程組;
-t:指定開啓進程的終端;
-u:指定進程的有效用戶ID。
顯示用戶爲donny,進程名爲sh 的進程PID: pgrep -u donny sh
很是危險的系統命令(5 個)
mv rm fdisk parted dd
parted 與fdisk同樣分區可是更強大,可調整還能夠支持NTFS,FAT32格式
linux 系統3位劍客1小弟(3 個)
grep sed awk tr
grep 三劍客老三 grep a * 查找當前目錄下包含a 的文件,並輸出文件名:該行
-i 不區分大小寫
–v 反選
–q不返回任何信息除了正確與否
-n 輸出顯示所在行行號
-o 只顯示匹配的內容,每一個分一行顯示出來
-w 把篩選當作一個單詞 做用與<>同樣
-x 只有篩選在這同樣才顯示 grep -x 「bin」 abc
-P 啓用perl語言數據庫
- -E 啓用擴展正則表達’
-r 遞歸查下去 grep -r 「abc」 dir/
-f 比較兩個文件相同打印出來 grep –f file1 file2 -v 反選
grep -Eo "\<[a-Z]{3}\>" file1 --color
grep -Ei "\<[a-Z][a-Z][a-Z]\>" file1 --color 都是匹配3個字符
grep -Ei "\<...\>" file1 --color
echo "abccccc" |grep -Ei "abc+" –color 1個多個
echo "abccccc" |grep -Ei "abc" –color 0個多個
echo "abccccc" |grep -Ei "abc?" –color 任意1個
echo "abccccc" |grep -Ei "abc{3}" –color 匹配3個c
echo "a2523423fjaig423n2352k24n" | grep "^[a-Z]" --color
a2523423fjaig423n2352k24n
echo 「123d456」| grep 「123[a-Z]456」 --color
123d456
echo 「123df456」| grep 「123[a-Z]456」 --color
echo 「123456」| grep 「123[a-Z]456」 --color
都出不來
echo 「123d456」| grep 「123[^a-Z]456」 --color 中括號裏的^尖表示取反
echo 「123456」| grep -i「123.456」 --color
.點表示任意一個字符
echo 「123456」| grep -i「123」 --color
表明 前面一個字符有0個或者多個 ,後面沒有
echo 「123456」| grep -i「123.」 --color
. 表明任意字符串
echo 「123456」| grep -Ei「(123)」 --color
小括號當一個總體 E顯示出來
grep 「abc」 dir/ 在目錄dir下全部文件中查找含有abc字符串的文件
echo "rich.wang@sohu-163.com.cn" | grep -Ei 「[a-Z0-9.%#!-]+@[a-Z0-9.-]+.[a-Z]{2,3}」 --color
篩選須要的內容 (-v 排除的內容) 例如:
①grep 20 -A 10 打印a文件的20行與後面10行 after
②grep 25 -C 5 a 打印25行的先後5行 context
③grep 30 -B 10 a打印 30行的前10行 before
sed stream editor linux三劍客老二,流編輯器,實現對文件的增刪改替換
(--------- tr小弟 # cat file | tr "abc" "xyz" > new_file
【注意】這裏,凡是在file中出現的"a"字母,都替換成"x"字母,"b"字母替換爲"y"字母,"c"字母替換爲"z"字母。而不是將字符串"abc"替換爲字符串"xyz"。
結合awk 將文件權限輸出rwx-改成 數字顯示例子: ls –l /donny | cut –c2-10 | tr 「rwx-」 「4210」 | awk –F「」 ‘{print $1+$2+$3「」$4+$5+$6「」$7+$8+$9}’ -------)
sed 把文件所選內容每行依次,讀到內存模式空間,再匹配正則 ,匹配則完整輸出整行,再輸出模式空間中的內容,因此匹配的會被打印兩次
例如:sed ‘/abc/p’ file1這條命令的執行過程
將file1文件內容每行依次讀到內存模式空間,匹配abc 字符的則輸出整行,不匹配則不輸出,而後默認地將模式空間中的該行打印出來,因此匹配的會被打印兩行,而後再進行下一行重複工做直到末行。
p s d c a i這些操做都是針對模式空間 p打印a在下一行架i在上一行加c修改本行d刪除 s替換
sed -n '5p' file1
sed -n '1,5p' file1
sed -n '$p' file1 打印最後一行
sed -n '/^root/p' file1
sed '3iabc' file1 在3行上一行加一行abc
sed "3iabc\ndef" file1 在第三行上面加兩行
sed '$arich' file1 在最後一行下面加一行rich
sed '/localhost/aredhat' file1 在包含locolhost的行下添加一行寫redhat
sed '3crich' file1 把第3行改爲rich
sed '/root/crich' file1 把包含root的行 改爲rich
sed '3d' file1 刪掉第3行
sed ‘3d; 5d’file = sed ‘/abc/d; /def/d’file =sed -e ‘3d’ –e ‘5d’file
sed '1,3d' file1 把1到3行都刪掉
sed '3,$d' file1 把3到末尾行的都刪掉
sed '/abc/d' file1 把包含abc的都刪掉
sed '/abc/!d' file1 把包含abc的行不刪掉,其餘都刪掉
sed '/^$/d' file1 空白行都刪掉
sed '/^\s$/d' file1 把全s行都刪掉
echo "30%" | sed 's/%//'
= echo "30%" | tr –d 「%」
sed 's/root/rich/' file1 每行第一個root改成rich
= tr 「 root」 」rich」
sed 's/root/rich/g' file1 每行全部也就是全文章改
sed 's/root/rich/2' file1 每行第二個改
echo "ab/c def" | sed 's/ab\/c/xyz/'
echo "a b c" | sed 's/ //g'
sed '/rich/s/steven/john/g' file1 把rich這一行中的改了
sed -i '2,4s/^.$/def/' file1 把2行到4行全部改了
var1="root" 賦值root到變量
sed "/^$var1/crich" file1 把包含root的行全改了
sed '/ADDR/s/^/#/' file1 行首加#
sed '1,3d; s/rich/steven/' file1; 1到3行刪除 rich改成steven
sed -e '1,3d' -e 's/rich/steven/' file1 同上
sed 's/red/&hat/' file1 在後面加上
sed '/abc/,/xyz/s/rich/steven/' 匹配abc行與xyz行的
讀取第1行到模式空間
有沒有包含abc, 沒有, 不執行s/rich/steven/, 默認打印模式空間, 清空模式空間, 讀取下一行, 有沒有包含abc...有, 執行s/rich/steven/, 默認打印模式空間, 清空模式空間, 讀取下一行, 有沒有包含xyz, 沒有, 執行s/rich/steven/, 默認打印模式空間, 清空模式空間, 讀取下一行, 有沒有包含xyz...有, 執行s/rich/steven/, 默認打印模式空間, 清空模式空間, 讀取下一行, 有沒有包含abc...
sed '/abc/,/xyz/d' file1 刪除從第一個含有abc到含有xyz的行
sed -n '/abc/,/xyz/p' file1 顯示從第一個含有abc到含有xyz的行
sed '1,/abc/d' file1 刪除從第一行到第一個abc的行
echo "dev abcd" | sed -r 's/[a-z]+ [a-z]+/123/' 所有用123替換
echo "dev abcd" | sed -r 's/([a-z]+) ([a-z]+)/\2 \1/' 換位置 小括號表示的總體在後面能夠用參數\1 、\2 、\3表示 一共能夠用9個
echo "abcdef" | sed -r 's/^..$/111/'
111
echo "abcdef" | sed -r 's/^(.).$/\1/'
a
echo "abcdef" | sed -r 's/^..(.)$/\1/'
f
修改selinux的模式 :sed -rin '/^[a-Z]{7}=/s/=./=enforcing/' /etc/selinux/config
例如: ①sed -n '20,30p' a 打印a文件的20到30行 -n取消默認輸出 p默認的打印
②sed 's#要替換的字符#想替換成的內容#g' a ,替換格式 sed ‘s###g’a 只改了輸出,並無改文件內容,想改內容加參數-i,p打印s替換g全局
③-e是容許多項編輯
④sed -i 's#abc#bcd#g' find /a -type f -name "*.sh"
先找到/a目錄下全部以.sh結尾的文件 而且把全部這些文件裏面的abc換成bcd
abc文件內在包含有abc的行到def的行,中間的有xyz的字符改成333:
sed ‘/abc/,/def/s/xyz/333/’abc
sed ‘/DNS/s/^#//;s/yes/no/’ abc
sed -r‘/IP/s/[0-9.]+/192.168.69.10’ifcfg-eth0
read –p 「please enter an ip:」 A
sed –r 「/IP/s/[0-9.]+/$A/」 ifcfg-eth0
awk 三劍客老大,過濾輸出,一門語言用於處理日誌和文本。
取出包含字符串的行 : awk ‘/root/’ /etc/passwd
第二個參數包含 awk ‘$2 ~ /root/’ /etc/passwd
第二個參數等於 awk ‘$2 == /root/’ /etc/passwd
取反 awk ‘!/root/’ /etc/passwd
首先看是否有BEGIN語句塊,有執行;再逐行查看有沒有模式匹配,再執行常規語句塊;最後看有沒有END語句塊,有執行:
awk –F: ‘BEGIN{print 「hello」}/root/{print $1;}END{print 「bye」}’ passwd
輸出: hello
root
bye
取出大於1000字節的文件: ls –l | awk ‘NR>1 && $5 >=1000 {print $9;}’
變量: {print $0 NR NF $NF }
NR表明行號 例如: awk 'NR>19&&NR<31' a 打印a文件的20到30行 &&而且 NR==30等於, 也能夠被print;
Awk ‘END{print NR}’ abc 打印文件一共有多少行
NF表明該行有多少列
-F 指定分隔符 例如:awk -F "[ :]+" '{print $1,$2,$6}' aaa 打印aaa文件中以空格 和冒號:分隔的第一個和第2、六個參數。
awk 'NR>9&&NR<21' passwd | awk -F "[:]+" '{print $3}' > test.txt ==== awk -F 「:」’NR>9&&NR<21{print $3}’passwd > test.txt
打印出第二個參數爲rich 的 最後一個參數:
awk ‘$2 == 「rich」{print $NF}’ abc
-v選項 傳變量到awk, 只用改變外部變量就行
a=rich
awk –v x=$a ‘$2==x{print $NF}’ abc
還能夠多個外部變量
b=wh
awk –v x=$a –v y=$b‘$2==x && $3!= y {print $NF}’ abc
變量和正則連用 正則部分須要」」括起來
Awk –v x=$a ‘$5 ~ 「^」x ’ file1
取出ip a 中網卡eth0的IP地址
ip a | awk ‘/^[ \t]+inet / && !/lo$/ {print $2}’| awk –F/ ‘{print $1}’
{print}常規語句塊中間能夠接語句,也能夠寫成腳本
awk ‘{if($4 == 「wh」)print $2 ;else print $1}’ file1
awk ‘ {if($4 == 「wh」)print $1 ;else if ($4 == 「hn」)print $2; else if($4 == 「bj」)print $3; else print $5}’ file1
在awk中接shell命令:
找到能夠登陸的用戶,而且再當前文件夾下建立全部用戶的目錄:
awk -F: '/bash$/{print $1;}' /etc/passwd
for i in awk -F: '/bash$/{print $1;}' /etc/passwd
;do
mkdir $i
done;
等同於 awk ‘/bash$/{system(「useradd –g groupname 」$1)}’ /etc/passwdapache
其它(16個)
echo printf rpm yum watch alias unalias clear history eject time
nc xargs exec export unset ntsysv
echo 直接輸出指定的字符串
搞點有趣的,用echo命令打印帶有色彩的文字:
文字色:
echo -e "\e[1;31mThis is red text\e[0m"
This is red text
• \e[1;31m 將顏色設置爲紅色
• \e[0m 將顏色從新置回
顏色碼:重置=0,黑色=30,紅色=31,綠色=32,×××=33,藍色=34,洋紅=35,青色=36,白色=37
背景色:
echo -e "\e[1;42mGreed Background\e[0m"
Greed Background
顏色碼:重置=0,黑色=40,紅色=41,綠色=42,×××=43,藍色=44,洋紅=45,青色=46,白色=47
文字閃動:
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
紅色數字處還有其餘數字參數:0 關閉全部屬性、1 設置高亮度(加粗)、4 下劃線、5 閃爍、7 反顯、8 消隱vim
printf C語言輸出
rpm 安裝軟件包 例如:rpm -ivh Donny-package.rpm
卸載軟件包 rpm -e Donny-package 不能夠有後綴.rpm
yum 安裝程序
watch 檢測一個命令的運行結果,默認 watch 會以 2s 的間隔重複運行命令,-n 指定時間間隔
-d 高亮度顯示變化的區域,能夠拿他來監測你想要的一切命令的結果變化,
好比 tail 一個 log 文件,ls 監測某個文件的大小變化
watch -n 1 -d netstat -ant # 命令:每隔一秒高亮顯示網絡連接數的變化狀況
watch -n 1 -d 'pstree|grep http' # 每隔一秒高亮顯示http連接數的變化狀況。 後面接的命令若帶有管道符,須要加''將命令區域歸整。
watch 'netstat -an | grep:21 | \ grep<模擬***客戶機的IP>| wc -l' # 實時查看模擬***客戶機創建起來的鏈接數
watch -d 'ls -l|grep scf' # 監測當前目錄中 scf' 的文件的變化 watch -n 10 'cat /proc/loadavg' # 10秒一次輸出系統的平均負載
watch uptime watch -t uptime watch -d -n 1 netstat -ntlp watch -d 'ls -l | fgrep goface' # 監測goface的文件
watch -t -differences=cumulative uptime watch -n 60 from # 監控mail watch -n 1 "df -i;df" # 監測磁盤inode和block數目變化狀況
alias 查看和設置別名 例子:查看別名 直接輸入alias,設置別名 alias cp='cp -i'
永久生效須要追加到/etc/profile和/etc/bashrc文件中
echo「alias cp=‘cp -i’」>>/etc/profile && echo「alias cp=‘cp -i’」>>/etc/bashrc
unalias 取消別名
clear 清除當前屏幕終端上的任何信息
history 歷史記錄
eject 退出抽取式設備
time 用於統計給定命令所花費的總時間 例如: time ls
real時間是指掛鐘時間,也就是命令開始執行到結束的時間。這個短期包括其餘進程所佔用的時間片,和進程被阻塞時所花費的時間。
user時間是指進程花費在用戶模式中的CPU時間,這是惟一真正用於執行進程所花費的時間,其餘進程和花費阻塞狀態中的時間沒有計算在內。
sys時間是指花費在內核模式中的CPU時間,表明在內核中執系統調用所花費的時間,這也是真正由進程使用的CPU時間。
nc
xargs 從標準輸入獲取內容和執行命令 -n 一行幾個 例如 xargs -n 4 < test.txt 用一行輸出test.txt的全部內容
不加參數默認無限大,1行全顯示與管道連用 | xargs
-i 參數 把前面找到的文件關聯到{}中,而且將xargs的每項名稱,一行一行復制給{},讓不支持批處理的命令按行執行
例如: find / -type f -name 「donny.*」| xargs -i mv {} /tmp/
exec 調用並執行指令的命令
查找全部rpcuser用戶的文件,而且把他們拷貝到/mnt下
find / -user rpcuser -exec cp -Rfp {} /mnt \;
export 將上一個shell的變量,利用到下一個shell中
unset 刪除已定義的shell變量 -f 僅刪除函數 -v 僅刪除變量c#