首頁 運維 linux運維 超實用的 Linux 進階指令,程式設計師一定要懂!

超實用的 Linux 進階指令,程式設計師一定要懂!

Aug 02, 2023 pm 03:47 PM
linux






#前言


在在維運的坑裡摸爬滾打好幾年了,我還記得我剛開始的時候,我只會使用一些簡單的指令,寫腳本的時候,也是要多簡單有多簡單,所以有時候寫出來的腳本又長又臭。

超實用的 Linux 進階指令,程式設計師一定要懂!

###像是一些高階點的指令,比如說Xargs 指令、管線指令、自動回應指令等,如果當初我要是知道,那我也可能寫出簡潔有效率的腳本。 ######

不管出於任何原因,我都想對一些 Linux 使用的高級命令進行用法說明,利人利己,以後不記得的話,我也可以回頭翻來看看。







一、實用的xargs 指令

#############在平時的使用中,我認為xargs 這個指令還是較為重要且方便的。我們可以透過使用這個命令,將命令輸出的結果作為參數傳遞給另一個命令。 ######

比如說我們想找出某個路徑下以.conf 結尾的文件,並將這些文件進行分類,那麼普通的做法就是先將以.conf 結尾的文件先找出來,然後輸出到一個文件中,接著cat 這個文件,並使用file 文件分類指令去對輸出的文件進行分類。

這個普通的方法還的確是略顯麻煩,那麼這個時候 xargs 指令就派上用場了。
範例1:找出/ 目錄下以.conf 結尾的文件,並進行文件分類
指令:

find / -name *.conf -type f \
-print | xargs file
登入後複製

輸出結果如下所示:

超實用的 Linux 進階指令,程式設計師一定要懂!

xargs 後面不只可以加檔案分類的指令,你還可以加其他的很多指令,比如說實在一點的tar指令,你可以使用find指令配合tar指令,將指定路徑的特殊檔案使用find指令找出來,然後配合tar指令將找出的檔案直接打包,指令如下:

#
find / -name *.conf -type f \
-print | xargs tar cjf test.tar.gz
登入後複製






二、命令或脚本后台运行


有时候我们进行一些操作的时候,不希望我们的操作在终端会话断了之后就跟着断了,特别是一些数据库导入导出操作,如果涉及到大数据量的操作,我们不可能保证我们的网络在我们的操作期间不出问题,所以后台运行脚本或者命令对我们来说是一大保障。

比如说我们想把数据库的导出操作后台运行,并且将命令的操作输出记录到文件,那么我们可以这么做:(反斜杠代表换行,可以忽略)

nohup mysqldump -uroot -pxxxxx \
—all-databases > \
./alldatabases.sql &(xxxxx是密码)
登入後複製

当然如果你不想密码明文,你还可以这么做:

nohup mysqldump -uroot -pxxxxx \
—all-databases \
> ./alldatabases.sql (后面不加&符号)
登入後複製

执行了上述命令后,会提示叫你输入密码,输入密码后,该命令还在前台运行,但是我们的目的是后天运行该命令,这个时候你可以按下Ctrl+Z,然后在输入bg就可以达到第一个命令的效果,让该命令后台运行,同时也可以让密码隐蔽输入。

命令后台执行的结果会在命令执行的当前目录下留下一个nohup.out文件,查看这个文件就知道命令有没有执行报错等信息。







三、找出当前系统内存使用量较高的进程


在很多运维的时候,我们发现内存耗用较为严重,那么怎么样才能找出内存消耗的进程排序呢?
命令:

ps -aux | sort -rnk 4 | head -20
登入後複製

超實用的 Linux 進階指令,程式設計師一定要懂!

输出的第4列就是内存的耗用百分比。最后一列就是相对应的进程。








四、找出当前系统CPU使用量较高的进程


在很多运维的时候,我们发现CPU耗用较为严重,那么怎么样才能找出CPU消耗的进程排序呢?
命令:

ps -aux | sort -rnk 3 | head -20
登入後複製

超實用的 Linux 進階指令,程式設計師一定要懂!

输出的第3列为CPU的耗用百分比,最后一列就是对应的进程。

牛逼啊!接私活必备的 N 个开源项目!赶快收藏
登入後複製

我想大家应该也发现了,sort 命令后的3、4其实就是代表着第3列进行排序、第4列进行排序。







五、同时查看多个日志或数据文件


在日常工作中,我们查看日志文件的方式可能是使用tail命令在一个个的终端查看日志文件,一个终端就看一个日志文件。包括我在内也是,但是有时候也会觉得这种方式略显麻烦,其实有个工具叫做multitail可以在同一个终端同时查看多个日志文件。

首先安装multitail:

wget ftp://ftp.is.co.za/mirror/ftp.rpmforge.net/redhat/el6/en/x86_64/dag/RPMS/multitail-5.2.9-1.el6.rf.x86_64.rpm
yum -y localinstall multitail-5.2.9-1.el6.rf.x86_64.rpm
登入後複製

multitail工具支持文本的高亮显示,内容过滤以及更多你可能需要的功能。

如下就来一个有用的例子:
此时我们既想查看secure的日志指定过滤关键字输出,又想查看实时的网络ping情况:
命令如下:

multitail -e "Accepted" \/var/log/secure -l "ping baidu.com"
登入後複製

超實用的 Linux 進階指令,程式設計師一定要懂!

不是很方便?如果平时我们想查看两个日志之间的关联性,可以观察日志输出是否有触发等。如果分开两个终端可能来回进行切换有点浪费时间,这个multitail工具查看未尝不是一个好方法。









六、持續ping並將結果記錄到日誌

很多時候,維運總會聽到一個聲音,是不是網路出什麼問題了啊,導致業務出現怪異的症狀,肯定是伺服器網路出問題了。這個就是俗稱的背鍋,業務出了問題,第一時間相關人員找不到原因很多情況下就會把問題歸結於伺服器網路有問題。 ############這時候你去ping幾個包把結果丟出來,人家會反駁你,剛剛那段時間有問題而已,現在業務都恢復正常了,網絡肯定正常啊,這個時候估計你要氣死。 ######

你要是再拿出zabbix等网络监控的数据,这个时候就不太妥当了,zabbix的采集数据间隔你不可能设置成1秒钟1次吧?小编就遇到过这样的问题,结果我通过以下的命令进行了ping监控采集。

然后再有人让我背锅的时候,我把出问题时间段的ping数据库截取出来,大家公开谈,结果那次被我叼杠回去了,以后他们都不敢轻易甩锅了,这个感觉好啊。

命令:

ping api.jpush.cn | awk '{ print $0 " " strftime(“%Y-%m-%d %H:%M:%S”,systime()) }' >> /tmp/jiguang.log &
登入後複製

输出的结果会记录到/tmp/jiguang.log 中,每秒钟新增一条ping记录,如下:

超實用的 Linux 進階指令,程式設計師一定要懂!







七、查看tcp连接状态


指定查看80端口的tcp连接状态,有利于分析连接是否释放,或者攻击时进行状态分析。另外,搜索公众号Java架构师技术后台回复“面试题”,获取一份惊喜礼包。

命令:

netstat -nat |awk \'{print $6}' |sort|\uniq -c|sort -rn
登入後複製


超實用的 Linux 進階指令,程式設計師一定要懂!







八、查找80端口请求数最高的前20个IP


有时候业务的请求量突然上去了,那么这个时候我们可以查看下请求来源IP情况,如果是集中在少数IP上的,那么可能是存在攻击行为,我们使用防火墙就可以进行封禁。命令如下:

netstat -anlp|grep 80|grep tcp|awk '{print $5}' \|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
登入後複製

超實用的 Linux 進階指令,程式設計師一定要懂!








#九、ssh實作連接埠轉送

#可能很多的朋友都聽過ssh是linux下的遠端登入安全協議,就是通俗的遠端登入管理伺服器。但是應該很少朋友會聽過ssh還可以做連接埠轉送。其實ssh用來做連接埠轉送的功能還是很強大的,下面就來做示範。

實例背景:我們公司是有堡壘機的,任何操作均需要在堡壘機上進行,有寫開發人員需要訪問ELasticSearch的head面板查看集群狀態,但是我們並不想將ElasticSearch的9200連接埠映射出去,依然想透過堡壘機進行存取。所以才會將通往堡壘機(192.168.1.15)的請求轉送到伺服器ElasticSearch(192.168.1.19)的9200上。

範例:

將發送到本機(192.168.1.15)的9200埠存取轉送至192.168.1.19的9200埠#########
ssh -p 22 -C -f -N -g -L \9200:192.168.1.19:9200 \ihavecar@192.168.1.19
登入後複製

记住:前提是先进行秘钥传输。

命令执行完后,访问192.168.1.15:9200端口则真实是访问192.168.1.19:9200端口。

以上是超實用的 Linux 進階指令,程式設計師一定要懂!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

vscode終端命令不能用 vscode終端命令不能用 Apr 15, 2025 pm 10:03 PM

VS Code 終端命令無法使用的原因及解決辦法:未安裝必要的工具(Windows:WSL;macOS:Xcode 命令行工具)路徑配置錯誤(添加可執行文件到 PATH 環境變量中)權限問題(以管理員身份運行 VS Code)防火牆或代理限制(檢查設置,解除限制)終端設置不正確(啟用使用外部終端)VS Code 安裝損壞(重新安裝或更新)終端配置不兼容(嘗試不同的終端類型或命令)特定環境變量缺失(設置必要的環境變量)

See all articles