更多 bash shell 命令

  • 來自Linux命令行與shell腳本編程大全,如有侵權(quán),請聯(lián)系刪除
  1. 檢測程序
    ps 探查 某個(gè)時(shí)間點(diǎn)的進(jìn)程
# ps 命令默認(rèn)只顯示 運(yùn)行在當(dāng)前終端中 屬于當(dāng)前用戶的進(jìn)程
# 分別顯示:
# 進(jìn)程ID    進(jìn)程運(yùn)行終端    占用cpu的時(shí)間
$ ps
  PID TTY          TIME CMD
23663 pts/108  00:00:00 ps
24953 pts/108  00:00:00 bash
## --forest 選項(xiàng) 用層級(jí)結(jié)構(gòu) 顯示父進(jìn)程與子進(jìn)程之間的關(guān)系
$ ps --forest
  PID TTY          TIME CMD
24953 pts/108  00:00:00 bash
16586 pts/108  00:00:00  \_ ps

ps -ef 查看系統(tǒng)中運(yùn)行的所有進(jìn)程

# 這里僅列出了部分 ps -ef 的結(jié)果
$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Feb25 ?        01:08:27 /usr/lib/systemd/systemd --switched
root         2     0  0 Feb25 ?        00:00:26 [kthreadd]
root         3     2  0 Feb25 ?        00:05:33 [ksoftirqd/0]
root         8     2  0 Feb25 ?        00:00:16 [migration/0]
root         9     2  0 Feb25 ?        00:00:00 [rcu_bh]
root        10     2  0 Feb25 ?        08:20:04 [rcu_sched]
...
g09      32637 32528  0 Oct16 ?        00:00:00 sshd: g09@pts/55
g09      32641 32637  0 Oct16 pts/55   00:00:00 -bash
m03      32693 31820  0 14:22 pts/47   00:00:03 ssh oldcomput1
t07      32711 27362  0 16:15 ?        00:00:00 sleep 180

top 實(shí)時(shí)監(jiān)測進(jìn)程

top命令運(yùn)行時(shí)的輸出:

top - 16:28:31 up 236 days,  2:11, 172 users,  load average: 2.03, 2.47, 1.98
Tasks: 1419 total,   1 running, 1416 sleeping,   1 stopped,   1 zombie
%Cpu(s):  3.0 us,  3.1 sy,  0.0 ni, 93.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 13151032+total,  2121588 free,  6989532 used, 12239920+buff/cache
KiB Swap: 16838652 total, 16838652 free,        0 used. 11942480+avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND       
15122 root      20   0 1514384 333688   2656 S   3.0  0.3   5175:34 python3       
16421 root      20   0  748860 539848   1188 S   2.6  0.4   1360:00 snmpd         
24109 r01       20   0  167584   3768   1684 R   1.6  0.0   0:00.12 top           
31662 root      20   0   44048    440     52 S   1.0  0.0   2825:50 rshim         
   10 root      20   0       0      0      0 S   0.3  0.0 500:05.51 rcu_sched     
   35 root      20   0       0      0      0 S   0.3  0.0  66:55.30 ksoftirqd/5   
 7254 t11       20   0   86796   3124   2300 S   0.3  0.0   0:01.21 sftp-server   
 7854 root      20   0       0      0      0 S   0.3  0.0   0:00.07 kworker/15:1  
 8190 root      20   0       0      0      0 S   0.3  0.0   0:00.16 kworker/13:1  
11344 m00       20   0  187528   5416   4036 S   0.3  0.0   0:05.54 ssh           
21884 m14       20   0  109996   6860   3332 S   0.3  0.0   0:00.09 ossutil64     
28030 t07       20   0 1000032 142260  20712 S   0.3  0.1   1:15.55 node          
32555 t11       20   0  185768   3024   1308 S   0.3  0.0   1:46.49 sshd          
    1 root      20   0  192796   4948   1772 S   0.0  0.0  68:27.29 systemd       
    2 root      20   0       0      0      0 S   0.0  0.0   0:26.30 kthreadd      
    3 root      20   0       0      0      0 S   0.0  0.0   5:33.96 ksoftirqd/0   
    8 root      rt   0       0      0      0 S   0.0  0.0   0:16.00 migration/0   
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh        
   11 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain 
   12 root      rt   0       0      0      0 S   0.0  0.0   0:56.01 watchdog/0   

kill 結(jié)束進(jìn)程
Linux進(jìn)程信號(hào)

信號(hào) 名稱 描述
1 HUP 掛起
2 INT 中斷
3 QUIT 結(jié)束運(yùn)行
9 KILL 無條件終止
11 SEGV 段錯(cuò)誤
15 TERM 盡可能終止
17 STOP 無條件停止運(yùn)行,但不zhongzhi
18 TSTP 停止或者暫停,但繼續(xù)在后臺(tái)運(yùn)行
19 CONT 在STOP或者TSTP之后恢復(fù)執(zhí)行
  1. 監(jiān)測磁盤空間

mount用于掛載存儲(chǔ)設(shè)備
umount 卸載設(shè)備

有時(shí)候,需要知道某臺(tái)設(shè)備上還有多少磁盤空間。
df命令,可以方便地查看所有已掛載磁盤的使用情況

# 文件設(shè)備位置  包含多少個(gè)塊(以1024字節(jié)為單位)  使用了多少的塊  還有多少的塊可用  已用空間所占百分比  設(shè)備掛載點(diǎn)
$ df
Filesystem                  1K-blocks         Used    Available Use% Mounted on
/dev/sda3                   558598464    189484628    340715500  36% /
devtmpfs                     65737936            0     65737936   0% /dev
tmpfs                        65755160         1280     65753880   1% /dev/shm
tmpfs                        65755160      4181288     61573872   7% /run
tmpfs                        65755160            0     65755160   0% /sys/fs/cgroup
/dev/sda1                     1003340       148228       786096  16% /boot
...
# -h 選項(xiàng) 以人類易讀的形式顯示磁盤空間
$ df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/sda3                 533G  181G  325G  36% /
devtmpfs                   63G     0   63G   0% /dev
tmpfs                      63G  1.3M   63G   1% /dev/shm
tmpfs                      63G  4.0G   59G   7% /run
tmpfs                      63G     0   63G   0% /sys/fs/cgroup
/dev/sda1                 980M  145M  768M  16% /boot
...

du命令,顯示某個(gè)特定目錄的磁盤使用情況。

# 顯示目錄下的 文件 目錄和子目錄的磁盤使用情況,
# 并以磁盤塊為單位表明每個(gè)文件或目錄占用了多大存儲(chǔ)空間。
$ du Work/test/
449189  Work/test/tmp_ko/6457859455858405939
449193  Work/test/tmp_ko
449203  Work/test/
## -c 選項(xiàng), 顯示所有已列出文件的總大小
$ du Work/test/ -c
449189  Work/test/tmp_ko/6457859455858405939
449193  Work/test/tmp_ko
449203  Work/test/
449203  total
## -h 選項(xiàng) 以人類易讀的格式輸出大小
$ du Work/test/ -h
439M    Work/test/tmp_ko/6457859455858405939
439M    Work/test/tmp_ko
439M    Work/test/
# -s  選項(xiàng)  顯示文件夾的總大小
$ du Work/test/ -s
449203  Work/test/
  1. 處理數(shù)據(jù)文件

sort 依據(jù)指定語言的排序規(guī)則 對文本文件中的數(shù)據(jù)進(jìn)行排序。

## test file
$ cat file1
one
two
three
four
five
# 默認(rèn)按照首字母順序排序
$ sort file1
five
four
one
three
two
## test file
$ cat file2
1
2
100
45
3
10
145
75
# 默認(rèn)按照字符排序, 這顯然不是我們想要的結(jié)果
$ sort file2
1
10
100
145
2
3
45
75
## -n  選項(xiàng) 按照數(shù)值排序
$ sort file2 -n
1
2
3
10
45
75
100
145

一些例子

## 按照第三個(gè)字段,對 /etc/passwd 排序
# -t 選項(xiàng) 指定字段分隔符
# -k 選項(xiàng) 指定排序的字段
# -n 選項(xiàng) 表示對-k指定的字段 按照數(shù)值排序(默認(rèn)升序)
$ sort -t ':' -k3 -n /etc/passwd | head -n5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
## 查看Work文件夾下占用空間最大的幾個(gè)子文件夾
# du -h  顯示文件夾及其子文件夾的大小
# -r 選項(xiàng) 逆序排序
# -h 選項(xiàng) 按照易讀數(shù)值顯示(如 1k 2G)
$ du -h Work/ | sort -rh | head
736G    Work/
325G    Work/MbPL202206261
272G    Work/MbPL202205150
131G    Work/MbPL202206261/2.1_quality_control/2.1.3_Contaminate_RM
131G    Work/MbPL202206261/2.1_quality_control
89G Work/MbPL202205150/2.1_quality_control/2.1.3_Contaminate_RM
89G Work/MbPL202205150/2.1_quality_control
77G Work/MbPL202206261/1_rawdata
75G Work/MbPL202206261/2.6_gene_abundance
63G Work/MbPL202205798

grep 數(shù)據(jù)搜索
grep命令 會(huì)在輸入或指定文件中 逐行 搜索匹配 指定模式 的文本。輸出 包含了匹配模式的行。

## 在file1文件中查找 three | thr | t
$ grep three file1
three
$ grep thr file1
three
$ grep t file1
two
three
## 篩選不包含 t 的行
# -v 選項(xiàng) 反向搜索
$ grep -v t file1
one
four
five

# -n  顯示匹配到的行的行號(hào)
## 1,4,5 行沒有匹配到 t
$ grep -v t file1 -n
1:one
4:four
5:five
## 2,3行匹配到了  t
$ grep -n t file1
2:two
3:three
# -c  選項(xiàng) count   顯示匹配到了多少行
## 有2行匹配到了 t
$ grep -c t file1
2
## 有3行沒有匹配到 t
$ grep -c -v t file1
3

# -e  選項(xiàng) 可以指定多個(gè)匹配模式  (相當(dāng)于 or)
## 輸出 包含字符串 t 或者 包含字符串 f 的所有行
$ grep -e t -e f file1
two
three
four
five

grep 結(jié)合 正則表達(dá)式

$ grep [tf] file1
two
three
four
five

gzip 數(shù)據(jù)壓縮
gzip是linux中最流行的壓縮工具
gzip包是GNU項(xiàng)目的產(chǎn)物

  • gzip 用于文件壓縮 , 文件擴(kuò)展名 .gz
  • gunzip gz文件解壓
  • gzcat 查看 gz文件 (zcat也可以)
$ gzip file1
$ ll file1*
-rw-r--r-- 1 r01 research 50 Oct 20 09:27 file1.gz
## 這里沒有安裝 gzcat
$ gzcat file1.gz 
bash: gzcat: command not found...
Similar command is: 'zcat'
## zcat 直接查看壓縮文件
[r01@comput1 ~]$ zcat file1.gz 
one
two
three
four
five
## gunzip  解壓縮
$ gunzip file1.gz 
$ ll file1*
-rw-r--r-- 1 r01 research 24 Oct 20 09:27 file1

tar 數(shù)據(jù)歸檔
雖然 zip 命令能夠很好地將數(shù)據(jù)壓縮并歸檔為單個(gè)文件,但它并不是Unix和Linux中的標(biāo)準(zhǔn)歸檔工具。目前,Unix和Linux中最流行的歸檔工具是 tar命令。

# 常見用法
## 創(chuàng)建一個(gè) test.tar  的歸檔文件,包含目錄 New_Dir/ 和 Docu/ 的內(nèi)容
$ tar -cvf test.tar New_Dir/ Docu/
New_Dir/
New_Dir/SubDir/
New_Dir/SubDir/UnderDir/
Docu/
Docu/test_one
Docu/test_two
$ ll test.tar 
-rw-r--r-- 1 r01 research 10240 Oct 20 10:49 test.tar
## 列出(但不提取)tar文件test.tar的內(nèi)容
$ tar -tf test.tar 
New_Dir/
New_Dir/SubDir/
New_Dir/SubDir/UnderDir/
Docu/
Docu/test_one
Docu/test_two
# 提取  test.tar 文件的內(nèi)容
$ tar -xvf test.tar 
New_Dir/
New_Dir/SubDir/
New_Dir/SubDir/UnderDir/
Docu/
Docu/test_one
Docu/test_two

tar -zxvf file.tgz 用來提取 以.tgz結(jié)尾的壓縮文件。這是經(jīng)gzip壓縮過的tar文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容