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文件大小
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章