Shell文本變量及符號
node
特殊變量linux
$0:腳本自身的名字ios
$?:返回上一條命令是否執行成功,0爲執行成功,非0爲執行失敗nginx
$#:位置參數總參數正則表達式
$*:全部的位置參數被看作成一個字符串shell
$@:每一個位置參數被看作成獨立的字符串數據庫
$$:當前進程的PID編程
$!:上一條運行後臺進程的PID數組
整數比較符緩存
-eq:等於;-ne:不等於;-ge:大於等於;-gt:大於;-le:小於等於;-lt:小於
字符串比較符
==;!=;>=;<=;>;<;-n:字符串長度不等於0爲真;-z:字符串長度等於0爲真;str:字符串存在爲真
文件測試:
-e:文件或目錄存在真;-f:文件存在爲真;-d:目錄存在爲真;-r:有讀權限爲真;-w:有寫權限爲真;-x:有執行權限爲真;-s:文件存在而且大小大於0爲真
括號用途
():1、在運算中,先計算小括號裏面的內容;2、數組;3、匹配分組
(()):1、表達式,不支持-eq這類的運算符。不支持-a和-o,支持字符串比較符
$():執行shell命令,與反撇號等效
$(()):1、簡單算數運算。2、支持三目運算符
[]:條件表達式,裏面不支持邏輯判斷符
[[]]:條件表達式,裏面不支持-a和-o,不支持字符串比較符,支持整數比較符
$[]:簡單算數運算
${}:1、引用變量。2、字符串處理
文本經常使用處理命令
grep經常使用參數
-E:模式是擴展正則表達式
-x:模式匹配整行
-v:打印不匹配的行
-c:只打印匹配的行數
-s:不輸出錯誤的信息
grep –v –E 「^$|^#」 /etc/nginx/nginx.conf #去除開頭是空格或者#的配置文件
sed命令經常使用方法
匹配打印(p)
tail /etc/services | sed -n ‘/^b/p’#打印匹配開頭的行
tail /etc/services |sed –n ‘1,3p’#打印1到3行
匹配刪除(d)
sed -i ‘/^$/d;/^#/d’ /etc/nginx/nginx.conf #刪除空行和註釋
匹配替換(s)
tail /etc/services | sed –n ‘s/tcp/lsk/p’ #打印替換匹配的tcp字符
sed –i ‘s/http/lsk’ /etc/nginx/nginx.conf #在nginx.conf配置文件上替換字符
awk命令(處理文本的編程語言工具)
經常使用選項:
-f :從文件中讀取awk程序源文件
-F fs:指定fs爲分隔符
-v var=value 指定變量符
經常使用模式:
BEGIN{ }:給程序賦予初始狀態,先執行的工做
END{}:程序結束以後執行的工做
邏輯not,or,and(!,||,&&)
內置變量:
FS:輸入字段分隔符,默認是空格或製表符
OFS:輸出字段分隔符,默認是空格
RS:輸入記錄分隔符,默認是換行符\n
ORS:輸出記錄分隔符,默認是換行符\n
NF: 統計當前記錄中字段個數
NR: 統計記錄編號,沒處理一行記錄,編號會自增1
FNR:統計記錄編號,沒處理一行記錄,編號自增1,處理第二個文件時,編號會從新計數
ENVIRON:當前系統的環境變量
IGNORECASE:忽略大小
tail /etc/services | awk –F ‘[\#]’ ‘{print $2}’ //[]爲元字符,符號其中任意一個字符。每遇到一個/或者#就分割字段
tail /etc/services | awk ‘/^blp5/{print $0}’ //正則表達式,匹配開頭是blp5的行
tail /etc/services | awk '/tcp/ || /blp5/{print $0}' //篩選tcp或者blp5字段的行
awk ‘BEGIN{FS=」:」;OFS=」-」}{print $1,$3,$5}’ /etc/passwd //過濾/etc/passwd文件,以冒號爲分隔符,輸出分隔符以-分隔
經常使用系統配置文件
/etc/issue 系統版本
/etc/hosts 主機名與IP的對應關係
/etc/reslov.conf DNS服務器地址
/etc/hostname 主機名
/etc/sysctl.conf 系統參數配置文件
/etc/sudoers sudu權限配置
/etc/init.d 服務器啓動腳本
/etc/sysconfig/network-scripts 網卡信息配置目錄
/etc/rc.d/rc.local 系統init初始化完後執行,不建議將啓動服務寫在這裏面,應建立本身的Systemd或者udev
/etc/fstab 硬盤自動掛載配置
/etc/inittab 系統啓動運行級別
/etc/crontab 系統級任務計劃
/var/spool/cron 用戶級任務計劃
/etc/crond.d 描述計算機任務計劃
/etc/hosts.allow TCP包訪問列表
/etc/hosts.deny TCP包拒絕列表
/usr/share/doc 各軟件的文檔
/etc/sshd_config SSH服務配置文件
/var/log 系統和應用程序日誌目錄
/var/spool/mail 郵件目錄
/dev 目錄
/dev/hd[a-t] IDE設備
/dev/sd[a-z] SCSI設備
/dev/dm-[-9] LVM邏輯磁盤
/dev/zero 無限0數據流
/proc 目錄
/proc/[0-9]+ 此目錄下數字命名的目錄是運行進程信息,目錄名爲PID
/proc/meminfo 物理內存、交換空間等信息,free
/proc/loadavg 系統負載
/proc/uptime 系統運行時間
/proc/cpuinfo CPU信息
/proc/mounts 文件系統掛載信息,mount
/proc/swaps swap分區信息
/proc/partitions 系統分區信息
/proc/version 內核版本
/proc/stat CPU利用率,磁盤,內存頁
/proc/devices 可用的設備列表
/proc/net
/proc/net/tcp TCP狀態鏈接信息
/proc/net/udp UDP狀態鏈接信息
/proc/net/arp arp信息表
/proc/net/dev 網卡流量
/proc/net/snmp 網卡傳輸協議的收發包信息
/proc/net/sockstat socket使用狀況,好比已使用,正在使用
/proc/net/netstat 網絡統計數據
/proc/net/route 路由表
經常使用Shell基礎命令
echo :-n 不加換行符;-e解釋轉義符
cat:-b 顯示非空行行號;-n 顯示全部行號 ;-T 顯示tab,用^I表示;-E 顯示以$結尾
tac:倒序打印每一行
rev:反向打印每一行
wc:-c 打印文件字節數;-m 打印文件字符數;-l 打印多少行;-L 打印最長行的長度,也能夠統計字符串的長度
mkdir:-p 遞歸建立目錄; -v 顯示建立過程。
du:-h 易讀格式顯示(K,M,G);-b 單位bytes顯示,-k 單位KB顯示;-m 單位MB顯示;-s 只顯示總大小。
cut:-b 選中第幾個字符;-c 選中多少個字符;-d 指定分隔符字段,默認是空格;-f 顯示選中字段
stat:-Z 顯示selinux安全上下文;-f 顯示文件系統狀態;-c 指定格式輸出內容;-t 以簡潔的形式打印
seq:-f 使用printf樣式格式;-s 指定換行符,默認是\n;-w 等寬,用0填充
sort(排序文本):-f 忽略字母大小寫;-M 根據月份比較;-h 根據易讀的單位大小比較;-g 按照常規數值排序;-n 根據字符串數值比較;-r 倒序排序;-u 去重重複
行;-t指定分隔符;-o 將結果寫入文件
uniq(去除重複行,只統計相鄰的):-c 打印出現的次數;-d 只打印重複行;-u 只答應不重複行;-D 只打印重複行,而且把全部重複行打印出來;-i 忽略大小寫;
tee(從標準輸入讀取寫到標準輸出和文件): -a 追加到文件
join(鏈接兩個文件):-i 忽略大小寫;-o 按照指定文件欄位顯示;-t 使用字符做爲輸入和輸出字段的分隔符
paste(合併文件):-d 指定分隔符;-s 將文件內容平行合併,默認是tab鍵分隔
head(輸出文件的前幾行):-c 打印前多少K,M;-n 打印前多少行
tail(輸出文件的後幾行):-c 打印後多少K,M;-f 實時讀文件,隨着文件的暑促胡附加輸出;-n 輸出最後幾行
xargs(從標準輸入中執行命令):-a file 從指定文件中讀取數據做爲標準輸入;-0 處理包含空格的文件名;-d 指定分隔符,默認是空格分隔顯示;-i 標準輸入以{}代
替;-I 標準輸入的結果以指定的名字代替;-t 顯示執行命令;-p 交互顯示是否執行命令;-n 最大命令行參數
nl(打印文件行號):-b<a|t> 指定行號顯示方式,a表示全部行號都打印行號,b表示空行不顯示行號;-n <ln|rn|rz> 行號顯示方法,ln左對齊,rn右對齊,rz 右邊顯
示;-w 行號欄位在左邊佔用的寬度
date(打印或設置系統日期和時間):-d string 顯示指定字符串所描述的時間,而非當前時間;-f datefile 從日期文件中按行讀入時間描述;-I 輸出IPS 8601格式的
日期和時間;-r 顯示文件的最後修改時間;-R 輸出RFC 2822 格式的日期和時間;-s string 設置時間所描述的字符串;-u 打印或者設置UTC時間
wget(非交互式網絡下載):-b 後臺運行;-c 斷點續傳;FTP: --ftp-ser=USER,--ftp-password=PASS 設置ftp用戶名和密碼;-r 指定遞歸下載
curl(發送數據到URL,相似於HTTP客戶端):-k 容許HTTPS鏈接網站,-C 斷點續傳;-I 查看HTTP頭信息;-s 靜默模式,不輸出任何內容;-H 自定義頭信息發送
給服務器;-T 上傳文件
scp(基於SSH的安全遠程服務器文件拷貝):-i 指定私鑰文件;-l 限制速錄;-P 指定遠程主機SSH端口;-p 保存修改時間,訪問時間和權限;-r 遞歸拷貝目錄
rsync(遠程或本地文件同步工具):-v 顯示覆制信息;-q 不輸出錯誤信息;-c 跳過基礎校驗,不判斷修改時間和大小;-a 歸檔模式,保留權限,數組;-r 遞歸目
錄;-l 拷貝軟鏈接;-z 壓縮傳輸數據;-e 指定遠程shell
nohup(運行程序,忽略掛起信號)
iconv(將文件內容字符集轉成其餘字符集):-l 列出全部已知的字符集;-f 原始文本編碼;-t 輸出編碼;-o 輸出到文件;-s 關閉警告
tar(歸檔目錄或文件):-c:建立新歸檔;-d:比較歸檔和文件系統的差別;-r:追加文件到歸檔;-t:存檔的內容列表;-x:提取歸檔全部文件;-C:改變解壓目
錄;-f:使用歸檔文件或設備歸檔;-j:bzip2壓縮;-z:gzip壓縮;-v:輸出處理過程
netstat(打印網絡鏈接、路由表、接口統計信息、假裝鏈接和多播成員):-r 顯示路由表;-i 顯示接口表;-n 不解析名字;-p 顯示程序名;-l 顯示監聽的socket;-a
顯示全部的socket ;-o 顯示計時器;-Z 顯示上下文;-t 只顯示tcp鏈接;-u 只顯示udp鏈接;-s 顯示每一個協議統計信息
ss(比netstat更強大的socket查看工具):-n 不解析名字;-a 顯示全部的socket;-l 顯示全部的監聽的socket;-o 顯示計時器;-e 顯示socket詳細信息;-m 顯示
socket內存使用;-p 顯示進程使用的socket;-I 顯示內部的TCP信息;-s 顯示socket使用匯總;-t 只顯示TCP socket;-u 只顯示UDP socket;-d 只顯示DDCP socket
lsof(列出打開的文件):-i 監聽的網絡地址,若是沒有,默認列出全部;-U 列出Unix域socket文件;-p 制定PID;-u 指定用戶名或UID全部打開的文件;+D 遞歸
搜索
ps(報告當前進程的快照):-a 顯示全部的進程;-u 選擇有效的用戶ID或名稱;-x 顯示無控制終端的進程;-e 顯示全部進程;-f 全格式;-r 只顯示運行的進程;-T
這個終端的全部進程;-p 指定進程ID;-m 線程;-o 用戶自定義格式;
top(動態顯示活動的進程和系統資源利用率):-d 信息刷新時間間隔;-p 只監控指定的進程PID;-i 只顯示正在使用CPU的進程;-H 顯示線程;-u只查看指定用戶
名的進程;-b 將輸出編排成易處理格式,適合輸出到文件處理;-n 指定最大循環刷新數;-----交互命令: f 添加或殺出顯示的指標;c 顯示完整命令;P 按CPU使用
百分率排序;按駐留內存大小排序;T 按進程使用CPU時間排序;l 顯示每一個CPU核心使用率;k 終止一個進程
free(查看內存使用率):-b bytes顯示;-k KB顯示;-m M 顯示;-g G 顯示;-h易讀單位顯示;-s 沒幾秒重複打印;-c 重複打印幾回退出;
df(查看文件系統的磁盤空間的使用狀況):-a 包括虛擬文件系統;-h 可易讀單位顯示;-i 顯示inode信息而非塊使用量;-k 1K塊的數量;-t 只顯示指定文件系統爲
指定類型的信息;-T 顯示文件系統類型
vmstat(報告虛擬內存,swap,io,上下文和CPU統計信息):-a 打印活躍和不活躍的內存頁;-d 打印硬盤統計信息;-D 統計硬盤表;-p 打印硬盤分區統計信
息;-s 打印虛擬內存表;-m 打印內存分配信息;-t 添加時間戳到輸出
iostat(報告CPU利用率和磁盤I/O):-c 顯示CPU使用率;-d 只顯示磁盤使用率;-k 單位KB/S代替BLOCK/S;-m 單位 MB/S 代替Block/s;-N 顯示全部映射設備名
字;-t 打印報告時間;-x 顯示擴展統計信息;
sar(查看系統資源綜合方面利用率):-u CPU;-r memory;-b disk;-n DEV,NIC traffic;-q systemload;-b TPS;-o output to file
dstat(查看系統資源綜合方面利用率—須要額外安裝):-p cpu統計;-d 磁盤統計;-m 內存統計;-n 網絡統計;-s swap統計;-l 負載統計
ip(查看/操做路由表、設備、路由策略和隧道):---操做對象:address 網絡設備地址;12tp 以太網IP隧道;link 配置網絡設備;monitor 動態監控網絡連
接;mroute:多播路由緩存條目;route 路由表;rule 角色在路由策略數據庫;tunnel IP隧道;
nc(TCP和UDP鏈接和監聽):-I interval 指定間隔時間發送和接收行文本;-l 監聽模式;-n 不解析域名;-p 指定本地源端口;-s 指定本地源IP地址;-u 使用udp協
議;默認是tcp;-v 執行過程輸出;-w timeoute鏈接超時時間;-x proxy_address請求鏈接主機使用代理地址和端口;-z 指定掃描監聽端口,不發送任何數據
evel(執行參數做爲shell命令)
ssh(ssh遠程鏈接客戶端)