2、查詢並刪除/data這個目錄7天前建立的檔案
# find /data -ctime +7 -exec rm -rf {} \;
# find /data -ctime +7 | xargs rm -rf
3、tar命令壓縮進除某個目錄
# tar zcvf data.tar.gz /data --exclude=tmp #--exclude引數為不包含某個目錄或檔案,後面也可以跟多個
4、檢視tar包存檔檔案,不解壓
# tar tf data.tar.gz #t是列出存檔檔案目錄,f是指定存檔檔案
5、使用stat命令檢視乙個檔案的屬性
訪問時間(access)、修改時間(modify)、狀態改變時間(change)
stat index.php
access: 2018-05-10 02:37:44.169014602 -0500
modify: 2018-05-09 10:53:14.395999032 -0400
change: 2018-05-09 10:53:38.855999002 -0400
6、批量解壓tar.gz
方法1:
# find . -name "*.tar.gz" -exec tar zxf {} \;
方法2:
# for tar in *.tar.gz; do tar zxvf $tar; done
方法3:
# ls *.tar.gz | xargs -i tar zxvf {}
7、篩除出檔案中的注釋和空格
方法1:
方法2:
或者 # sed -e '/^#/d;/^$/d' #-e 執行多條sed命令
方法3:
或者 # awk '!/^#|^$/' httpd.conf
8、篩選/etc/passwd檔案中所有的使用者
方法1:
# cat /etc/passwd |cut -d: -f1
方法2:
# awk -f ":" '' /etc/passwd
9、iptables**跳轉
先開啟路由**:
echo "1" > /proc/sys/net/ipv4/ip_forward #臨時生效
內網訪問外網(snat):
iptables –t nat -a postrouting -s [內網ip或網段] -j snat --to [公網ip]
#內網伺服器要指向防火牆內網ip為閘道器
公網訪問內網(dnat)(公網埠對映內網埠):
iptables –t nat -a prerouting -d [對外ip] -p tcp --dport [對外埠] -j dnat --to [內網ip:內網埠]
#內網伺服器要配置防火牆內網ip為閘道器,否則資料報回不來。另外,這裡不用配置snat,因為系統服務會根據資料報**再返回去。
10、iptables將本機80埠**到本地8080埠
# iptables -t nat -a prerouting -p tcp --dport 80 -j redirect --to-ports 8080
15、列出nginx日誌訪問最多的10個ip
方法1:
# awk '' access.log |sort |uniq -c|sort -nr |head -n 10
sort :排序
uniq -c:合併重複行,並記錄重複次數
sort -nr :按照數字進行降序排序
方法2:
# awk 'end' access.log
16、顯示nginx日誌一天訪問量最多的前10位ip
# awk '$4>="[16/may/2017:00:00:01" && $4<="[16/may/2017:23:59:59"' access_test.log |sort |uniq -c |sort-nr |head -n 10
# awk '$4>="[16/oct/2017:00:00:01" && $4<="[16/oct/2017:23:59:59"end}' access.log
17、獲取當前時間前一分鐘日誌訪問量
# date=`date +%d/%b/%y:%h:%m --date="-1 minute"` ; awk -vd=$date '$0~dend' access.log
# date=`date +%d/%b/%y:%h:%m --date="-1 minute"`; awk -vd=$date '$4>="["d":00" && $4<="["d":59"end' access.log
# grep `date +%d/%b/%y:%h:%m --date="-1 minute"` access.log |awk 'end'
# start_time=`date +%d/%b/%y:%h:%m:%s --date="-5 minute"`;end_time=`date +%d/%b/%y:%h:%m:%s`;awk -vstart_time="[$start_time" -vend_time="[$end_time" '$4>=start_time && $4<=end_timeend' access.log
18、找出1-255之間的整數
方法1:
# ifconfig |grep -o '[0-9]\+' #+號匹配前乙個字元一次或多次
方法2:
# ifconfig |egrep -o '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
19、找出ip位址
# ifconfig |grep -o '[0-9]\\.[0-9]\\.[0-9]\\.[0-9]\' #-o只顯示匹配字元
20、給文件增加開頭和結尾說明資訊
# awk 『begin end』/etc/passwd
# awk 'begin end' /var/log/messages
date ip
------------------
03:13:01 localhost
10:51:45 localhost
------------------
end...
21、檢視網路狀態命令
# netstat -antp #檢視所有網路連線
# netstat -lntp #只檢視監聽的埠資訊
# lsof -p pid #檢視程序開啟的檔案控制代碼
# lsof -i:80 #檢視埠被哪個程序占用
22、生成8位隨機字串
方法1:
# echo $random |md5sum |cut -c 1-8
方法2:
# openssl rand -base64 4
方法3:
# cat /proc/sys/kernel/random/uuid | cut -c 1-8
23、while死迴圈
while true; do #條件精確等於真,也可以直接用條件[ "1" == "1" ],條件一直為真
24.awk格式化輸出
將文字列進行左對齊或右對齊。
左對齊:
# awk '' test.txt
右對齊:
# awk '' test.txt
25.整數運算保留小數點
方法1:
# echo 'scale=2; 10/3;'|bc #scale引數代表取小數點位數
方法2:
# awk begin''
26.數字求和
# cat a.txt
1023
5356
方法1:
#!/bin/bash
while read num;
dosum=`expr $sum + $num`
done < a.txt
echo $sum
方法2:
# cat a.txt |awk 'end'
27、判斷是否為數字(字串判斷也如此)
# [[ $num =~ ^[0-9]+$ ]] && echo yes || echo no #比更加通用,支援模式匹配=~和字串比較使用萬用字元`
^ $:從開始到結束是數字才滿足條件
=~:乙個操作符,表示左邊是否滿足右邊(作為乙個模式)正規表示式
28、刪除換行符並將空格替換別的字元
# cat a.txt |xargs echo -n |sed 's/[ ]/|/g' #-n 不換行
# cat a.txt |tr -d '\n' #刪除換行符
29、檢視文字中20至30行內容(總共100行)
方法1:
# awk '' test.txt
方法2:
# sed -n '20,30p' test.txt
方法3:
# head -30 test.txt |tail
30、文字中兩列位置替換
50個Linux小技巧下
31 監控目錄,新建立的檔名追加到日誌中 要安裝inotify tools軟體包 bin bash mon dir opt inotifywait mq format f e create mon dir while read files do echo files test.log done 32...
50個 JQuery 運用技巧
50個 jquery 使用技巧 感謝 1.如何建立巢狀的過濾器 允許你減少集合中的匹配元素的過濾器,只剩下那些與給定的選擇器匹配的部分。在這種情況下,查詢刪除了任何沒 not 有 has 包含class為 selected selected 的子節點。filter not has selected ...
Linux兩個小技巧
在使用公司環境申請的虛擬機器的時候,老出現兩個問題 五分鐘沒有操作就自動登出 不能使用上下箭頭檢視歷史命令 查了一下,原來就是幾個環境變數在作祟 超時登出問題是由於系統設定了tmout 300環境變數,可以通過取消這個環境變數或者增加超時時間解決,比如 unset tmout 或者export tm...