开发实用Linux命令
分類總結工作實用命令
【一、查找類】
1、怎么查找opt目錄下大于1M的文件
? ? ? ?find /opt -size +1M
附:find命令常用參數介紹[在眾多文件或目錄中查好需要的文件和目錄]
參數如下:是從磁盤查找。
①:按照文件名稱查詢:
? ? ?find filename
? ? ?find -name filename(一般通配查好,查找filename*)
? ? ?find . -name filename(當前目錄下查好指定的文件)
? ? ?find / -name filename(從根目錄以及所有子目錄下查找文件,一般我們不知道文件位于哪個目錄下是查找)
②:按照文件大小查找:
? ? ?find 目錄 -size n
? ? ? ? ? ? -n大小小于n的文件
? ? ? ? ? ? +n大小大與n的文件
? ? ? ? ? ? n大小等于n的文件
?③:按照文件目錄深度查好:??
? ? ?find /目錄 -mindepth n(從指定的目錄下的n級目錄下查找)
【二、過濾類】
? grep過濾文件關鍵內容
? ? grep "關鍵字" 文件
語法:grep [options] PATTERN [FILE]
?①:過濾關鍵字顯示行號,不區分大小寫
? ?grep -ni "關鍵字內容" 文件
?②:查找文件過濾指定內容的行
? ?grep -v "過濾的內容" 文件
?③:查找包含dddd,eeee,fffd的行,采用正則表達式
? ?grep -E "dddd|eeee|fffd" 文件
④:查找以d開頭的行
? ?grep ^d 文件
⑤:查找以ddf開頭且結尾的行
? ? grep ^ddf$ 文件
⑥:查找關鍵字,顏色展示,這樣會展示關鍵字雖在行中的所有內容
? ? cat? 文件 | grep -ni --color "關鍵字"-
⑦:只想打印匹配到的關鍵字【only】
? ? cat 文件 | grep -noi? "關鍵字"
⑧:展示匹配關鍵字的前后幾行
? ? -A num :展示匹配行的后num行
? ? -B num :展示匹配行的前num行
? ? -C num: 展示匹配行的前后num行
? ? cat 文件 | grep -C 2 --color "關鍵字"
⑨:過濾多個條件
? ? cat log.txt | grep 條件一 | grep 條件二 | grep 條件三;
? ? grep 條件一 | grep 條件二 | grep 條件三 文件
? ? cat log.txt grep -E "條件一|條件二|條件三"
案例:過濾目錄文件大小
? ? du -sh *| sort -rn | head -n 10
案例:過濾第四列內存使用率降序
? ??ps aux |sort -rn -k4 |awk '{print S1,S2,$3,$4}' | head -n 5
-n 按數值大小排序
-t 指定分隔符,沒有指定時,以空白作為分隔符
-k 排序字段 如: -k1 (按第1個字段排序) ? -k 1.2, 3.4 (按從第1個字段的第2個字符起,到第3個字段第4個字符止,進行排序)
-b 忽略每行開始的空格
-o 結果輸出文件
-r 以相反順序排序
-m 合并已經有序的文件,不排序
-f 忽略大小寫
-d 排序時只按字母、數字或空格,忽略其它字符
-u 去除重復的行
? sort aa.txt |uniq -c |sort -rn【排序和統計降序】
? cat 2.txt |sort -n | uniq -c[打印2.txt的文件次數,只能處理重復的位置的重復]
? ls的列出文件目錄.
| -a | 顯示指定路徑中的所有文件,包括隱藏文件 |
| -l | 顯示文件的詳細信息,包括文件類型,權限,所屬用戶,所屬用戶組,文件大小,上一次修改時間等 |
| -h | 文件大小以KBytes為單位顯示 |
| -S | 按照文件大小順序顯示,默認從大到小;若要從小到大,可使用-Sr |
?ls -alhS【根據文件大小排序】
【三、查看端口占用情況】
①:lsof -i:指定端口【lsof(list open files)是一個列出當前系統打開文件的工具。】
【netstat命令是一個監控TCP/IP網絡的非常有用的工具,它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的狀態信息】
②:netstat -anp| grep 指定端口
③:netstat -tunlp| grep 指定端口
附:常用參數如下:netstat.
netstat [選項]-a或--all:顯示所有連線中的Socket; -A<網絡類型>或--<網絡類型>:列出該網絡類型連線中的相關地址; -c或--continuous:持續列出網絡狀態; -C或--cache:顯示路由器配置的快取信息; -e或--extend:顯示網絡其他相關信息; -F或--fib:顯示FIB; -g或--groups:顯示多重廣播功能群組組員名單; -h或--help:在線幫助; -i或--interfaces:顯示網絡界面信息表單; -l或--listening:顯示監控中的服務器的Socket; -M或--masquerade:顯示偽裝的網絡連線; -n或--numeric:直接使用ip地址,而不通過域名服務器; -N或--netlink或--symbolic:顯示網絡硬件外圍設備的符號連接名稱; -o或--timers:顯示計時器; -p或--programs:顯示正在使用Socket的程序識別碼和程序名稱; -r或--route:顯示Routing Table; -s或--statistice:顯示網絡工作信息統計表; -t或--tcp:顯示TCP傳輸協議的連線狀況; -u或--udp:顯示UDP傳輸協議的連線狀況; -v或--verbose:顯示指令執行過程; -V或--version:顯示版本信息; -w或--raw:顯示RAW傳輸協議的連線狀況; -x或--unix:此參數的效果和指定"-A unix"參數相同; --ip或--inet:此參數的效果和指定"-A inet"參數相同。【四、查看指定行號的日志文件】?
①、sed輸出指定的行號 cat temp.log | sed -n '200p' ②、awk輸出指定的行號 cat temp.log | awk 'NR==200' ③、先獲取前面的200行,再取最后一行 cat temp.log | head -n 200 | tail -n1【五、測試端口連通性】
①、telnet ip port ip是指測試主機的ip port是指測試主機的端口 ②、curl ip:port ip是指測試主機的ip port是指測試主機的端口 ③、wget ip:port wget探測端口 ④、lsof -i:port lsof 命令來查看某一端口是否開放,如果有顯示說明已經開放了,如果沒有顯示說明沒有開放?【六、Base64編碼,Java實現和Python的RSA版本實現,openssl】
編碼:echo "StringBuffer" | openssl base64解碼:echo "U3RyaW5nQnVmZmVyCg=="|openssl base64 -d 編碼:echo StringBuffer | base64解碼:echo U3RyaW5nQnVmZmVyCg== |base64 -d?Java版本Base64
import java.util.Base64; /*** jdk版本*/public static void getBase64ForJdk(){String str="AbstractClass";// Base64編碼String encodeStr = new String(Base64.getEncoder().encode(str.getBytes(StandardCharsets.UTF_8)));System.out.println(encodeStr);// Base64解碼String decodeStr = new String(Base64.getDecoder().decode(encodeStr.getBytes(StandardCharsets.UTF_8)));System.out.println(decodeStr);} Apache Codec版本 import org.apache.commons.codec.binary.Base64; /*** Apache Codec版本*/public static void getBase64ForCodec(){String str="AbstractClass";// Base64編碼String encodeStr=new String(Base64.encodeBase64(str.getBytes(StandardCharsets.UTF_8)));System.out.println(encodeStr);// Base64解碼String decodeStr = new String(Base64.decodeBase64(encodeStr.getBytes(StandardCharsets.UTF_8)));System.out.println(decodeStr);} Apache Tomcat版本 import org.apache.tomcat.util.codec.binary.Base64; /*** Apache Tomcat版本*/public static void getBase64ForTomcat(){String str="AbstractClass";// Base64編碼String encodeStr=new String(Base64.encodeBase64(str.getBytes(StandardCharsets.UTF_8)));System.out.println(encodeStr);// Base64解碼String decodeStr = new String(Base64.decodeBase64(encodeStr.getBytes(StandardCharsets.UTF_8)));System.out.println(decodeStr);}有多種開源包實現的Base64編碼算法.
?
MD5消息摘要算法實現
public static String md5(String str){try {MessageDigest md5 = MessageDigest.getInstance(Constants.MD5);//加密后的字符串byte[] src = md5.digest(str.getBytes(StandardCharsets.UTF_8));return Base64.getEncoder().encodeToString(src);} catch (Exception e) {throw ExceptionUtils.mpe(e);}}?
【七、遠程復制,遠程服務器之前可以配置免密登錄】
?【sshpass::可以在命令行直接使用密碼來進行遠程連接和遠程拉取文件】
scp local_file remote_username@remote_ip:remote_folder scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music?【八、跳過證書校驗下載文件】
①、wget # 跳過證書校驗 wget https://img-home.csdnimg.cn/images/20201218055848.png --no-check-certificate # 偽裝成瀏覽器 wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" https://img-home.csdnimg.cn/images/20201218055848.png # 重命名 wget -O code.png https://img-home.csdnimg.cn/images/20201218055848.png # 斷點續傳 wget -c https://img-home.csdnimg.cn/images/20201218055848.png ②、curl【可以指定使用具體的ssl協議,Nginx中的ssl協議中會有設置具體支持哪些tls1.0\1.1\1.2\1.3版本】 curl -k --tlsv1 -O https://192.168.100.58/uploads/835538633.jpeg?
?curl驗證http2.0,curl使用一個叫做nghttp2的庫來提供http2幀層的支持。curl依賴于nghttp2 1.0以上版本
curl --version【curl查看是否支持http2.0】
?
?curl -k --http2 -v https://search.bilibili.com【驗證是否開啟http2.0】
?
磁盤文件空間 ①、df -h ②、du -sh * ③、df -i? curl -w診斷問題
通過CURL命令可以方便的查詢各種http請求的問題,-w參數對于我們診斷問題非常重要,以下是-w參數對應的一些變量以及對應的解釋:url_effective 最終獲取的url地址,尤其是當你指定給curl的地址存在301跳轉,且通過-L繼續追蹤的情形。 http_code http狀態碼,如200成功,301轉向,404未找到,500服務器錯誤等。(The numerical response code that was found in the last retrieved HTTP(S) or FTP(s) transfer. In 7.18.2 the alias response_code was added to show the same info.) http_connect The numerical code that was found in the last response (from a proxy) to a curl CONNECT request. (Added in 7.12.4) time_total 總時間,按秒計。精確到小數點后三位。 (The total time, in seconds, that the full operation lasted. The time will be displayed with millisecond resolution.) time_namelookup DNS解析時間,從請求開始到DNS解析完畢所用時間。(The time, in seconds, it took from the start until the name resolving was completed.) time_connect 連接時間,從開始到建立TCP連接完成所用時間,包括前邊DNS解析時間,如果需要單純的得到連接時間,用這個time_connect時間減去前邊time_namelookup時間。以下同理,不再贅述。(The time, in seconds, it took from the start until the TCP connect to the remote host (or proxy) was completed.) time_appconnect 連接建立完成時間,如SSL/SSH等建立連接或者完成三次握手時間。(The time, in seconds, it took from the start until the SSL/SSH/etc connect/handshake to the remote host was completed. (Added in 7.19.0)) time_pretransfer 從開始到準備傳輸的時間。(The time, in seconds, it took from the start until the file transfer was just about to begin. This includes all pre-transfer commands and negotiations that are specific to the particular protocol(s) involved.) time_redirect 重定向時間,包括到最后一次傳輸前的幾次重定向的DNS解析,連接,預傳輸,傳輸時間。(The time, in seconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before the final transaction was started. time_redirect shows the complete execution time for multiple redirections. (Added in 7.12.3)) time_starttransfer 開始傳輸時間。在發出請求之后,Web 服務器返回數據的第一個字節所用的時間(The time, in seconds, it took from the start until the first byte was just about to be transferred. This includes time_pretransfer and also the time the server needed to calculate the result.) size_download 下載大小。(The total amount of bytes that were downloaded.) size_upload 上傳大小。(The total amount of bytes that were uploaded.) size_header 下載的header的大小(The total amount of bytes of the downloaded headers.) size_request 請求的大小。(The total amount of bytes that were sent in the HTTP request.) speed_download 下載速度,單位-字節每秒。(The average download speed that curl measured for the complete download. Bytes per second.) speed_upload 上傳速度,單位-字節每秒。(The average upload speed that curl measured for the complete upload. Bytes per second.) content_type 就是content-Type,不用多說了,這是一個訪問我博客首頁返回的結果示例(text/html; charset=UTF-8);(The Content-Type of the requested document, if there was any.) num_connects 最近的的一次傳輸中創建的連接數目。Number of new connects made in the recent transfer. (Added in 7.12.3) num_redirects 在請求中跳轉的次數。Number of redirects that were followed in the request. (Added in 7.12.3) redirect_url When a HTTP request was made without -L to follow redirects, this variable will show the actual URL a redirect would take you to. (Added in 7.18.2) ftp_entry_path 當連接到遠程的ftp服務器時的初始路徑。The initial path libcurl ended up in when logging on to the remote FTP server. (Added in 7.15.4) ssl_verify_result ssl認證結果,返回0表示認證成功。( The result of the SSL peer certificate verification that was requested. 0 means the verification was successful. (Added in 7.19.0)) curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_nslookup:%{time_namelookup}\ntime_total: %{time_total}\n" "https://www.baidu.com"?
總請求時間:0.064s,網絡連接耗時:0.013s,dns解析耗時:0.001s,網絡傳輸:0.064s
【九、快速清空大文件】
??Linux 下清空或刪除大文件內容的 5 種方法
①、通過重定向到 Null 來清空文件內容> access.log ②、使用 ‘true’ 命令重定向來清空文件: > access.logtrue > access.log③、使用 cat/cp/dd 實用工具及 /dev/null 設備來清空文件cat /dev/null > access.logcp /dev/null access.log④、使用 echo 命令清空文件echo "" > access.logecho > access.log⑤、使用 truncate 命令來清空文件內容truncate -s 0 access.log【十、Linux服務器信息】
# 查看內核版本 uname -a # 查看發行版本 hostnamectl status # 查看cpu lscpu # 查看內存 lsmem?
【十一、gz壓縮】
1、壓縮文件 gzip -c test.txt >test.txt.gz 2、壓縮目錄 gzip -r dirname gzip -r test 3、解壓縮 gzip -d test.txt.gz?
【十二、外部命令】
htop命令,CPU/內存使用率
yum install htop -y
htop命令?
CPU利用率
?
內存利用率
?
負載情況,看CPU的忙碌情況,一般是CPU核數的75%左右.
?
?網絡使用情況:
yum?install?nload?-y
?nload
可以選擇對應的網卡
?
參數指標說明:
-
Curr:當前網速
-
Avg:平均網速
-
Min:最小網速
-
Max:最大網速
-
Ttl:總流量
使用iostat查看磁盤I/O
yum install sysstat -y
?
輸入iostat命令后,磁盤總體讀寫情況如上所示。磁盤負載主要關注2個指標:%idle,%util
%idle:表示CPU除去等待磁盤I/O以外的空閑時間百分比,這個指標應該要保證在70%以上
%util:該設備用于I/O操作的時間百分比,這個指標需要保證在70%以下,當到達100%時表示已經滿負載。為了降低磁盤負載,可以采用性能更高的磁盤(OSD,PCIE)或者降低磁盤的操作頻率(異步寫、合并寫)
持續不斷更新中.
總結
以上是生活随笔為你收集整理的开发实用Linux命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件上传之黑名单绕过
- 下一篇: 【火炉炼AI】深度学习001-神经网络的