当前位置: 首页>数据库>正文

更多 bash shell 命令

  • 来自Linux命令行与shell脚本编程大全,如有侵权,请联系删除
  1. 检测程序
    ps 探查 某个时间点的进程
# ps 命令默认只显示 运行在当前终端中 属于当前用户的进程
# 分别显示:
# 进程ID    进程运行终端    占用cpu的时间
$ ps
  PID TTY          TIME CMD
23663 pts/108  00:00:00 ps
24953 pts/108  00:00:00 bash
## --forest 选项 用层级结构 显示父进程与子进程之间的关系
$ ps --forest
  PID TTY          TIME CMD
24953 pts/108  00:00:00 bash
16586 pts/108  00:00:00  \_ ps

ps -ef 查看系统中运行的所有进程

# 这里仅列出了部分 ps -ef 的结果
$ 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 实时监测进程

top命令运行时的输出:

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 结束进程
Linux进程信号

信号 名称 描述
1 HUP 挂起
2 INT 中断
3 QUIT 结束运行
9 KILL 无条件终止
11 SEGV 段错误
15 TERM 尽可能终止
17 STOP 无条件停止运行,但不zhongzhi
18 TSTP 停止或者暂停,但继续在后台运行
19 CONT 在STOP或者TSTP之后恢复执行
  1. 监测磁盘空间

mount用于挂载存储设备
umount 卸载设备

有时候,需要知道某台设备上还有多少磁盘空间。
df命令,可以方便地查看所有已挂载磁盘的使用情况

# 文件设备位置  包含多少个块(以1024字节为单位)  使用了多少的块  还有多少的块可用  已用空间所占百分比  设备挂载点
$ 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 选项 以人类易读的形式显示磁盘空间
$ 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命令,显示某个特定目录的磁盘使用情况。

# 显示目录下的 文件 目录和子目录的磁盘使用情况,
# 并以磁盘块为单位表明每个文件或目录占用了多大存储空间。
$ du Work/test/
449189  Work/test/tmp_ko/6457859455858405939
449193  Work/test/tmp_ko
449203  Work/test/
## -c 选项, 显示所有已列出文件的总大小
$ du Work/test/ -c
449189  Work/test/tmp_ko/6457859455858405939
449193  Work/test/tmp_ko
449203  Work/test/
449203  total
## -h 选项 以人类易读的格式输出大小
$ du Work/test/ -h
439M    Work/test/tmp_ko/6457859455858405939
439M    Work/test/tmp_ko
439M    Work/test/
# -s  选项  显示文件夹的总大小
$ du Work/test/ -s
449203  Work/test/
  1. 处理数据文件

sort 依据指定语言的排序规则 对文本文件中的数据进行排序。

## test file
$ cat file1
one
two
three
four
five
# 默认按照首字母顺序排序
$ sort file1
five
four
one
three
two
## test file
$ cat file2
1
2
100
45
3
10
145
75
# 默认按照字符排序, 这显然不是我们想要的结果
$ sort file2
1
10
100
145
2
3
45
75
## -n  选项 按照数值排序
$ sort file2 -n
1
2
3
10
45
75
100
145

一些例子

## 按照第三个字段,对 /etc/passwd 排序
# -t 选项 指定字段分隔符
# -k 选项 指定排序的字段
# -n 选项 表示对-k指定的字段 按照数值排序(默认升序)
$ 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文件夹下占用空间最大的几个子文件夹
# du -h  显示文件夹及其子文件夹的大小
# -r 选项 逆序排序
# -h 选项 按照易读数值显示(如 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 数据搜索
grep命令 会在输入或指定文件中 逐行 搜索匹配 指定模式 的文本。输出 包含了匹配模式的行。

## 在file1文件中查找 three | thr | t
$ grep three file1
three
$ grep thr file1
three
$ grep t file1
two
three
## 筛选不包含 t 的行
# -v 选项 反向搜索
$ grep -v t file1
one
four
five

# -n  显示匹配到的行的行号
## 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  选项 count   显示匹配到了多少行
## 有2行匹配到了 t
$ grep -c t file1
2
## 有3行没有匹配到 t
$ grep -c -v t file1
3

# -e  选项 可以指定多个匹配模式  (相当于 or)
## 输出 包含字符串 t 或者 包含字符串 f 的所有行
$ grep -e t -e f file1
two
three
four
five

grep 结合 正则表达式

$ grep [tf] file1
two
three
four
five

gzip 数据压缩
gzip是linux中最流行的压缩工具
gzip包是GNU项目的产物

  • gzip 用于文件压缩 , 文件扩展名 .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 数据归档
虽然 zip 命令能够很好地将数据压缩并归档为单个文件,但它并不是Unix和Linux中的标准归档工具。目前,Unix和Linux中最流行的归档工具是 tar命令。

# 常见用法
## 创建一个 test.tar  的归档文件,包含目录 New_Dir/ 和 Docu/ 的内容
$ 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的内容
$ tar -tf test.tar 
New_Dir/
New_Dir/SubDir/
New_Dir/SubDir/UnderDir/
Docu/
Docu/test_one
Docu/test_two
# 提取  test.tar 文件的内容
$ 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结尾的压缩文件。这是经gzip压缩过的tar文件。


https://www.xamrdz.com/database/6ab1997331.html

相关文章: