Loading

Learning Linux From Scratch(二)

本文介绍Linux系统管理命令, 演示如何通过命令行命令来探查Linux系统的内部信息,最后介绍一些可以用来操作系统上数据文件的命令。

监测程序

查看进程

Linux系统中使用的GUNps命令支持3中类型不同的命令行参数:

  • Unix风格的参数,前面加单破折号

  • BSD风格的参数,前面不加破折号

  • GUN风格的参数,前面加双破折号

常用的命令:

ps -l

  • UID:启动这些进程的用户。
  • PID:进程的进程ID。
  • PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
  • C:进程生命周期中的CPU利用率。
  • STIME:进程启动时的系统时间。
  • TTY:进程启动时的终端设备
  • TIME:运行进程需要的累计CPU时间
  • CMD:启动的程序名称
  • F:内核分配给进程的系统标记。
  • S:进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵化,进程已结束但父进程已不存在;T代表停止)。
  • PRI:进程的优先级(越大的数字代表越低的优先级)。
  • NI:谦让度值用来参与决定优先级。
  • ADDR:进程的内存地址。
  • SZ:假如进程被换出,所需交换空间的大致大小。
  • WCHAN:进程休眠的内核函数的地址。

ps --forest: 这种格式让跟踪子进程和父进程变得十分容易。

实时监测进程

ps命令虽然在收集运行在系统上的进程信息时非常有用,但也有不足之处:它只能显示 某个特定时间点的信息,而top命令可以实时显示.

​ 输出的第一部分显示的是系统的概况:第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。第二行显示了进程概要信息——top命令的输出中将进程叫作任务(task):有多少进程处在 运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。下一行显示了CPU的概要信息。top根据进程的属主(用户还是系统)和进程的状态(运行、 空闲还是等待)将CPU利用率分成几类输出。紧跟其后的两行说明了系统内存的状态。第一行说的是系统的物理内存:总共有多少内存, 当前用了多少,还有多少空闲。后一行说的是同样的信息,不过是针对系统交换空间(如果分配了的话)的状态而言的。

​ 最后一部分显示了当前运行中的进程的详细列表,有些列跟ps命令的输出类似。

默认情况下,top命令在启动时会按照%CPU值对进程排序。用这个工具就能经常找出占用系统大部分资源的罪魁祸首。当然 了,一旦找到,下一步就是结束这些进程。

结束进程

​ 在Linux中,进程之间通过信号来通信。进程的信号就是预定义好的一个消息,进程能识别 它并决定忽略还是作出反应。

  • kill命令

    ​ kill命令可通过进程ID(PID)给进程发信号。默认情况下,kill命令会向命令行中列出的
    全部PID发送一个TERM信号.要发送进程信号,你必须是进程的属主或登录为root用户。若无效需要强制终止,可加参数,-s参数支持指定其他信号(用信号名或信号值)。例如:kill -s HUP 3940

  • killall命令

    ​ killall命令非常强大,它支持通过进程名而不是PID来结束进程。killall命令也支持通配符,这在系统因负载过大而变得很慢时很有用。例如:killall python*

监测磁盘空间

主要命令有四个:挂载和卸载存储媒体mount、umount,查看所有磁盘使用情况df,查看具体目录磁盘使用情况du。

挂载存储媒体

​ Linux文件系统将所有的磁盘都并入一个虚拟目录下。在使用新的存储媒体之前,需要把它放到虚拟目录下。这项工作称为挂载(mounting)

mount命令

mount命令提供如下四部分信息:

  • 媒体的设备文件名

  • 媒体挂载到虚拟目录的挂载点

  • 文件系统类型

  • 已挂载媒体的访问状态

    要手动在虚拟目录中挂载设备,需要以root用户身份登录,或是以root用户身份运行sudo命令。

    mount -t type device directory

    ​ 后面两个参数定义了该存储设备的设备文件的位置以及挂载点在虚拟目录中的位置。比如说,手动将U盘/dev/sdb1挂载到/media/disk,可用下面的命令:

    mount -t vfat /dev/sdb1 /media/disk

umount命令

umount [directory | device]

当提示设备繁忙,无法卸载设备时,通常是有进程还在访问该设备或使用该设备上的文件。 这时可用lsof(list open files)命令获得使用它的进程信息:

使用df命令

df命令可以让你很方便地查看所有已挂载磁盘的使用情况。

使用du命令

du命令可以显示某个特定目录(默认情况下是当前目录)的 磁盘使用情况。这一方法可用来快速判断系统上某个目录下是不是有超大文件。

处理数据文件

排序数据

sort命令后面可以接很多参数,介绍几个常用的:

-nr: 按数字的值反序排序

例: 看到目录下的哪些文件占用空间最多

du -sh * | sort -nr

-k 和 -t: 对按字段分隔的数据进行排序时非常有用,例如/etc/passwd文件。可以用-t 参数来指定字段分隔符,然后用-k参数来指定排序的字段

例: 对前面提到的密码文件 /etc/passwd根据用户ID进行数值排序

sort -t ':' -k 3 -n /etc/passwd

搜索数据

grep [options] pattern [file]

​ 如果要进行反向搜索(输出不匹配该模式的行),可加-v参数:

​ 如果要显示匹配模式的行所在的行号,可加-n参数:

​ 如果只要知道有多少行含有匹配的模式,可用-c参数:

​ 如果要指定多个匹配模式,可用-e参数来指定每个模式:

​ 上例也可以用正则表达式代替:

压缩数据

gzip软件包是GNU项目的产物,意在编写一个能够替代原先Unix中compress工具的免费版 7 本。这个软件包含有下面的工具。

  • gzip:用来压缩文件。
  • gzcat:用来查看压缩过的文本文件的内容。
  • gunzip:用来解压文件。

不能对目录进行压缩,使用时只需要指定要进行压缩的文件名称即可,而不必写出压缩后的文件的新的名称,因为gzip会自动的保留原来要进行压缩的文件的文件名,并在其后添加.gz。gzip压缩解压后默认会删除原来的文件!

归档数据

归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。

tar function [options] object1 object2 ...

​ 我们发现,不管是gzip还是bzip2,都不能对目录进行压缩,只能对单个文件进行压缩,如果要对一个目录下所有文件进行压缩,会生成很多压缩文件,这样会使得压缩后的文件杂乱!这是,我们就需要采用归档压缩,先将文件归档,再进行压缩!

常用命令

tar -cvf test.tar test/ test2/: 创建了名为test.tar的归档文件,含有test和test2目录内容

tar -zcvf xxx.tar.gz aaa.txt bbb.txt ccc.txt: 把aaa.txt bbb.txt ccc.txt打包压缩为一个名叫xxx.tar.gz 压缩包

tar -xvf xxx.tar.gz -C /usr: -C代表解压的位置 把xxx.tar.gz解压缩到根目录下的usr目录

参考资料:

《Linux命令行与shell脚本编程大全第3版》

posted @ 2021-03-06 16:32  mamba_coder  阅读(57)  评论(0)    收藏  举报