Linux 命令行与 shell 脚本编程大全 4 更多的 bash shell 命令

了解一些 shell 的管理命令

更多精彩

4.1 监测程序

  1. Linux 系统管理员面临的最复杂任务之一就是 跟踪运行在系统中的程序

4.1.1 ps 命令探查进程

  1. 当程序运行在 Linux 中时,被称为 进程( Process )
  2. ps 命令可以输出运行在系统上的所有程序的进程信息
  3. 默认情况下,ps 命令只会显示当前控制台下,当前用户运行的所有进程,如下图
    • zsh shell 就是运行在当前系统的一个程序
    • PID 是进程 ID( Process ID )
    • TTY 是终端代号
    • TIME 是进程已经使用的 CPU 时间
    • CMD 是进程名称

4.1.1.1 ps 命令支持的三种参数风格

  1. Unix 风格,在参数前加 单破折号
    • 一般使用这个风格就可以了
  2. BSD 风格,参数前 没有破折号
  3. GNU 风格,在参数前加 双破折号

4.1.1.2 ps 命令的参数使用

  1. ps 命令光类型就有三种,每种类型拥有的参数都很多,所以要记住 ps 命令的所有参数是完全没必要的
  2. 只需要记住常用场景下的几个固定组合即可

4.1.1.3 ps -ef 查看指定名称的进程完整信息

  1. 使用 ps -ef | grep processName 就可以看到指定名称的进程完整信息,如下图
    • 通过该命令查看到了 activemq 的进程信息
    • -e 指令显示所有运行在系统上的继承
    • -f 指令对输出内容进行扩展,显示更完整的信息
    • | grep 则是通过管道对所有进程进行过滤,只显示和 activemq 有关的信息

4.1.2 top 命令实时监测进程

  1. top 命令可以实时的显示进程信息,如下图
    • 在终端输入 top 后,会进入到如下界面,整个界面的各种参数会一直变化,表示在实时监测系统进程
    • q 或者 Ctrl+C 即可退出
  2. 上图是 macOS 中显示的界面,下图是 CentOS 中显示的界面

4.1.3 kill 命令结束进程

4.1.3.1 Linux 中进程通信方式

  1. 在 Linux 中进程之间通过信号实现通信
  2. 进程的信号是预定义好的消息,进程能识别这个信号并进行相应的操作判断:忽略或反馈
  3. 进程如何处理信号由开发人员通过编程决定
  4. 大多数编写完善的程序都能接收和处理标准的 Unix 进程信号,Linux 沿用了 Unix 进行进程间通信的方式
  5. Linux 进程信号如下图

4.1.3.2 kill 命令的使用

  1. kill 命令可以通过进程 ID 给进程发信号
  2. 默认情况下,会向指定的进程发送一个 TERM 信号,但如果进程处于无响应状态,则不会终止
  3. 而且只能对当前用户拥有权限的进程发起信号,否则会抛出 Operation not premitted 的信息
  4. 日常使用中,最常用的场景是先通过 ps 命令获取对应进程的 PID ,然后再使用 kill 命令杀掉进程,如下图
    • 由于杀掉进程后不会有任何输出,所以还需要使用 ps 命令再查一遍,才能知道结果
    • -9 就表示无条件终止进程

4.1.3.3 killall 命令的使用

  1. kill 命令的缺陷在于只能通过 PID 来对进程发信号
  2. killall 命令则可以直接通过进程名称给进程发信号,还支持通配符
  3. 但非常容易误伤,不推荐使用

4.2 监测磁盘空间

4.2.1 挂载存储媒体

  1. 挂载( Mounting ) 是指在使用新的存储媒体之前,需要将其放到虚拟目录中

4.2.1.1 mount 命令实现挂载媒体

  1. mount 命令用于挂载媒体
  2. 默认情况下,mount 命令会输出当前系统上挂载的设备列表,如下图
  3. 只有通过 root 用户登录,或使用 sudo 命令作为前缀,才能手动在虚拟目录中挂载设备
  4. 挂载设备的完整命令是 mount -t type device directory
    • type 指磁盘的文件系统类型
    • device 指存储设备的位置
    • directory 指挂载点在虚拟目录中的位置

4.2.1.2 umount 命令实现卸载媒体

  1. 在 Linux 中移除一个可移动设备的方式叫 卸载
  2. umount [ directory | device ] 命令可用于移除一个目录或设备
  3. 但是如果有任何程序正在使用设备上的文件,就无法完成卸载

4.2.2 df 命令查看磁盘空间

  1. 使用 df 命令可以查看系统中所有已挂载磁盘的使用情况,如下图
    • 只显示有数据的已挂载磁盘

4.2.2.1 -h 参数优化磁盘空间显示效果

  1. df 命令默认使用字节来显示磁盘的空间大小
  2. 使用 df -h 可以将空间大小的单位上升到 M ,如果数值足够大,也会自动上升到 G ,如下图

4.2.3 du 命令显示指定目录使用情况

  1. du 命令可以显示指定目录的磁盘使用情况
  2. 默认情况下会 显示当前目录下,所有的文件、目录和子目录的磁盘使用情况 ,如下图
    • 尽量不要在层级太高的目录使用,否则就会输出一堆数据
    • 最前面的数值默认显示的是目录或文件占用的磁盘块数

4.2.3.1 -h 指令优化数值显示效果

  1. du -h 可以将文件或目录占用的空间大小用 K 、M 或 G 代替,如下图

4.2.3.2 -s 指令统计当前目录的总大小

  1. du -sh 可以统计当前目录的总大小,同时使用更易读的格式进行显示,如下图

4.3 处理数据文件

4.3.1 sort 命令排序数据

  1. sort 命令可以对数据进行排序
  2. 默认情况下,sort 命令会按照 默认语言的排序规则 对文件中的数据行进行排序,如下图
    • 默认语言的排序规则,一般指的是按照字符顺序进行排序

4.3.1.1 -n 指令实现按值排序

  1. sort -n 命令可以让 sort 命令识别文件中的数字,实现按数值排序,如下图

4.3.2 grep 命令搜索数据

  1. grep 命令会在指定的文件中查找包含指定字符的数据行,如下图

4.3.2.1 -v 指令实现反向搜索

  1. grep -v 命令可以实现反向搜索,就是显示除了被匹配字符的其他数据行,如下图

4.3.2.2 -n 指令显示数据行的行号

  1. grep -n 命令可以实现在显示匹配数据行的同时,将对应的行号显示出来,如下图

4.3.2.3 -c 指令显示匹配数据行的总数

  1. grep -c 命令可以实现统计匹配数据行的总数,而不是显示每个数据行的数据,如下图

4.3.2.4 -e 指令指定多个匹配字符

  1. grep -e 命令可以实现同时匹配多个字符,如下图
  2. 如果在匹配多个字符的同时,还希望能显示行号,则需要按照如下方式编写
    • -n 指令不能直接跟在 -e 后面,如 -en ,这样就会抛出语法错误

4.3.2.5 grep 的一些扩展解释

  1. grep 命令支持最基本的 Unix 风格的正则表达式,用于扩充匹配模式
  2. egrep 命令是 grep 命令的衍生版本,支持 POSIX 扩展正则表达式
    • POSIX 扩展正则表达式拥有更多的可以用于指定匹配模式的字符
  3. fgrep 命令也是 grep 命令的衍生版本,支持将匹配到的数据放入到文件中

4.3.3 压缩数据

  1. 压缩文件指的就是 zip 文件 ,可以通过压缩将大型文件变成相对较小的文件
  2. 下图中列出 Linux 中的文件压缩工具

4.3.3.1 使用 gzip 对文件进行操作

  1. gzip fileName 可以对文件进行压缩,gunzip fileName 可以对压缩包进行解压,如下图
  2. gzcat fileName 可以查看压缩包的内容,如下图

4.3.4 tar 命令归档数据

  1. tar 命令是 Unix 和 Linux 上使用最广泛的归档工具
  2. tar 命令最开始用于将文件归档到磁带设备上,同时也能将输出内容写入到文件中,目前已经被用来做数据归档
  3. tar function [ options ] object1 object2 ...tar 命令的完整语法
    • function 表示命令将要做什么
    • options 表示在做什么的同时能够指定一些参数实现特定行为
  4. function 的可选参数如下
  5. options 的可选参数如下

4.3.4.1 举几个实用例子

  1. tar -cvf 命令实现在创建新的归档文件的同时显示归档过程,以及输出结果,如下图
  2. tar -tf 命令实现查看归档文件内容,但不解压文件,如下图
  3. tar -xvf 命令实现解压归档文件,并输出结果,如下图

4.4 小结

  1. ps 命令可以看到哪些应用在运行
  2. top 命令可以看到哪些应用在运行的同时占用了多少资源
  3. mount 命令可以实现挂载设备,但需要 root 权限
  4. umount 命令可以实现卸载设备,也需要 root 权限
  5. sort 命令可以对文件的内容进行排序
  6. grep 命令可以对文件的内容进行搜索
  7. tar 命令可以对文件进行解压缩
发布了418 篇原创文章 · 获赞 47 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/asing1elife/article/details/103104855