程式設計師 linux 命令詳解大全

2021-09-26 11:15:23 字數 4113 閱讀 9726

你早晚都要學會得linux命令。

stat命令檢視乙個檔案的屬性 :訪問時間(access)、修改時間(modify)、狀態改變時間(change)

stat filename

查詢並刪除/data這個目錄7天前建立的檔案

# find /data -ctime +7 -exec rm -rf {} \;

# find /data -ctime +7 | xargs rm -rf

find命令查詢檔案並複製到/opt目錄

方法1:

# find /etc -name httpd.conf -exec cp -rf {} /opt/ \;: #-exec執行後面命令,{}代表前面輸出的結果,\;結束命令

方法2:

# find /etc -name httpd.conf |xargs -i cp {} /opt #-i表示輸出的結果由{}代替

檢視根目錄下大於1g的檔案 預設單位是b,可以使用其他單位如,c、k、m

# find / -size +1024m

tar命令壓縮進除某個目錄

# tar zcvf data.tar.gz /data --exclude=tmp #--exclude引數為不包含某個目錄或檔案,後面也可以跟多個

檢視tar包存檔檔案,不解壓

# tar tf data.tar.gz #t是列出存檔檔案目錄,f是指定存檔檔案

實時檢視系統所使用記憶體

#free -b -s5

5秒迴圈一次...

檢視埠被哪個程序占用

# lsof -i:埠號

# netstat -tunlp | grep 埠號

檢視伺服器ip連線數

# netstat -tun | awk '' | cut -d: -f1 |sort | uniq -c | sort -n

cut -d:-f1:cut是乙個選擇性顯示一行的內容命令,-d指定:為分隔符,-f1顯示分隔符後的第乙個字段。

uniq -c:報告或刪除文中的重複行,-c在輸出行前面加上出現的次數

sort -n:根據不同型別進行排序,預設排序是公升序,-r引數改為降序,-n是根據數值的大小進行排序

iptables將本機80埠**到本地8080埠

# iptables -t nat -a prerouting -p tcp --dport 80 -j redirect --to-ports 8080

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,因為系統服務會根據資料報**再返回去

#ifconfig eth0 down

#ifconfig eth0 hw ether 00:aa:bb:ccd:ee

#ifconfig eth0 up

列出nginx日誌訪問最多的10個ip

方法1:

# awk '' access.log |sort |uniq -c|sort -nr |head -n 10

sort :排序

uniq -c:合併重複行,並記錄重複次數

sort -nr :按照數字進行降序排序

監控目錄,新建立的檔名追加到日誌中 要安裝inotify-tools軟體包

#!/bin/bash

mon_dir=/opt

inotifywait -mq --format %f -e create $mon_dir |\

while read files; do

? echo $files >> test.log

done

在linux上釋放所有arp:

#arp -d -a

關於sysctl: /etc/sysctl.conf對應的是/proc/sys/目錄...

例如要修改/proc/sys/net/ipv4/ip_default_ttl的話,就修改/etc/sysctl.conf檔案如下...

新增一行為:

net.ipv4.ip_default_ttl=255,也就是把資料夾變成小數點就可以啦

然後執行一次

#sysctl -p

就可以生效啦。

$ date -s "20190301 14:31:00"

#hwclock寫入bios

使退出ssh後程式繼續執行:

# disown

或者是nohup command &

設定環境變數

#export 變數名=變數值

自動化任務 cron,at,batch

系統管理員通過cron.deny和cron.allow來禁止和允許使用者擁有自己的crontab檔案...

crontab的格式: 分 時 日 月 星期 要執行的命令(注意使用的命令必須是絕對路徑)

crontab -e 編輯

crontab -r 刪除

crontab -u user 用某使用者來執行

crontab -l 列出當前crontab內容

at也通過/etc/at.allow和at.deny檔案空子後哪些使用者可以使用at命令,哪些不行

建立檔案時即規定日期

#touch -t 11091531file 日15:31分

字串判斷

str1 = str2   兩個串有相同內容、長度時為真

str1 != str2   str1和str2不等時為真

-n str1     串的長度大於0時為真(串非空)

-z str1     串的長度為0時為真(空串)

str1       str1為非空時為真

df 命令用於顯示目前在linux系統上的檔案系統的磁碟使用情況統計

--block-size= 使用 大小的 blocks

-k 等價於 --block-size=1024 -m 等價於 --block-size=1048576

-t 顯示檔案系統的形式

xargs 是給命令傳遞引數的乙個過濾器 。可以將管道或標準輸入(stdin)資料轉換成命令列引數,也能夠從檔案的輸出中讀取資料, 也可以將單行或多行文字輸入轉換為其他格式,例如多行變單行,單行變多行。

能夠捕獲乙個命令的輸出,然後傳遞給另外乙個命令。由於很多命令不支援|管道來傳遞引數,而日常工作中有有這個必要,所以就有了 xargs 命令,例如:

somecommand |xargs -item command

-a file 從檔案中讀入作為sdtin

-e flag ,注意有的時候可能會是-e,flag必須是乙個以空格分隔的標誌,分析到含有flag這個標誌的時候就停止。

-p 當每次執行乙個argument的時候詢問一次使用者。

-n num 後面加次數,表示命令在執行的時候一次用的argument的個數,預設是用所有的。

-t 表示先列印命令,然後再執行。

-i 或者是-i,將xargs的每項名稱,一般是一行一行賦值給 {},可以用 {} 代替。

-r no-run-if-empty 當xargs的輸入為空的時候則停止xargs,不用再去執行了。

-s num 命令列的最大字元數,指的是 xargs 後面那個命令的最大命令列字元數。

-l num 從標準輸入一次讀取 num 行送給 command 命令

-d delim 分隔符,預設的xargs分隔符是回車,argument的分隔符是空格,這裡修改的是xargs的分隔符

-x exit的意思,主要是配合-s使用

-p 修改最大的程序數,預設是1,為0時候為as many as it can ,這個例子我沒有想到,應該平時都用不到的吧

GO GOLANG程式設計師筆記大全

go 併發 註解 go 語言天生為程式併發所設計,可以說go的強項就是在cpu併發上的處理。go 語言層面就支援了併發。不是一般高階語言的多執行緒併發,是系統級真實併發 go 語言通過安全的通道傳送和接受資料以實現同步 一般情況下,乙個普通的桌面計算機跑十幾二十幾個執行緒就有點負載過大了,但是同樣的...

GO GOLANG程式設計師筆記大全

go 併發 註解 go 語言天生為程式併發所設計,可以說go的強項就是在cpu併發上的處理。go 語言層面就支援了併發。不是一般高階語言的多執行緒併發,是系統級真實併發 go 語言通過安全的通道傳送和接受資料以實現同步 一般情況下,乙個普通的桌面計算機跑十幾二十幾個執行緒就有點負載過大了,但是同樣的...

程式設計師之路 Linux幫助命令

幫助命令man manual指南 1 獲取指定命令的幫助 man 命令 例如 man ls 檢視ls的幫助 2 檢視命令擁有哪幾個級別的幫助 man f 命令 相當於whatis 命令 例如 man 5 passwd man 4 null man 8 ifconfig 3 檢視和命令相關的所有幫助 ...