Linux学习(5)-磁盘管理

一、监视程序

1. 探查进程-ps命令

进程(process),我们可以使用ps命令来检测这些进程。默认情况下,ps不会提供太多的信息:

➜  ~ ps
  PID TTY           TIME CMD
 7643 ttys000    0:01.32 -zsh
  • ps命令,默认显示运行在当前控制台的进程,也就是-zsh shell
  • 上例显示了进程的ID(process ID, PID),运作的终端TTY,已经进程已用的CPU时间;

ps命令支持三种不同类型的命令行参数,分别为Unix风格,BSD风格,GNU风格;

详细可以书籍《Linux命令行与shell脚本编程大全》的P65-P70。

2. 实时监测-top命令

ps命令的缺陷就是只能某个特定时间点的信息,如果想观察频繁进换的内存进程趋势,ps是不方便的。

我们可以使用top命令来进行实时显示,包括进程ID、内存占用率、CPU占用率等。

top - 22:45:42 up 8 min,  0 users,  load average: 0.52, 0.58, 0.59
Tasks:   4 total,   1 running,   3 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  1.2 sy,  0.0 ni, 97.7 id,  0.0 wa,  0.2 hi,  0.0 si,  0.0 st
KiB Mem : 16595584 total, 10300344 free,  6065888 used,   229352 buff/cache
KiB Swap: 42742524 total, 42742524 free,        0 used. 10395964 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0    8940    316    272 S   0.0  0.0   0:00.06 init
    9 root      20   0    8940    224    180 S   0.0  0.0   0:00.01 init
   10 lyons     20   0   16780   3436   3340 S   0.0  0.0   0:00.06 bash
   59 lyons     20   0   17624   2040   1508 R   0.0  0.0   0:00.01 top

进程详细信息:

  • PID:进程ID。
  • USER:进程所有者的用户名。
  • PR:从系统内核角度看的进程调度优先级。
  • NI:进程的谦让度值,值越低优先级越高。
    +VIRT:进程申请使用的虚拟内存量。
  • RES:进程使用的驻留内存(即未被swap out的内存)量。
  • SHR:进程使用的共享内存量。
  • S:进程状态。R=running,S=interruptible sleeping,D=uninterruptible sleeping,T=stopped,Z=zombie。
  • %CPU:进程在一个更新周期内占用的CPU时间比例。
  • %MEM:进程占用的物理内存比例。
  • TIME+:进程创建后至今占用的CPU时间长度。
  • COMMAND:运行进程使用的命令。

二、监测磁盘

1. 挂载

Linux文件将所有的磁盘都并入一个虚拟目录,这项工作称为挂载

(1)mount命令:

默认情况下,mount命令会输出当前系统上挂载的设备列表:

➜  ~ mount
/dev/disk1s5s1 on / (apfs, sealed, local, read-only, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk1s4 on /System/Volumes/VM (apfs, local, noexec, journaled, noatime, nobrowse)
/dev/disk1s2 on /System/Volumes/Preboot (apfs, local, journaled, nobrowse)
/dev/disk1s6 on /System/Volumes/Update (apfs, local, journaled, nobrowse)
/dev/disk1s1 on /System/Volumes/Data (apfs, local, journaled, nobrowse)
map auto_home on /System/Volumes/Data/home (autofs, automounted, nobrowse)

手动在虚拟目录上挂载设备,需要以root用户身份登录,或者以root用户身份运行sudo命令。手动挂载的基本命令为:

mount -t type device directory
  • -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。type对应磁盘被格式化的文件系统类型。通用的类型包括:vfatntfsiso9660。大多数U盘和软盘都会被格式化为vfat文件系统。手动将/dev/sdb1挂载到/media/disk
mount -t vfat /dev/sdb1 /media/disk

(2)umount命令

从Linux系统移出一个可移动的设备时,不能直接从系统上移出,而应该先卸载。卸载设备的命令使用umount,格式如下:

umount [-ahnrvV][-t <文件系统类型>][文件系统]

相关选项

  • -a :卸除/etc/mtab中记录的所有文件系统。
  • -h :显示帮助。
  • -n :卸除时不要将信息存入/etc/mtab文件中。
  • -r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
  • -t:<文件系统类型> 仅卸除选项中所指定的文件系统。
  • -v:执行时显示详细的信息。
  • -V :显示版本信息。
  • [文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。

umount命令支持通过设备文件或者挂载点来指定要卸载的设备。如果有任何程序正在使用,系统不允许卸载。

2. df命令

df 命令,用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。

前面讲过,与整个文件系统有关的数据,都保存在 Super block(超级块)中,而 df 命令主要读取的数据几乎都针对的是整个文件系统,所以df 命令主要是从各文件系统的 Super block 中读取数据。

df 命令的基本格式为:

df [选项] [目录或文件名]

相关选项

选项作用
-a显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统;
-m以 MB 为单位显示容量;
-k以 KB 为单位显示容量,默认以 KB 为单位;
-h使用人们习惯的 KB、MB 或 GB 等单位自行显示容量;
-T显示该分区的文件系统名称;
-i不用硬盘容量显示,而是以含有 inode 的数量来显示。

【例1】

[root@localhost ~]# df
Filesystem      1K-blocks      Used Available Use% Mounted on
/dev/hdc2         9920624   3823112   5585444  41% /
/dev/hdc3         4956316    141376   4559108   4% /home
/dev/hdc1          101086     11126     84741  12% /boot
tmpfs              371332         0    371332   0% /dev/shm

不使用任何选项的df命令,默认会将系统内所有的文件系统信息,以 KB 为单位显示出来。

  • Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
  • 1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;
  • Used:表示用掉的硬盘空间大小;
  • Available:表示剩余的硬盘空间大小;
  • Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;
  • Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。

【例 2】

[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
/dev/hdc3             4.8G  139M  4.4G   4% /home
/dev/hdc1              99M   11M   83M  12% /boot
tmpfs                 363M     0  363M   0% /dev/shm

使用了-h选项,因此文件系统的各种容量数据,会以人们习惯的单位(通常使用 GB 或 MB)显示出来。

Linux df用法详解:查看文件系统硬盘使用情况 (biancheng.net)

3. du命令

通过df命令可以发现哪块磁盘的存储空间快没了,但无法具体到特定的目录。使用du命令可以显示某个特定目录的磁盘使用情况。

du 命令的格式如下:

du [选项] [目录或文件名]

相关选项

  • -a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量;

  • -h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;

  • -s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量;

  • -c:显示所有列出文件的总的大小;

三、处理数据文件

1. 排序数据

默认情况下,sort命令按照会话指定的默认语言的排序规则对文本文件中的数据行排序。

➜  Desktop sort file.txt
1
10
2
3
4
4
8
➜  Desktop cat file.txt
1
10
3
4
2
8
4

sort命令默认会将数字当做字符来执行标准字符排序。要解决这个问题,要加上-n选项,告诉sort命令把数字识别成数字,而不是字符:

➜  Desktop sort -n file.txt
1
2
3
4
4
8
10

Linux系统的日志文件经常会在每行的起始位置有一个时间戳,用来表明事件什么时候发生。sort命令加上一个-M的参数,可以按照月排序。

sort还有其他的命令参数,详见书籍《Linux命令行与shell脚本编程大全》的P80。

2. 搜索数据

grep命令用于查找文件里符合条件的字符串。格式如下:

grep [options] pattern [file]

例如:

grep three file1

从文件file中查找匹配内容为three的文本,输出该文本对应的行。

相关选项

  • -v:反向搜索,输出不匹配该模式的行;
  • -n:显示匹配模式行所在的行号;
  • -c:输出有多少行含有匹配的模式;
  • -e:匹配多个模式;
grep -e t -e f file1
# 同时匹配字符t和f

grep还可以用基本的Unix风格正则表达式来匹配模式。比如:

grep [tf] file1

方括号表明grep应该搜索含有tf字符的匹配。

3. 压缩数据

Linux下最流行的压缩工具是gzip,该软件包包含下面工具:

  • gzip:用来压缩文件;

  • gzcat:用来查看压缩过的文本文件的内容;

  • gunzip:用来解压文件;

➜  ~ gzip file.txt
➜  ~ ls -l file*
-rw-r--r--  1 tangtang  staff  42  6 26 17:10 file.txt.gz
➜  ~ gzcat file.txt.gz
1
10
3
4
2
8
4
➜  ~ gunzip file*
➜  ~ ls -l file*
-rw-r--r--  1 tangtang  staff  15  6 26 17:10 file.txt

可以使用通配符来进行压缩和解压。

4. 归档数据

zip命令不是Unix和Linux中标准归档工具,目前使用最广泛的工具是tar命令。在使用tar命令的时候,tar命令本身用到的是归档功能,即文件没有真正进行压缩打包。格式如下:

tar function [options] object1 object2

相关选项

  • 独立参数,五选一:

    • -c :建立压缩档案
    • -x:解压
    • -t:查看内容
    • -r:向压缩归档文件末尾追加文件
    • -u:更新原压缩包中的文件
  • 可选参数:

    • -z:有gzip属性的
    • -j:有bz2属性的
    • -Z:有compress属性的
    • -v:显示所有过程
    • -O:将文件解开到标准输出
  • 必要参数:

    • -f: 最后一个参数,后面只能接档案名。

打包操作:

# 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -cf all.tar *.jpg

# 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
tar -rf all.tar *.gif

# 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -uf all.tar logo.gif

# 这条命令是列出all.tar包中所有文件,-t是列出文件的意思
tar -tf all.tar

# 这条命令是解出all.tar包中所有文件,-t是解开的意思
tar -xf all.tar

压缩操作:

# 将目录里所有jpg文件打包成tar.jpg
tar -cvf jpg.tar *.jpg 

# 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -czf jpg.tar.gz *.jpg 

# 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cjf jpg.tar.bz2 *.jpg

# 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
tar -cZf jpg.tar.Z *.jpg 

# rar格式的压缩,需要先下载rar for linux
rar a jpg.rar *.jpg 

# zip格式的压缩,需要先下载zip for linux
zip jpg.zip *.jpg 

解压操作:

# 解压 tar包
tar -xvf file.tar 

# 解压tar.gz
tar -xzvf file.tar.gz 

# 解压 tar.bz2
tar -xjvf file.tar.bz2 

# 解压tar.Z
tar -xZvf file.tar.Z 

# 解压rar
unrar e file.rar 

# 解压zip
unzip file.zip 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值