Shell腳本命令經常使用技巧
- 若是一個命令只有一次輸出,但想持續觀察輸出變化,使用watch -d -n1 'df -h'可行,df -h輸出一次硬盤使用狀況,用上面指令能夠持續觀察。-d表示相鄰輸出若是有差別要高亮標記,-n1表示每隔一秒執行一次df -h指令。
- 觀察網絡接口流量sar -n DEV 1 200,DEV 1表示監控第一個網卡,200表示輸出200次監控結果。
- 日誌文件很大,只想處理最後的十萬行, tail -n 100000 access.log > accesspart.log, accesspart.log裏就是最後的十萬行。
- $能夠理解爲取內容運算符 echo是打印 export是設置環境變量
- 查看PATH變量值用echo ${PATH},查看PATH變量長度用echo ${#PATH}
- pgrep ssh顯示ssh進程的pid號
- cat /proc/16119/environ | tr '\0' '\n' 查看pid號爲16119的進程的環境變量,tr '\0' '\n'把每一項環境變量的末尾替換爲換行符,使輸出便於閱讀
- top顯示各個進程資源佔用狀況。而後按shift+M,結果按內存佔用由大到小排序。按shift+P,結果按cpu佔用由大到小排序。
- find指令後面必須有基本路徑,-path後面的目錄先後都要加*
- shell中命令之間的空格很重要,空格分隔了不一樣的命令,\轉義的通常都用空格與其餘的指令隔離
- shell經常使用變量:$1命令或腳本的第一個參數,第二個以此類推;$#參數數量;$0當前程序名稱;$?上個命令的返回值;$$ 程序PID;$! 以前程序PID;$@以列表的方式打印全部參數;$*字符串的形式打印全部參數;
- cd - 兩個目錄切換
- echo "line containing a car pattern" | tr -s " " 把字符串的多個空格減小到一個空格
- echo "line containing apattern " | tr -d 'n' 刪除字符串中的n
- echo "line containing apattern " | sed "s/c/x/g" 將字符串的c替換成x
- name=${var%.}的含義是從右向左匹配%右側的通配符. 並刪除匹配結果,以後賦值給name %非貪婪 %%貪婪
- name=${var#.}的含義是從左向右匹配#右側的通配符. 並刪除匹配結果,以後賦值給name #非貪婪 ##貪婪
- tr ' ' '\n' 空格替換成\n,使得單行變多行。反過來多行能夠變單行。
- awk NR是當前行號,NF是當前行字段數量。$0是當前行的所有內容, $1等是當前行第1列的內容。
- cat <<EOF >indeximg.xml ....EOF 把EOF以前的內容重定向到xml中
- (子shell)& wait &表示脫離當前線程,wait表示所有完成才結束
- ssh -p3456 user@IP 本服務器鏈接到IP服務器,端口號3456
- 語句最後放一個&的意思是放置到後臺運行
- netstat -tnpul查看開放的端口和服務
- 查看磁盤命令df=disk free du=disk usage
- $while read line;do ... done<<file 使用方法 能夠讀取第一個參數文件
- ps收集進程詳細信息 結果各項含義:UID 用戶ID; PID 進程ID; PPID 父進程ID; C CPU佔用率; STIME 開始時間; TTY 開始此進程的TTY【終端】; TIME 此進程運行的總時間 ; CMD 命令名;
- which查找某個命令的位置 whereis 包括手冊的位置 file文件類型細節 whatis打印手冊的某一行
- kill -l信號列表 ; kill -s SIGNAL PID 發個信號給進程; killall process_name按程序名稱殺; killall -u username process_name ; pkill 進程名; trap 處理信號函數 SIGINT(接收到SIGINT就運行處理函數)
- $ hostname查看主機名 $ uname -n查看主機名 $ uname -a系統版本 $ uname -r內核版本 $ uname -m平臺
- cat /proc/cpuinfo【cpu信息】 cat /proc/meminfo【內存信息】 cat /proc/partitions【硬盤信息】
- corn調度命令 【分 小時 天 月 星期】 *表明每次 $crontab -e會打開計劃表 執行corn所使用的權限和執行命令的一致 crontab -r移除當前用戶的cron表
- cat<<! ....! 達到追加命令的效果,會將...一行一行的執行
- ftp狀態下執行lcd 在本地機上改變工做目錄
- MYTIME=`date +"%Y%m%d %T"` 反向單引號執行引號內語句,並將執行結果做爲總體賦值給變量。普通單引號將語句做爲字符串賦值給變量。
- $ pstack pid號 顯示進程棧跟蹤 ,對處於錯誤狀態的進程執行這個命令,打印的棧信息就是進程如今執行的代碼,幫助定位bug
- $strace -p pid號 查看進程正在使用哪些系統調用,能夠看見系統調用的函數名稱和報錯信息。
- $free -m 查看內存大小
- $sysctl -p /etc/sysctl.conf從新載入內核參數,使配置生效
- $ grep hhh * 會顯示包含hhh的文件名和包含hhh的字符串
- $ulimit -c unlimited 不限制core文件大小
歡迎關注本站公眾號,獲取更多信息