50個Linux小技巧上

2021-10-07 02:25:21 字數 4758 閱讀 6391

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...