linux中shell等命令參考

2021-10-13 23:53:01 字數 4325 閱讀 5062

#顯示所有檔案(包含隱藏檔案)

ls -a

#只顯示隱藏檔案

l.或者

ls -d .*

檢視cpu資訊、機器硬體型號

# linux 檢視顯示卡資訊

lspci | grep -i vga

# nvidia gpu檢視顯示卡資訊

lspci | grep -i nvidia

# nvidia 自帶工具

nvidia-smi

# 前邊的序號 "00:0f.0"是顯示卡的代號

# 檢視指定顯示卡的詳細資訊用以下指令

lspci -v -s 02:00.1

# 週期性的輸出顯示卡的使用情況,用watch指令實現,命令列引數-n後邊跟的是執行命令的週期,以s為單位。

watch -n 10 nvidia-smi

# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

8 intel(r) xeon(r) cpu e5410 @ 2.33ghz

(看到有8個邏輯cpu, 也知道了cpu型號)

# cat /proc/cpuinfo | grep physical | uniq -c

4 physical id : 0

4 physical id : 1

(說明實際上是兩顆4核的cpu)

# getconf long_bit

32(說明當前cpu執行在32bit模式下, 但不代表cpu不支援64bit)

# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

8(結果大於0, 說明支援64bit計算. lm指long mode, 支援lm則是64bit)

再完整看cpu詳細資訊, 不過大部分我們都不關心而已.

# dmidecode | grep 'processor information'

檢視記憶體資訊

# cat /proc/meminfo

# uname -a

linux euis1 2.6.9-55.elsmp #1 smp fri apr 20 17:03:35 edt 2007 i686 i686 i386 gnu/linux

(檢視當前作業系統核心資訊)

# cat /etc/issue | grep linux

red hat enterprise linux as release 4 (nahant update 5)

(檢視當前作業系統發行版資訊)

檢視機器型號

# dmidecode | grep "product name"

檢視網絡卡資訊

# dmesg | grep -i eth

參考: 

檢視邏輯cpu個數:

#cat /proc/cpuinfo |grep "processor"|sort -u|wc -l

24檢視物理cpu個數:

#grep "physical id" /proc/cpuinfo|sort -u|wc -l

2#grep "physical id" /proc/cpuinfo|sort -u

physical id : 0

physical id : 1

檢視每個物理cpu核心個數:

#grep "cpu cores" /proc/cpuinfo|uniq

cpu cores : 6

每個物理cpu上邏輯cpu個數:

#grep "siblings" /proc/cpuinfo|uniq

siblings : 12

判斷是否開啟了超執行緒:

如果多個邏輯cpu的"physical id"和"core id"均相同,說明開啟了超執行緒,或者換句話說

邏輯cpu個數 > 物理cpu個數 * cpu核心數 開啟了超執行緒

邏輯cpu個數 = 物理cpu個數 * cpu核心數 沒有開啟超執行緒

這種場景經常見到,比如執行umount,發現被占用,想找到被誰占用

使用fuser來查檔案或目錄被誰占用

fuser /proc

/proc: 2454rc

引數:-v 顯示用多資訊,-u 顯示使用者

# fuser -uv /proc

使用者 程序號 許可權 命令

/proc: rtkit 2454 .rc.. (rtkit)rtkit-daemon

想要顯示/proc目錄下所有檔案和目錄被占用情況,加-m引數

# fuser -uvm /proc

使用者 程序號 許可權 命令

/proc: root 1311 f.... (root)rsyslogd

root 1667 f.... (root)vmtoolsd

root 2028 f.... (root)acpid

haldaemon 2040 f.... (haldaemon)hald

使用刪除某個pid,加-k引數,加入-i,配合-k會詢問使用者意願

# fuser -ki /proc

/proc: 2454rc

殺死程序 2454 ? (y/n) n

lsof的使用

lsof列出被程序所開啟的檔案,直接執行,輸出內容很多

加引數-u找某個使用者的程序

# lsof -u root|more

command pid user fd type device size/off node name

init 1 root cwd dir 253,0 4096 2 /

init 1 root rtd dir 253,0 4096 2 /

init 1 root txt reg 253,0 150352 4560 /sbi

n/init

...

+d 引數,找某個目錄被開啟的檔案

-a 多個條件同時成立,例如找root使用者開啟/proc的情況

# lsof +d /proc -a -u root

command pid user fd type device size/off node name

rsyslogd 1311 root 3r reg 0,3 0 4026532038 /proc/kmsg

vmtoolsd 1667 root 16r reg 0,3 0 4026532032 /proc/meminfo

vmtoolsd 1667 root 17r reg 0,3 0 4026532033 /proc/stat

vmtoolsd 1667 root 18r reg 0,3 0 4026532020 /proc/vmstat

lsof 24962 root 3r dir 0,3 0 1 /proc

還有個引數-u ,用來列出socket檔案型別

檔案許可權中 chmod、u+x、u、r、w、x分別代表什麼: 

參考: 

1. 用絕對路徑或相對路徑執行

/***/xx/test.sh 或 ./test.sh, 要求s**件必須有可執行許可權,可以用命令 chmod a+x test.sh來新增

2. 用bash或sh來執行

bash test.sh 或 sh test.sh

3. 用source 或 . 來執行

source test.sh 或 . test.sh 這樣的一大特點是,在本shell執行,前面的方式都是在本shell的子shell中執行,不能獲取s**件中的變數

ctrl + r

shell命令,shell迴圈,shell引數

touch hello.sh 建立乙個檔案 vi hello.sh 編輯文字 bin bash 指定bash解析器,centos預設的是bash解析器 echo helloworld echo helloworld 這兩句話效果相同,不過為了符合規範用第二種 執行指令碼,首先賦予指令碼最大許可權 c...

Linux 中 jobs fg bg 等命令

參考 unix 或 linux 中 jobs fg bg 等命令的使用方法 對之前文章的乙個補充 linux 命令後台執行 這篇還是比較簡單的,稍微一帶而過 fg bg jobs ctrl z 都是跟系統任務有關的,雖然現在基本上不怎麼需要用到這些命令,但學會了也是很實用的 這個用在乙個命令的最後,...

linux中的shell命令

e filename 如果filename存在,則為真 d filename 如果filename為目錄,則為真 f filename 如果filename為常規檔案,則為真 l filename 如果filename為符號鏈結,則為真 r filename 如果filename可讀,則為真 w f...