1. 程式人生 > 其它 >Linux 實用命令

Linux 實用命令

實用命令:

1、檢視端口占用情況

# 檢視該埠是否被佔用
netstat -lnp|grep 5000

# 檢視埠是否被佔用
lsof -i:'5000'

# 殺死端口占用程序,根據程序號殺死
kill -9 28533

# 再次檢視,如果檢視時候提示命令不存在 :
# 需要先安裝一下命令
yum -y install net-tools

# 最常見的還有防火牆
yum install firewalld

2、檢視空間使用清理

# 檢視空間使用情況
df -h

# 檢視當前目錄下空間使用情況
du -lh --max-depth=1

 3、按時間批量刪除檔案

需要根據時間刪除這個目錄下的檔案,/home/lifeccp/dicom/studies,清理掉20天之前的無效資料。

find /home/lifeccp/dicom/studies -mtime +21 -name "*.*" -exec rm -Rf {} \;

簡要解釋該Shell命令

  • /home/lifeccp/dicom/studies :準備要進行清理的任意目錄
  • -mtime:標準語句寫法
  • +10:查詢10天前的檔案,這裡用數字代表天數,+30表示查詢30天前的檔案
  • "*.*":希望查詢的資料型別,"*.jpg"表示查詢副檔名為jpg的所有檔案,"*"表示查詢所有檔案
  • -exec:固定寫法
  • rm -rf:強制刪除檔案,包括目錄
  •  {} \; :固定寫法,一對大括號+空格+/+;

注意:在我本人使用的時候,發現可能會存在1-2天的延後誤差,比如:刪除10天前的,可能刪除了12天前的,大家執行完可以檢查一下

4、按時間查詢檔案

根據日期查詢相關檔案

# /recordings/ 查詢的目錄 ,預設當前目錄
ls --full-time /recordings/ | sed -n '/2018-03-21/p'

按照日期範圍查詢相關檔案

find images/ -newermt '2021-01-01' ! -newermt '2021-01-31'

# 按時間範圍拷貝檔案到另一臺伺服器(內網)
scp -p ssh埠(22)'檔案路徑' '目標主機賬號'@'IP':'存放到目標路徑'

 統計檔案個數

# wc -l 統計檔案個數
ls --full-time /recordings/ | sed -n '/2018-03-21/p' | wc -l

5、檔案、資料夾統計

5.1、個數統計

Linux 中可以通過 ls -l 或者 find -type f 來統計檔案、資料夾的個數,具體操作如下。
檢視某資料夾下檔案的個數:
ls -l | grep "^-" | wc -l
# ls -l 列出檔案及資料夾
# "^-" 以-開頭的行 檔案以-開頭 資料夾以d開頭
# wc -l 統計行數
或者可以:
find ./ -type f | wc -l
# ./ 在當前目錄查詢
# -type f 檔案型別 -name "*.conf*" 根據檔案字尾查詢
# wc -l 統計行數
檢視某資料夾下檔案的個數,包括子資料夾:
ls -lR | grep "^-" | wc -l
# -R 遞迴列出子目錄的檔案
檢視某資料夾下資料夾的個數,包括子資料夾:
ls -lR | grep "^d" | wc -l
# "^d" 以d開頭的行

5.2、大小統計

使用 du、df、free 進行統計,詳細見下

1、du詳解
2.1 du 詳解
Linux du 命令用於顯示目錄或檔案的大小。
du 會顯示指定的目錄或檔案所佔用的磁碟空間。
語法:
du [-abcDhHklmsSx] [目錄或檔案]
引數說明:
-a 或 -all:顯示目錄中檔案的大小,單位 KB
-b:顯示目錄中檔案的大小,以位元組 byte 為單位
-c:顯示目錄中檔案的大小,同時顯示總和,單位 KB
-k:顯示目錄中檔案的大小,單位 KB
-m:顯示目錄中檔案的大小,單位 MB
-s:僅顯示目錄的總值,單位 KB
-h:--human-readable 以K,M,G為單位,提高資訊的可讀性。
-x:以一開始處理時的檔案系統為準,若遇上其它不同的檔案系統目錄則略過。
-H:--si 與 -h引數相同,但是 K、M、G是以1000為換算單位
--max-depth = 1 :遍歷深度
例項:
du -h * # 顯示當前目錄下檔案的大小
du -sh # 檢視當前資料夾大小
du -sh * | sort -nr # 統計當前資料夾(目錄)大小,並按檔案大小排序 -- 加了-h之後排序有問題
du -sk filename # 檢視指定檔案大小
使用 sort 的引數 -nr 表示要以數字排序法進行反向排序,因為我們要對目錄大小做排序,所以不可以使用 human-readable 的大小輸出,不然目錄大小中會有 K、M 等字樣,會造成排序不正確。
如果有一個程序在開啟一個大檔案的時候,這個大檔案直接被 rm 或者mv 掉,則 du 會更新統計數值,df 不會更新統計數值,還是認為空間沒有釋放。直到這個開啟大檔案的程序被Kill掉。
 2、df詳解
2.2 df 詳解
Linux df 命令顯示磁碟分割槽上可以使用的磁碟空間。
df 可以檢視一級資料夾大小、使用比例、檔案系統及其掛入點,但對檔案卻無能為力。
du可以檢視檔案及資料夾的大小。
兩者配合使用,非常有效。
比如用 df 檢視哪個一級目錄過大,然後用 du 檢視資料夾或檔案的大小,如此便可迅速確定癥結。
語法:
df [選項] [file]
引數說明:
-a: --all 包含所有的具有 0 Blocks 的檔案系統,單位預設 KB
-h:使用 -h 選項以 KB、MB、GB 的單位來顯示,可讀性高~~~(最常用)
-i:檢視目前檔案系統 inode 的使用情形
有的時候雖然檔案系統還有空間,但若沒有足夠的 inode 來存放檔案的資訊,一樣會不能增加新的檔案。
所謂的 inode 是用來存放檔案及目錄的基本資訊 (metadata),包含時間、檔名、使用者及群組等。在分割扇區時,系統會先做出一堆 inode 以供以後使用,inode 的數量關係著系統中可以建立的檔案及目錄總數。如果要存的檔案大部分都很小,則同樣大小的硬碟中會有較多的檔案,也就是說需要較多的 inode 來掛檔案及目錄。
例項:
df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             3.9G  300M  3.4G   8% /
/dev/sda7             100G  188M   95G   1% /data0
/dev/sdb1             133G   80G   47G  64% /data1
/dev/sda6             7.8G  218M  7.2G   3% /var
/dev/sda5             7.8G  166M  7.2G   3% /tmp
/dev/sda3             9.7G  2.5G  6.8G  27% /usr
tmpfs                 2.0G     0  2.0G   0% /dev/shm
Filesystem -- 檔案系統
Mounted on -- 掛入點
size -- 分割槽容量
Used -- 已使用的大小
Avail -- 剩下的大小
Use% -- 使用的百分比
FreeBSD下,當硬碟容量已滿時,可能會看到已使用的百分比超過 100%,因為 FreeBSD 會留一些空間給 root,讓 root 在檔案系統滿時,還是可以寫東西到該檔案系統中,以進行管理。
3、free詳解
2.3 free 詳解
Linux free 命令可以顯示 Linux 系統中空閒的、已用的實體記憶體及互動區記憶體(swap),及被核心使用的 buffer(核心緩衝區記憶體)。共享記憶體將被忽略。
語法:
free [引數]
             total       used       free     shared    buffers     cached
Mem:      32948032   32767416     180616          0     139960   29878896
-/+ buffers/cache:    2748560   30199472
Swap:      8193140     664956    7528184
引數說明:
-b:以 Byte 為單位顯示記憶體使用情況
-k:以 KB 為單位顯示記憶體使用情況
-m:以 MB 為單位顯示記憶體使用情況
-g:以 GB 為單位顯示記憶體使用情況
-t:顯示記憶體綜合列

6、檢視系統資訊

檢視核心版本

# 檢視核心
uname -r

檢視系統資訊

# 檢視系統資訊
lsb_release -a
# 沒有以上的命令,可使用一下命令檢視 XX為發行版名稱。如 centos-release
Cat /etc/xxx-release

 檢視核心和作業系統相關資訊

# 檢視核心
uname -r

# 檢視作業系統相關資訊
uname -a

# 檢視寬頻實時使用率
nload

7、開放及檢視埠

檢視已開放埠

# 檢視開放埠
firewall-cmd --list-ports

開放及關閉埠(開放後需要要重啟防火牆才生效)

# 開放單個埠
firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 開放多個埠
firewall-cmd --zone=public --add-port=20000-29999/tcp --permanent

# 關閉埠
firewall-cmd --zone=public --remove-port=8080/tcp --permanent

(--permanent  為永久生效,不加為單次有效(重啟失效))

 防火牆操作

# 檢視防火牆狀態
systemctl status firewalld

# 開啟防火牆
systemctl start firewalld

# 關閉防火牆
systemctl stop firewalld

# 重啟防火牆
systemctl restart firewalld

# 開機自啟
systemctl enable firewalld

# 開機禁用
systemctl disable firewalld

8、資料夾或檔案許可權賦予

給.sh檔案賦予可執行許可權

chmod +x  檔名

# 示例
chmod +x test.sh

8.1、符號型別修改法

我們把九個許可權分別是 user,group,others三種身份,藉由u、g、o來代表,採用a表示所有許可權,其餘的r、w、x分別代表讀、寫、執行許可權。使用如下表的方法

比如我們要對一個檔案許可權為“-rwxr-xr–”修改為“-rwxrwxr-x”,則需要對使用者組身份的許可權追加w許可權,對其他使用者追加x 許可權,所以這樣執行:
  chmod g+w, o+x filename 或者 chmod g=rwx, o=rx filename

9、擴充套件命令

9.1、命令間隔執行

# 單條命令間隔執行 
# -d 高亮顯示本次重新整理和上次重新整理不同的地方  如:-d "date"
# -t 可執行復合命令 如: "ps -ef | grep ps"
watch -n 1 'ls'

# 更多幫助
watch --help