我常用的一些linux命令

来源:https://www.cnblogs.com/xindoo/archive/2019/08/29/11432006.html
-Advertisement-
Play Games

之前做過兩年的運維,用過很多命令,深切體會到某些linux命令熟練掌握後對效率提升有多大。舉個簡單的例子,在做了研發後經常會有跑一些數據,對於結果數據的處理,我們的產品同學一般都習慣於用excel做統計,把數據複製到excel里,然後數據分列,排序………… 最後得出某些簡單的結論,我只需要cat, ...


之前做過兩年的運維,用過很多命令,深切體會到某些linux命令熟練掌握後對效率提升有多大。舉個簡單的例子,在做了研發後經常會有跑一些數據,對於結果數據的處理,我們的產品同學一般都習慣於用excel做統計,把數據複製到excel里,然後數據分列,排序………… 最後得出某些簡單的結論,我只需要cat, sort, uniq, awk, grep 這幾個命令揮手間完成相同的操作。
  這裡我總結下我工作這幾年用過的一些命令,當然,這裡就不提那些vim cd ls mv cp 這種簡單的命令了,如果你都不會這些命令的話,建議你先學習下。這裡命令很多,我只簡單列出幾個我常用的參數。其實很多命令我也用的不是特別多,這篇文章我也只是希望能讓大家知道有這樣一個工具,但具體用如果想繼續深入瞭解的話建議查看下手冊,部分比較命令我也列出了有些參考資料。

伺服器運行狀態相關命令

ps

查看系統進程線程,我一般都是用這個命令查看進程pid的,然後用pid做更深入的排查。

基本用法

ps -aux 查看所有進程
ps -T -p ${pid} 查看某個進程的線程

參考資料

10個重要的Linux ps命令實戰

pstree

查看系統進程樹,他可以把各個進程之間的關係用樹形結構標識出來。

基本用法

pstree

top

查看系統進程線程運行情況,包裹資源的使用情況,系統負載等。我的用法是看下伺服器上負載是否很高,然後看具體是哪個進程,哪個線程占用cpu比較多。

基本用法

top 列出所有線程負載信息
top -H 列出所有線程的負載信息
top -H -p ${pid} 列出某個pid下所有線程的負載信息

free

查看記憶體及使用情況

基本用法

free

文件操作相關

cat

我都是用這個命令查看配置文件,或者是日誌文件,但是有點需要註意,cat命令會把整個文件輸出到終端了,如果文件內容非常多,建議使用grep進行過濾,或者直接用less或more命令。

基本用法

cat file.txt

tail

查看某個文件的尾部,或者查看標準出入的最末尾,預設值顯示10行,可以用-n參數來指定輸出多少行。

基本用法

tail -n 100 file.txt 輸出最末尾的100行
tail -f file.txt 隨著文件新增,持續輸出新增的內容,一般用來看實時日誌

和tail命令很相似,不過head是輸出頭部內容,個人感覺head遠沒有tail命令用的多。

基本用法

head -n 100 file.txt 輸出最開始的100行

more

也是用來查看文件,但more命令只載入一屏的內容,可以向下翻動,因為載入的內容少,所以比cat快多了。

基本用法

more file.txt

less

和more很像,但是可以上下翻動,感覺less和more只需要less就可以了,完全可以去掉more啊

基本用法

less file.txt

grep

這個是我非常常用的一個命令了,尤其是在問題排查的時候,需要用grep從大量的數據中篩選出一些我想要的。 grep也支持正則表達式匹配。

基本用法

grep "abc" file 從file中篩選出包含 abc的行。

awk

開頭我也說過,這個命令是我最常用的命令之一,比如在文件有多列的時候,我可以用awk輸出具體某幾列,或者做一些簡單的統計 求和,求平均值啊,再或者做一下簡單的數據格式化。

基本用法

cat data | awk '{print $1,$3,$5}' 輸出第1 3 5列,註意下標是從1開始
cat data | awk '{ sum += $1 } END { print sum }' 對第一列求和
cat data | awk -F'\t' '{print $1,$3}' 把每行數據按tab分列,並輸出1 3列

參考資料

阮一峰 awk介紹

sort

對標準內容做排序,

基本用法

cat file|sort 把file里的數據排序,註意是按字典序排的,如果想按數值排,需要能夠加-n參數
cat file|sort -k2 -n -r 按第二列 數值 倒序 排序,-k指定第幾列,-r是翻轉reverse的意思

uniq

對排序好的內容去重,註意它只是把相鄰且相同的去重,所以如果想要全局去重,需要先用sort排序。

基本用法

cat file|sort|uniq 把file里的文件排序並去重
cat file|sort|uniq -c 把file里的文件排序並去重,且輸出每行出現的次數

wc

我都是用wc來數有多上行,其實wc不僅僅能數多少行,還可以數多少單詞,多少字元。

基本用法

wc -l file 數下file里有多少行
wc -w file 多少個單詞
wc -c file 多少個位元組
wc -m file 多少個字元

參考資料

http://www.runoob.com/linux/linux-comm-wc.html

sed

parallel

linux大部分命令都是單進程的,這個命令可以讓其他命令多進程執行。

參考資料

15分鐘神器gnu parallel 入門觀止

scp

之前運維大量機器的時候,通常需要批量修改某個配置文件,都是在一臺機器上改好,然後用scp腳本分發到其他機器上去的,大大提高效率。

基本用法

scp aaa.txt [email protected]:/tmp/ 把當前目錄下的aaa.txt文件通過192.168.1.3上的test賬號放到/tmp目錄下
scp [email protected]:/tmp/aaa.txt . 和上一條相反

磁碟及IO

du

查看目錄大小

基本用法

du -h --max-depth=1 輸出最深1層的目錄,然後文件大小用人類可讀的方式,比如1K 234M 2G

df

查看磁碟大小和占用情況

基本用法

df -h 查看各個分區的大小和使用情況

iostat

查看磁碟的io狀態

iotop

可以類似於top目錄一樣,實時顯示各個進程的io狀態。

find

查找文件,查找條件可以是文件名,文件日期,文件大小,很強大。 我們之前伺服器上有個磁碟滿就強制刪除伺服器某個目錄下大於1g,且時間大於2天,且文件名是*.log的文件,就是用find加xargs命令做的

基本用法

find /home/test -iname "test.txt 在/home/test/下找文件名為test.txt的文件,也支持通配符
find /home/test -isize +100M 查找/home/test下大於100M的文件

參考資料

wikipedia unix find

locate

定位某個具體文件的位置,locate命令要比find -name快得多,原因是它不搜索具體目錄,而是搜索一個資料庫/var/lib/mlocate/mlocate.db,這個資料庫會通過一個cron定時更新,所以有可能新建的文件會檢索不到。

基本用法

locate a.txt 定位a.txt的位置,如果系統中有多個a.txt,會全部顯示出來。

tree

可以看到樹狀目錄結構,

基本用法

tree -L 2 只顯示兩層樹狀結構

網路

ping

查看網路是否通

基本用法

ping www.baidu.com

nc

netcat,可以用來看遠程某個埠是否打開,功能很強大,但是我用到的不多。

基本用法

nc -z xindoo.me 443 檢測我伺服器上的443埠是否開放(當然是開的)

參考資料

linux nc命令介紹

route

查看和操作本機路由表

基本用法

route 列出本地路由表

參考資料

百度百科 route命令

netstat

查看本機的網路狀態,可以看到埠占用情況和網路鏈接情況。

基本用法

netstat -antp

traceroute

查看一個請求到目標伺服器所經過的所有路由節點,一般用來排查網路問題。

基本用法

traceroute www.baidu.com

參考資料

百度百科 netstat

iftop

查看實時網路io情況

lsof

查看埠占用

dig

查看功能變數名稱的信息,之前做運維的時候,經常需要驗證某個功能變數名稱解析改動是否生效,因為一般一個功能變數名稱會-A到多個ip上,用ping命令只能看到一個ip,這個時候我就會用dig來看功能變數名稱解析信息了。

基本用法

dig www.baidu.com

參考資料

dig 命令介紹

curl

發起一個http請求,我一般都是用這個命令來驗證服務是否能正常訪問的,它有獲取html源碼的功能。

基本用法

curl www.baidu.com
curl -I www.baidu.com 獲取請求baidu.com的請求頭

參考資料

curl的用法(英文)

wget

下載網路上一個文件,基本上就是有個命令行版的下載工具了。

基本用法

wget xindoo.me/test.txt 把我伺服器上test.txt文件下載到本地

其他

yum|apt install

很多時候伺服器上沒有我們想要的工具,可以用這個命令安裝下,yum是Fedora和RedHat以及CentOS中的Shell前端軟體包管理器, apt是ubuntu平臺上的。

基本用法

yum install curl
apt install curl

man

這個命令是用來查看其它命令手冊的,可以看到具體某個命令的詳細作用,和具體參數。這個是個很重要的命令了,一般他會比各命令自帶的--help詳細很多。

基本用法

man curl 查看curl命令的手冊

版權聲明:本文為博主原創文章,轉載請註明出處。 博客地址:https://xindoo.blog.csdn.net/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 場景 Winforn中設置ZedGraph曲線圖的屬性、坐標軸屬性、刻度屬性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573 效果 實現 添加兩條Y軸 ZedGraph是預設帶2條Y軸的,所以其自帶YAxis屬 ...
  • c# 非同步( Async ) 不是多線程 c# 非同步( Async ) 不是多線程 誤解 async 在調試 xxxxAsync() 方法的時候,常常會看到調試器界面中會多出一些線程,直覺上誤認為 Async 冠名的函數是多線程。 對於 StringReader 中的 ReadAsync() 方法的 ...
  • 場景 Winforn中設置ZedGraph曲線圖的屬性、坐標軸屬性、刻度屬性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573 在上面實現曲線相關屬性的設置的基礎上,實現的效果如下: 什麼是曲線標簽,就是上圖中標 ...
  • 場景 Winforn中設置ZedGraph曲線圖的屬性、坐標軸屬性、刻度屬性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573 在上面實現曲線相關屬性的設置的基礎上,實現的字體效果如下: 實現效果參照原文。 現在 ...
  • 當我們用很多服務時,各個服務間的調用關係是怎麼樣的?各個服務單調用的順序\時間性能怎麼樣?服務出錯了,到底是哪個服務引起的?這些問題我們用什麼方案解決呢,以前的方式是各個系統自己單獨做日誌,出了問題從暴出問題的服務開始一個一個服務的排查,耗時耗力,有些日誌不全的,還不一定查得出來。好在現在有Skyw ...
  • 1. 程式和進程 什麼是程式?什麼是進程? 程式是電腦存儲系統中的數據文件,如源代碼程式和可執行程式 進程是程式關於某個數據集合的一次運行活動,是程式執行後得到的一個實體 在當代操作系統中,進程是資源分配的基本單位 程式和進程有什麼聯繫? 沒有程式就沒有進程;但有了程式,未必就會有進程,如程式不運 ...
  • 先來先服務(FCFS)調度演算法是一種最簡單的調度演算法,該演算法既可用於作業調度,也可用於進程調度。 當在作業調度中採用該演算法時,每次調度都是從後備作業隊列中選擇一個或多個最先進入該隊列的作業,將它們調入記憶體,為它們分配資源、創建進程,然後放入就緒隊列 ...
  • 因為公司項目需要相容SEO,同時我們也一直希望能夠真正的實現前後端分離,於是毫不猶豫的選擇了nuxt。 話說要重構前後端分離真是一個大工程,我們團隊花了近兩年時間都沒有完成,最近才又重啟把這個事情做起來,先搞了一個獨立的小模塊,我覺得主要以下兩個點特別重要: 1:團隊穩定且對於系統業務已經熟悉。特別 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...