Linux命令行–更多bash shell命令(转)

4.1.1 探查程序

  • ps 命令
    • 默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户进程的进程
      • 显示的当前进程的项目
        • 进程号
        • 运行在哪个终端(tty)
        • 进程占用的CPU时间
      • Linux系统支持的GNU ps命令支持3个不同的命令行参数
        • Unix风格的参数,前面加单破折线
          • 常用的参数选项
            • -ef:查看系统上的所有运行的所有进程
              • -e:显示所有进程
              • -f:显示完整格式的输出
              • 显示的列表项目
                • UID:启动这些进程的用户
                • PID:进程的进程号
                • PPID:父进程的进程号(如果该进程是由另一个进程启动)
                • C:进程生命周期的CPU利用率
                • STIME:进程启动时的系统时间
                • TTY:进程启动时的终端设备
                • TIME:运行进程所需的累积CPU时间
                • CMD:启动进程的名称
            • -l:显示长列表
              • 列出的列表项目
                • F:内核分配该进程的系统标识
                • S:进程状态
                  • 0表示正在运行
                  • S表示正在休眠
                  • R:表示可运行,正等待运行
                  • Z:代表僵化,进程已结束但是父进程已经不存在
                  • T:代表停止
                • PRI:进程的优先级
                  • 越大的数字代表优先级越低
                • NI:谦让度(nice)值用来参与决定优先级
                • ADDR:进程的内存地址
                • SZ:加入进程被唤醒,所需交换空间的大致大小
                • WCHAN:进程休眠的内核函数的地址
            • -H:能把输出的进程组织成一个层级的格式,简单地说就是树状,方便哪些进程启动了哪些进程
              • 常用的参数组合:-efH
        • BSD风格的参数,前面不加破折线
          • BSD:伯克利软件发行版,加州大学伯克利分析按开发的一个Unix版本
          • 使用BSD参数的时候,PS命令会自动改变输出以模仿BSD格式
          • 参数选项
            • -l:采用长模式
              • VSZ:进程在内存中的大小,一千字节(KB)为单位
              • RSS:进程在未还换出时占用的物理内存
              • STAT:当前进程的状态的双字符状态吗
                • 双字符码能比Unix风格的单字节符状态码更清楚的表示进程的当前状态
                • 第一个字符采用了和Unix风格S系列的输出相同的值,说明进程是在休眠、运行还是等待
                • 第二个参数进一步说明进程的状态
                  • <:该进程运行在高优先级上
                  • N:该进程运行在低优先级上
                  • L:该进程有页面锁定在内存中
                  • S:该进程是个控制进程
                  • T:该进程是多线程进程
                  • +:该进程运行在前端
        • GNU风格的长参数,前面加双破折线
          • 常用的全字符参数
            • –forest:显示进程的层级信息,并用ACSII字符绘出可爱的图表
              • 这种格式使能跟踪子进程 和父进程变得十分容易

4.1.2 实时监测进程

  • top命令
    • 实时显示进程信息
    • 输出信息分析
      • 第一部分:显示了当前系统的概况
        • 第一行:显示了当前时间、系统的运行时间、登陆的用户数以及系统的平均负载
          • 平均负载有3个值,值越大说明系统的负载越高
            • 最近1分钟的平均负载
            • 最近5分钟的平均负载
            • 最近15分钟的平均负载
        • 第二行:显示了概要的进程信息–top命令的输出中进程的叫做任务:多少金城出在运行、休眠、停止或是僵化装态
        • 下一行显示CPU信息
          • top根据进程的属主和进程的状态将CPU利用率分成几类输出
        • 紧跟后面的两行说明系统内存的状态
          • 前行:系统的物理内存
            • 总共用了多少内存
            • 当前用了多少
            • 还用多少空闲
        • 后一行说的同样的信息,这是针对系统交换空间(如果分配了的话)的状态来说的
      • 最后一部分:显示了当前运行中的进程的详细列表–有的根ps命令输出类似
        • PID:进程的进程号
        • USER:进程属主的名字
        • PR:进程的优先级
        • NI:进程的谦让度值
        • VIRT:进程的占用的虚拟内存总量
        • RES:进程占用的物理内存总量
        • SHR:进程和其他进程的共享内存总量
        • S:进程的状态
        • %CPU:进程使用的CPU时间比例
        • %MEN:进程使用的可用内存的比例
        • TIME+:子进程启动到目前为止的CPU时间总量
        • COMMAND:进程命令行名称,即启动的程序名
      • 默认情况top命令会按照%CPU值来排序,也可以用参数来改变排序的方式
        • 通top命令很容易找到占用系统大部分资源的进程
      • 参数
 
1
2
3
4
5
6
7
8
参数  说明
-<span class="ruby">s time     设置屏幕刷新的延时,单位为秒,默认值<span class="hljs-number">5</span>秒
</span>-<span class="ruby">d count    设置屏幕刷新的次数,刷新显示完count次后退出
</span>-<span class="ruby">q  如果经过nice授权,使用-q可以使top运行的更快一些
</span>-<span class="ruby">u  用显示<span class="hljs-constant">User</span> <span class="hljs-constant">ID</span>代替username,提高命令运行速度
</span>-<span class="ruby">h  当系统由多个<span class="hljs-constant">CPU</span>时,个别<span class="hljs-constant">CPU</span>的状态信息被隐藏,只显示平均状态值
</span>-<span class="ruby">n number   设置每一屏幕显示的进程数目,number值超过进程最大数目,则设置无效
</span>-<span class="ruby">f filename 输出重定向到给定的文件名,默认为<span class="hljs-number">16</span>个进程信息 </span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4.1.3 结束进程

  • 进程信号
    • HUP:挂起
    • INT:中断
    • QUIT:结束运行
    • KELL:去条件终止
    • SEGV:段错误
    • TERM:尽可能终止
    • STOP:无条件停止运行,但不终止
    • TSTP:停止或暂停,但继续在后台运行
    • CONT:在stop和tstp之后恢复执行
  • kill命令
    • kill命令通过pid(进程号)给进程发送信息,而不能用命令名
    • 默认情况下,kill命令回想命令行中列出的全部pid发送一个TERM信号
      • TERM信号告诉进程可能的话停止运行,如果程序跑飞,则信号会被忽略,若要强制执行,则加上-s参数
    • 必须是进程的属主或者登录为root用户
    • 用ps或者top命令查看kill命令是否已经起作用了
  • killall命令
    • 支持进程名结束进程而不是进程号(pid)
    • 支持通配符,在这个系统因为负载过大变得很慢的时候很方便:$killall http*
    • 注意:root用户身份登录的时候使用killall要避免无用通配符,可能破坏系统文件

4.2 监测磁盘空间

4.2.1 挂载存储媒介

  • mount命令
    • 默认情况下mount命令会输出当前系统上挂载的设备列表
    • mount命令提供四部分信息
      • 媒体的设备文件名
      • 媒体挂载到虚拟目录的挂载点
      • 文件系统的类型
      • 已挂载媒体的访问状态
    • 手动在虚拟目录中挂载设备需要root权限
      • 基本命令:mount -t type device directory
        • type:磁盘被格式化的文件系统的类型
          • Linux可以识别非常多的文件系统类型,如果是和window PC共用这些存储设备,则通常会是以下文件类型
            • vfat:windows长文件系统
              • 大多是U盘和软盘会被格式为vfat文件系统
            • nfts:widows 7…中使用的高级文件系统
            • ISO9660:标准CD-ROM文件系统
              • 数据CD必须使用ISO9660文件系统
          • 后面参数定义了设备文件的位置以及挂载点在虚拟目录中的位置
    • 媒体设备被挂在到虚拟目录后,root用户就有了对该设备的所有访问权限,而其他用户的访问权限被限制,可以通过目录权限指定用户对设备的访问权限
    • 参数
      • -o:允许在挂载文件系统时添加一些以逗号分隔的额外选项
        • 常用选项
          • ro:按只读的挂载
          • rw:按读写的运行挂载
          • user:允许普通用户挂载文件系统
          • check=none:挂载文件系统时不进行文件校验
          • loop:挂载一个文件
            • -o + loop命令完成将一个iso文件直接挂载到Linux虚拟目录中,而不先将它烧到CD里
  • umount命令
    • 从Linux上移除一个可移动的设备时不能直接从系统上移除,应先卸载
    • umount:支持通过设备文件和设备挂载点来指定要卸载的设备,如果有任何程序正在使用设备上的文件,系统不会允许你卸载
    • 格式:umount [ direction | device ]

4.2.2 使用df命令

  • df命令
    • 查看所有已挂载磁盘的使用情况,显示每个有数据的已挂载文件系统
    • 命令输出
      • 设备的设备文件位置
      • 能容纳多少个1024字节大小的块
      • 已用了多少个1024字节大小的块
      • 还有多少个1024字节大小的可用块
      • 已用空间所占用的比例
      • 设备挂载到了哪些挂在电上
    • 常用参数
      • -h:输出中的磁盘空间按人类可读的形式显示

4.2.3 使用du命令

  • du命令
    • 显示某个特定目录的磁盘使用情况
      • 可以用来判断目录是否有超大文件的快速方法
    • 默认情况下,du命令会显示当前目录下的所有的文件、目录和子目录的磁盘情况,以磁盘块为单位来显示每个文件或目录占用了多大的存储
      • 不加参数的默认情况下du的作用不大
    • 常用参数
      • -c:显示所有已列出文件总大小
      • -h:按人类可读的格式输出大小,即用K/M/G
      • -s:显示每个输出参数的总计

4.3 处理数据文件

4.3.1 排列数据

sort命令

4.3 处理数据文件

4.3.1 排列数据

sort命令

  • 用法:sort + filename
  • 作用:用来对数据进行排序
  • 默认情况
    • sort命令按你为这个会话指定的默认语言的排序规则来对文本文件中的数据进行排序
    • sort命令会把数字当做字符而执行标准的字符排序
  • 常用参数
    • -n:把数字识别成数字而不是字符,并且将它们按值排序
    • -M:按月排序
    • -k:指定字段分隔符
    • -t:指定排序的字段
    • -r:结果按降序排列
  • 常用组合参数
    • -k与-t组合使用:按字段分隔的数据进行排序
    • -n与-r:按照数值的降序排序
  • 例如:
 
1
2
3
4
5
//对/etc/passwd文件以:为分隔符,以第三个字段为排序依据
$ sort -t<span class="hljs-string">':'</span> -k <span class="hljs-number">3</span> -n /etc/passwd
root:x:<span class="hljs-number">0</span>:<span class="hljs-keyword">...</span>
bin:x:<span class="hljs-number">1</span>:<span class="hljs-keyword">...</span>
daemon:x:<span class="hljs-number">2.</span>..
  • 1
  • 2
  • 3
  • 4
  • 5

4.3.2 搜索数据

grep命令

  • 用法:grep [option] pattern [file]
  • 作用:该命令会到输入中或你指定的文件中查找包含匹配指定模式的字符的行,其输出结果就是包含了匹配指定的行
  • 常用参数
    • -v:反向搜索(输出不匹配该模式的行)
    • -n:显示匹配模式的行所在的行号
    • -c:只显示多少行含有匹配的模式
    • -e:指定多于一个匹配模式,得到满足两个模式中任意一个的所有结果
  • 默认情况
    • grep命令用基本的Unix风格正则表达式来匹配模式
    • Unix风格的正则表达式采用特殊字符来定义怎样查找匹配的模式

egrep命令

  • 该命令是grep命令的一个衍生,支持POSIX扩展正则表达式,POSIX扩展正则表达式支持更多的可以用来指定匹配模式的字符

fgrep命令

  • 是另外一个版本,支持将匹配模式指定为换行符分隔的一列固定长度的字符串,这样就可以把一列字符串放到一个文件中,然后在fgrep命令中用那列字符串来在一个大型文件中搜索字符串了

4.3.3 压缩数据

1. bzip2工具

  • bzip2工具是个正在普及相对来说比较新的压缩包,在压缩大型二进制文件领域尤其流行
  • bzip2软件包含以下几个工具
    • bzip2:用来压缩文件
    • bzcat:用来显示压缩的文本文件的内容
    • bunzip2:用来解压压缩后的.bz2文件
    • bzip2recover:用来尝试恢复损毁的压缩文件
    • 默认情况:bzip2命令尝试压缩原始文件,并用压缩后的文件(同样的文件名后加.bz2扩张名)替换它
  • 如果压缩了文件,就无法用cat、more或者less命令开查看文件内容了,这时这时可以用bzcat命令

2. gzip工具

Linux最流行的压缩工具是gzip工具。gzip包是GNU项目发起的视图替代原来Unix的compress工具的压缩工具

  • 这个软件包含有下面的工具
    • gzip:用来压缩文件
    • gzcat:用来查看压缩过的文本文件的内容
    • gunzip:用来解压文件
  • 用法:工具名 + 文件
  • 可以在命令行指定几个文件名甚至用通配符来一次压缩几个文件

3. zip工具

zip工具和流行的Phil Katz为MS-DOS和Windows开发的PKZIP软件兼容的

  • zip工具包含5个
    • zip:创建一个压缩文件,包含指定的文件和目录
    • zipcloak:创建一个加密的压缩文件,包含指定的文件和目录
    • zipnote:从zip文件中提取批注
    • zipsplit:将一个现有zip文件分割成多个更小的固定大小的文件
    • unzip:从压缩过的文件中提取文件和目录
  • 参数:在命令行输入zip,就可以查看zip的所有参数
  • zip工具的强大之处在于,他能够将整个目录下的文件都压缩进单个文件,这让他成为归档整个目录结构的理想工具
  • 注意:当使用zip命令的递归特性时,在压缩过的zip文件中依然存储在相同的目录结构中。在压缩够的zip文件中子目录中的文件依然在同样的子目录下,所以在解压时要分外的小心,unzip命令会在新的位置重新构建整个目录结构。在当前目录下有很多文件和子目录时,这个会有点让人头大

4.3.4 归档数据

Unix和Linux最强大的工具是tar命令

  • 格式:tar function [options] object1 object2 …
  • 常用参数
    • -A:想一个已有tar归档文件追加到另一个已有tar归档文件
    • -c:创建一个新的tar归档文件
    • -d:检查归档文件和文件系统的不同之处,或从已有tar归档文件中删除
    • -r:追加文件到已有tar归档文件末尾
    • -t:列出已有tar归档文件的内容
    • -u:将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中
    • -x:从已有的tar归档文件中提取文件
  • 能和tar命令一起使用的最常用的选项
    • -C dir :切换到指定的目录
    • -f file:输出结果到文件或设备file
    • -j:将输出重定向给bzip2命里来压缩内容
    • -p:保留所有文件权限
    • -v:在处理文件时显示文件
    • -z:将输出重定向给gzip命令来压缩内容
  • 常用的选项与参数组合
    • -cvf:创建一个归档文件
    • -tf:列出tar文件的内容,但不解压文件
    • -xvf:从tar文件中提取内容,如果tar文件时从一个目录结构创建的,那整个目录结构都会在当前目录中重新创建
  • .tgz结尾的文件解压命令:tar -zxvf filename.tgz
上一篇:使用Xcode8的Instruments检测解决iOS内存泄露(leak)


下一篇:使用maxwell实时同步mysql数据到kafka