Linux基本bash命令(持續更新)
首先了解下shell
Shell 是一個用 C 語言編寫的程式,它是使用者使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程式設計語言。
- 以下是幾種shell版本,bash是預設的:
-
sh(全稱 Bourne Shell): 是UNIX最初使用的 shell,而且在每種 UNIX 上都可以使用。
Bourne Shell 在 shell 程式設計方面相當優秀,但在處理與使用者的互動方面做得不如其他幾種 shell。
bash(全稱 Bourne Again Shell): LinuxOS 預設的,它是 Bourne Shell 的擴充套件。
與 Bourne Shell 完全相容,並且在 Bourne Shell 的基礎上增加了很多特性。可以提供命令補全,命令編輯和命令歷史等功能。它還包含了很多 C Shell 和 Korn Shell 中的優點,有靈活和強大的編輯介面,同時又很友好的使用者介面。 - csh(全稱 C Shell): 是一種比 Bourne Shell更適合的變種 Shell,它的語法與 C 語言很相似。
-
Tcsh: 是 Linux 提供的 C Shell 的一個擴充套件版本。
Tcsh 包括命令列編輯,可程式設計單詞補全,拼寫校正,歷史命令替換,作業控制和類似 C 語言的語法,他不僅和 Bash Shell 提示符相容,而且還提供比 Bash Shell 更多的提示符引數。
ksh (全稱 Korn Shell): 集合了 C Shell 和 Bourne Shell 的優點並且和 Bourne Shell 完全相容。
pdksh: 是 Linux 系統提供的 ksh 的擴充套件。
pdksh 支援人物控制,可以在命令列上掛起,後臺執行,喚醒或終止程式。
主要學習bash,第一個bash指令碼: -
#!/bin/bash echo "Hello World !"
#!/bin/bash。
#! 告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的 Shell 程式。
執行 Shell 指令碼有兩種方法:
1、作為可執行程式
將上面的程式碼儲存為 test.sh,並 cd 到相應目錄:
chmod +x ./test.sh #使指令碼具有執行許可權
./test.sh #執行指令碼
注意,一定要寫成 ./test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.sh,linux 系統會去
PATH 裡尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 裡,你的當前目錄通常不在 PATH 裡,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統說,就在當前目錄找。
2、作為直譯器引數
這種執行方式是,直接執行直譯器,其引數就是 shell 指令碼的檔名,如:
/bin/sh test.sh
/bin/php test.php
常用bash命令
a)檢視檔案大小,記憶體大小,cpu資訊,硬碟空間等等。
du -sh * #檢視當前資料夾大小
du -sh * | sort -n 統計當前資料夾(目錄)大小,並按檔案大小排序
#附送:
du -sk filename 檢視指定檔案大小
1、cpu檢視
1)cpu個數:#cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
2)cpu核數:#cat /proc/cpuinfo | grep "cpu cores" | uniq
3)cpu型號:#cat /proc/cpuinfo | grep `model name` |uniq
2、記憶體檢視:#cat /proc/meminfo | grep MemTotal
3、硬碟檢視: #fdisk -l | grep Disk
PS:
uname -a # 檢視核心/作業系統/CPU資訊的linux系統資訊
head -n l /etc/issue # 檢視作業系統版本
cat /proc/cpuinfo # 檢視CPU資訊
hostname # 檢視計算機名的linux系統資訊命令
lspci -tv # 列出所有PCI裝置
lsusb -tv # 列出所有USB裝置的linux系統資訊命令
lsmod # 列出載入的核心模組
env # 檢視環境變數資源
free -m # 檢視記憶體使用量和交換區使用量
df -h # 檢視各分割槽使用情況
du -sh # 檢視指定目錄的大小
grep MemTotal /proc/meminfo # 檢視記憶體總量
grep MemFree /proc/meminfo # 檢視空閒記憶體量
uptime # 檢視系統執行時間、使用者數、負載
cat /proc/loadavg # 檢視系統負載磁碟和分割槽
mount | column -t # 檢視掛接的分割槽狀態
fdisk -l # 檢視所有分割槽
swapon -s # 檢視所有交換分割槽
hdparm -i /dev/hda # 檢視磁碟引數(僅適用於IDE裝置)
dmesg | grep IDE # 檢視啟動時IDE裝置檢測狀況網路
ifconfig # 檢視所有網路介面的屬性
iptables -L # 檢視防火牆設定
route -n # 檢視路由表
netstat -lntp # 檢視所有監聽埠
netstat -antp # 檢視所有已經建立的連線
netstat -s # 檢視網路統計資訊程式
ps -ef # 檢視所有程式
top # 實時顯示程式狀態使用者
w # 檢視活動使用者
id # 檢視指定使用者資訊
last # 檢視使用者登入日誌
cut -d: -f1 /etc/passwd # 檢視系統所有使用者
cut -d: -f1 /etc/group # 檢視系統所有組
crontab -l # 檢視當前使用者的計劃任務服務
chkconfig –list # 列出所有系統服務
chkconfig –list | grep on # 列出所有啟動的系統服務程式
rpm -qa # 檢視所有安裝的軟體包
cat /proc/cpuinfo :檢視CPU相關引數的linux系統命令
cat /proc/partitions :檢視linux硬碟和分割槽資訊的系統資訊命令
cat /proc/meminfo :檢視linux系統記憶體資訊的linux系統命令
cat /proc/version :檢視版本,類似uname -r
cat /proc/ioports :檢視裝置io埠
cat /proc/interrupts :檢視中斷
cat /proc/pci :檢視pci裝置的資訊
cat /proc/swaps :檢視所有swap分割槽的資訊
但是我們的主要目的是在執行程式是動態的觀察cpu,程式的狀態,所以需要使用top命令
top – 12:38:33 up 50 days, 23:15, 7 users, load average: 60.58, 61.14, 61.22
Tasks: 203 total, 60 running, 139 sleeping, 4 stopped, 0 zombie
Cpu(s) : 27.0%us, 73.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1939780k total, 1375280k used, 564500k free, 109680k buffers
Swap: 4401800k total, 497456k used, 3904344k free, 848712k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4338 oracle 25 0 627m 209m 207m R 0 11.0 297:14.76 oracle
4267 oracle 25 0 626m 144m 143m R 6 7.6 89:16.62 oracle
3458 oracle 25 0 672m 133m 124m R 0 7.1 1283:08 oracle
3478 oracle 25 0 672m 124m 115m R 0 6.6 1272:30 oracle
3395 oracle 25 0 672m 122m 113m R 0 6.5 1270:03 oracle
3480 oracle 25 0 672m 122m 109m R 8 6.4 1274:13 oracle
3399 oracle 25 0 672m 121m 110m R 0 6.4 1279:37 oracle
4261 oracle 25 0 634m 100m 99m R 0 5.3 86:13.90 oracle
25737 oracle 25 0 632m 81m 74m R 0 4.3 272:35.42 oracle
7072 oracle 25 0 626m 72m 71m R 0 3.8 6:35.68 oracle
16073 oracle 25 0 630m 68m 63m R 8 3.6 175:20.36 oracle
16140 oracle 25 0 630m 66m 60m R 0 3.5 175:13.42 oracle
16122 oracle 25 0 630m 66m 60m R 0 3.5 176:47.73 oracle
786 oracle 25 0 627m 63m 63m R 0 3.4 1:54.93 oracle
4271 oracle 25 0 627m 59m 58m R 8 3.1 86:09.64 oracle
4273 oracle 25 0 627m 57m 56m R 8 3.0 84:38.20 oracle
22670 oracle 25 0 626m 50m 49m R 0 2.7 84:55.82 oracle
一. TOP前五行統計資訊
統計資訊區前五行是系統整體的統計資訊。
1. 第一行是任務佇列資訊
同 uptime 命令的執行結果:
[root@localhost ~]# uptime
13:22:30 up 8 min, 4 users, load average: 0.14, 0.38, 0.25
其內容如下:
12:38:33 |
當前時間 |
up 50days |
系統執行時間,格式為時:分 |
1 user |
當前登入使用者數 |
load average: 0.06, 0.60, 0.48 |
系統負載,即任務佇列的平均長度。 三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。 |
2. 第二、三行為程式和CPU的資訊
當有多個CPU時,這些內容可能會超過兩行。內容如下:
Tasks: 29 total |
程式總數 |
1 running |
正在執行的程式數 |
28 sleeping |
睡眠的程式數 |
0 stopped |
停止的程式數 |
0 zombie |
殭屍程式數 |
Cpu(s): 0.3% us |
使用者空間佔用CPU百分比 |
1.0% sy |
核心空間佔用CPU百分比 |
0.0% ni |
使用者程式空間內改變過優先順序的程式佔用CPU百分比 |
98.7% id |
空閒CPU百分比 |
0.0% wa |
等待輸入輸出的CPU時間百分比 |
0.0% hi |
|
0.0% si |
3. 第四五行為記憶體資訊。
內容如下:
Mem: 191272k total |
實體記憶體總量 |
173656k used |
使用的實體記憶體總量 |
17616k free |
空閒記憶體總量 |
22052k buffers |
用作核心快取的記憶體量 |
Swap: 192772k total |
交換區總量 |
0k used |
使用的交換區總量 |
192772k free |
空閒交換區總量 |
123988k cached |
緩衝的交換區總量。 記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋, 該數值即為這些內容已存在於記憶體中的交換區的大小。相應的記憶體再次被換出時可不必再對交換區寫入。 |
二. 程式資訊
列名 |
含義 |
PID |
程式id |
PPID |
父程式id |
RUSER |
Real user name |
UID |
程式所有者的使用者id |
USER |
程式所有者的使用者名稱 |
GROUP |
程式所有者的組名 |
TTY |
啟動程式的終端名。不是從終端啟動的程式則顯示為 ? |
PR |
優先順序 |
NI |
nice值。負值表示高優先順序,正值表示低優先順序 |
P |
最後使用的CPU,僅在多CPU環境下有意義 |
%CPU |
上次更新到現在的CPU時間佔用百分比 |
TIME |
程式使用的CPU時間總計,單位秒 |
TIME+ |
程式使用的CPU時間總計,單位1/100秒 |
%MEM |
程式使用的實體記憶體百分比 |
VIRT |
程式使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES |
SWAP |
程式使用的虛擬記憶體中,被換出的大小,單位kb。 |
RES |
程式使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA |
CODE |
可執行程式碼佔用的實體記憶體大小,單位kb |
DATA |
可執行程式碼以外的部分(資料段+棧)佔用的實體記憶體大小,單位kb |
SHR |
共享記憶體大小,單位kb |
nFLT |
頁面錯誤次數 |
nDRT |
最後一次寫入到現在,被修改過的頁面數。 |
S |
程式狀態。 |
COMMAND |
命令名/命令列 |
WCHAN |
若該程式在睡眠,則顯示睡眠中的系統函式名 |
Flags |
任務標誌,參考 sched.h |
HTOP應該已經完全替代了top功能。htop
相關文章
- Linux 常用命令 持續更新Linux
- 一些Linux shell命令 - 持續更新Linux
- Linux常用命令整理-持續更新Linux
- 每天一個linux命令--持續更新中~~Linux
- docker 常用命令(持續更新)Docker
- Git 常用命令(持續更新)Git
- mdk的命令講解(持續更新)
- Git常用命令 (持續更新)Git
- LINUX進階(持續更新)Linux
- Linux常用命令知識積累(持續更新)Linux
- 一些常用的命令(持續更新)
- 各種命令,以及FAQ..持續更新.....
- android之常用cmd命令(持續更新......)Android
- Web命令執行筆記(持續更新)Web筆記
- linux使用心得(持續更新)Linux
- 高逼格又實用的Linux命令:持續更新中Linux
- CentOS 7 常用命令 (持續更新中...)CentOS
- JVM(持續更新。。。)JVM
- FastApi持續更新ASTAPI
- linux嵌入式 札記(持續更新)Linux
- Blender 雕刻 持續更新
- OpenCv裡的一些基本函式,持續更新中。。。。。OpenCV函式
- Git 常用命令總結,將會持續更新Git
- linux網路知識和工具(持續更新)Linux
- Linux基本命令學習之五:bash 變數Linux變數
- MySql報錯(持續更新)MySql
- Pycharm快捷鍵持續更新PyCharm
- Xcode 技巧 持續更新XCode
- AI面試題(持續更新)AI面試題
- Hbase面試題(持續更新)面試題
- git使用、持續更新中Git
- 踩坑記[持續更新]
- litepal筆記(持續更新)筆記
- leetcode(持續更新......)LeetCode
- thymeleaf的坑(持續更新。。。)
- LevOJ平臺 - 持續更新
- go 常用包整理 (持續更新)Go
- 前端知識點(持續更新)前端