linux運維必備178個命令

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

  1. 根據顏色區分,深藍色爲目錄,白色爲文件
  2. ls –l 輸出結果中以d開頭的絕對是目錄
  3. ls –F或-p(先後加斜槓)經過給目錄加標識,而後經過過濾標識就是目錄
  4. 上面的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

  1. 根據顏色區分,深藍色爲目錄,白色爲文件
  2. ls –l 輸出結果中以d開頭的絕對是目錄
  3. ls –F或-p(先後加斜槓)經過給目錄加標識,而後經過過濾標識就是目錄
  4. 上面的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#

相關文章
相關標籤/搜索