美文网首页
Linux基本应用-管道命令的使用

Linux基本应用-管道命令的使用

作者: FX喂你袋盐 | 来源:发表于2017-11-13 21:57 被阅读46次

    Linux基本应用-管道命令的使用

    [if !supportLists]Ø[endif]【课程目的】

    1.了解命令行中使用KaliLinux命令的特点

    2.掌握管道命令的使用

    3.结合Shell脚本熟悉管道的使用

    【实现场景】

    1. VMware

    Workstation虚拟机

    2. KaliLinux操作系统

    【课程原理】

    管道基础命令

    ps

    要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令(Process Status)就是最基本同时也是非常强大的进程查看命令.

    使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.

    ps为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;

    如果想对进程时间监控,应该用top工具。

    如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。

    使用示例:

    root@kali:~# ps aux|grep ./update_stock

    root20300.00.1128881600 pts/0S+06:380:00 grep ./update_stock

    ps aux输出格式:

    USER PID %CPU %MEM VSZ RSS TTY STAT STARTTIME COMMAND

    格式说明:

    USER:进程拥有者

    PID: pid

    %CPU:占用的CPU使用率

    %MEM:占用的记忆体使用率

    VSZ:占用的虚拟记忆体大小

    RSS:占用的记忆体大小

    TTY:终端的次要装置号码(minordevice number of tty)

    STAT:该行程的状态,linux的进程有5种状态:

    D不可中断uninterruptible sleep (usually IO)

    R运行runnable(on run queue)

    S中断sleeping

    T停止traced orstopped

    Z僵死a defunct

    (”zombie”) process

    注:其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).

    START:行程开始时间

    TIME:执行的时间

    COMMAND:所执行的指令

    [if !supportLists]2)[endif]Grep

    grep (global search

    regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

    Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

    格式:

    [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串'filename

    选项与参数:

    -a:将binary文件以text文件的方式搜寻数据

    -c:计算找到'搜寻字符串'的次数

    -i:忽略大小写的不同,所以大小写视为相同

    -n:顺便输出行号

    -v:反向选择,亦即显示出没有'搜寻字符串'内容的那一行!

    --color=auto:可以将找到的关键词部分加上颜色的显示喔!

    使用示例:

    root@kali:~#cat /etc/passwd | grep root

    root:x:0:0:root:/root:/bin/bash

    root@kali:~# ifconfig

    netstat

    Netstat命令用于显示各种网络相关信息,如网络连接,路由表,接口状态连接,多播成员等等。

    参数:

    -a (all)显示所有选项,默认不显示LISTEN相关

    -t (tcp)仅显示tcp相关选项

    -u (udp)仅显示udp相关选项

    -n拒绝显示别名,能显示数字的全部转化成数字。

    -l仅列出有在Listen (监听)的服務状态

    -p显示建立相关链接的程序名

    -r显示路由信息,路由表

    -e显示扩展信息,例如uid等

    -s按各个协议进行统计

    -c每隔一个固定时间,执行该netstat命令。

    awk

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

    awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk是AWK的GNU版本。

    awk其名称得自于它的创始人Alfred Aho、Peter Weinberger和Brian Kernighan姓氏的首个字母。实际上AWK的确拥有自己的语言:AWK程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

    格式:

    awk'{print $1}' {filenames}

    参数:

    RGC命令行参数个数

    ARGV命令行参数排列

    ENVIRON支持队列中系统环境变量的使用

    FILENAMEawk浏览的文件名

    FNR浏览文件的记录数

    FS设置输入域分隔符,等价于命令行-F选项

    NF浏览记录的域的个数

    NR已读的记录数

    OFS输出域分隔符

    ORS输出记录分隔符

    RS控制记录分隔符

    sort

    格式:

    sort -t '' -k1 fileNmae

    参数:

    -kn这里n为数字从1开始依次增加代表排序的位置

    [if !supportLists]6)[endif]dmesg

    kernel会将开机信息存储在ring

    buffer中。若是开机时来不及查看信息,开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

    格式:

    dmesg [-cn][-s <缓冲区大小>]

    参数:

    -c显示信息后,清除ring buffer中的内容。

    -s<缓冲区大小>预设置为8196,刚好等于ring

    buffer的大小。

    -n设置记录信息的层级。

    find

    查找文件

    find ./ -type f

    查找目录

    find ./ -type d

    查找名字为test的文件或目录

    find ./ -name test

    查找名字符合正则表达式的文件,注意前面的‘.*’(查找的文件带有目录)

    find ./ -regex .*so.*\.gz

    查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)

    find ./ -type d -print-exec ls {} \;

    查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认)

    find ./ -type d -ok ls {}\;

    查找目录并列出目录下的文件(将找到的目录添加到ls命令后一次执行,参数过长时会分多次执行)

    find ./ -type d -exec ls{} +

    查找文件名匹配*.c的文件

    find ./ -name \*.c

    打印test文件名后,打印test文件的内容

    find ./ -name test -print-exec cat {} \;

    不打印test文件名,只打印test文件的内容

    find ./ -name test -execcat {} \;

    查找文件更新日时在距现在时刻二天以内的文件

    find ./ -mtime -2

    查找文件更新日时在距现在时刻二天以上的文件

    find ./ -mtime +2

    查找文件更新日时在距现在时刻一天以上二天以内的文件

    find ./ -mtime 2

    查找文件更新日时在距现在时刻二分以内的文件

    find ./ -mmin -2

    查找文件更新日时在距现在时刻二分以上的文件

    find ./ -mmin +2

    查找文件更新日时在距现在时刻一分以上二分以内的文件

    find ./ -mmin 2

    查找文件更新时间比文件abc的内容更新时间新的文件

    find ./ -newer abc

    查找文件访问时间比文件abc的内容更新时间新的文件

    find ./ -anewer abc

    查找空文件或空目录

    find ./ -empty

    查找空文件并删除

    find ./ -empty -type f-print -delete

    查找权限为644的文件或目录(需完全符合)

    find ./ -perm 664

    查找用户/组权限为读写,其他用户权限为读(其他权限不限)的文件或目录

    find ./ -perm -664

    查找用户有写权限或者组用户有写权限的文件或目录

    find ./ -perm /220

    find ./ -perm /u+w,g+w

    find ./ -perm /u=w,g=w

    查找所有者权限有读权限的目录或文件

    find ./ -perm -u=r

    查找用户组权限有读权限的目录或文件

    find ./ -perm -g=r

    查找其它用户权限有读权限的目录或文件

    find ./ -perm -o=r

    查找所有者为lzj的文件或目录

    find ./ -user lzj

    查找组名为gname的文件或目录

    find ./ -group gname

    查找文件的用户ID不存在的文件

    find ./ -nouser

    查找文件的组ID不存在的文件

    find ./ -nogroup

    查找有执行权限但没有可读权限的文件

    find ./ -executable \!-readable

    查找文件size小于10个字节的文件或目录

    find ./ -size -10c

    查找文件size等于10个字节的文件或目录

    find ./ -size 10c

    查找文件size大于10个字节的文件或目录

    find ./ -size +10c

    查找文件size小于10k的文件或目录

    find ./ -size -10k

    查找文件size小于10M的文件或目录

    find ./ -size -10M

    whereis

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

    格式:

    whereis [-bmsu] [BMS目录名-f ]文件名

    功能:

    whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

    参数:

    -b定位可执行文件。

    -m定位帮助文件。

    -s定位源代码文件。

    -u搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

    -B指定搜索可执行文件的路径。

    -M指定搜索帮助文件的路径。

    -S指定搜索源代码文件的路径。

    实例:

    实例1:将和**文件相关的文件都查找出来

    命令:

    whereis svn

    输出:

    [root@localhost ~]#whereis tomcat

    tomcat:

    [root@localhost ~]#whereis svn

    svn: /usr/bin/svn/usr/local/svn /usr/share/man/man1/svn.1.gz

    说明:

    tomcat没安装,找不出来,svn安装找出了很多相关文件

    [if !supportLists]9)[endif]>这个会覆盖掉原来的数据

    [if !supportLists]10)[endif]>>逐行增加数据

    [if !supportLists]二、[endif]Shell脚本【案例】

    #! /bin/bash

    for ip in `seq 100`

    do

    Ping192.168.1.$ip –c 1 | grep ttl | awk ‘{print $4}’ | awk –F:‘{print $1}’

    done

    相关文章

      网友评论

          本文标题:Linux基本应用-管道命令的使用

          本文链接:https://www.haomeiwen.com/subject/kyytvxtx.html