Shell知识点补充:

本文详细介绍了Shell中的grep、find、ps命令的使用,包括过滤、查找、进程信息获取等操作。同时讲解了kill和killall命令如何管理和结束进程,以及如何使用file命令识别文件类型。内容涵盖了命令的基本用法、参数和实际应用示例。
  • 知识点补充:

  • //注释:ps -ef | grep "$1" | grep -v grep | grep -v "$0"//

    //ps -ef |          全格式显示当前所有进程

    // grep "$1"   搜索执行命令时所带的第一个参数值;

    // grep -v grep       就是查找不含有 grep 字段的行

    //grep -v "$0"     查找不含当前shell名称的行

    $0代表当前使用的shell、在命令行环境下表示当前shell的名称,在脚本中表示当前执行的脚本名称。

    $1...$9:在脚本中用来表示位置参数,即脚本执行时所带的第几个参数的值。

    echo $0就能显示当前你用的是bash还是csh等

    $1,$2一般代表你使用的命令的参数

    比如执行  bash ./test.sh 3 4

    这个时候,3就是$1的值,4就是$2的值

    $?代表上一条命令的返回值,真为1,假为其他值

  •  

     

    //注释:ps -ef |grep cusip_full_is | grep -v grep | wc -l | awk '{ print $1; }'

    //ps -ef |          全格式显示当前所有进程

    //grep cusip_full_is             滤出''cusip_full_is''的进程

  • //grep -v grep                     把''grep''这个进程忽略掉

    //wc -l                                 看看有多少个进程

    //awk '{ print $1; }'              输出第一列

     

     

     

    管道命令( | )

                 " | " 之前的结果作为 " | " 之后的输入。

    向屏幕打印信息(echo)

                 echo  "hello"  :在屏幕上打印hello

    重定向(>>)

                 echo  "hello"  >>  my.txt  : 将本应显示到屏幕上的"hello",重定向输出到my.txt文件

    重启:

                 reboot

     

     

    3、过滤命令grep

    该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为

    [html] view plain copy

  •  

  • grep  [-acinv]  [--color=auto]  “hello”  文件名  
  •   grep "hello"  文件名  : 在指定文件查找所有内容,但只显示包含"hello"的行。

                 grep  -v  "hello"  文件名: 过滤显示不包含"hello" 的行。

                 grep  -i   "hello"  文件名: 过滤显示包含"hello"的行,但不区分大小写

    它的常用参数如下:

    [html] view plain copy

  • -a :将binary文件以text文件的方式查找数据  
  • -c :计算找到‘查找字符串’的次数  
  • -i :忽略大小写的区别,即把大小写视为相同  
  • -v :反向选择,即显示出没有‘查找字符串’内容的那一行  
  • # 例如:  

    # 取出文件/etc/man.config中包含”MANPATH”的行,并把找到的关键字加上颜色  

    grep --color=auto 'MANPATH' /etc/man.config  

    # 把ls -l的输出中包含字母”file”(不区分大小写)的内容输出  

    ls -l | grep -i file  

    管道命令( | )

                 " | " 之前的结果作为 " | " 之后的输入。

    4、查找命令find

            find  查找路径  -name(文件名)  "hello.txt" : 以名称来查找文件

                 find  查找路径  -name(文件名)  "hello*"    : 以名称前缀来查找文件 , * 是通配符

                 find  查找路径  -size  +5k      :   查找5kB大小以上的文件

                 find  查找路径  -size  -5k     :   查找5kB以内的文件

                 find  查找路径  -mmin  -30  :查找最后一次修改时间在30分钟以内的文件

                         其中  -m 选项  : 最后内容修改时间, 可替换为  -c :最后状态改变时间   -a :访问时间

                                  -min 选项:以分钟为单位(后面时间数字的单位),可替换为-time :以天(24hour)为单位

                                  +n  :n时间以前 , 可替换为  -n:n时间以内

    find是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出,它的基本语法如下:

    [html] view plain copy

  • find [PATH] [option] [action]  
  •   
  • # 与时间有关的参数:  
  • -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;  
  • -mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;  
  • -mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;  
  • -newer file : 列出比file还要新的文件名  
  • # 例如:  
  • find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件  
  •   
  • # 与用户或用户组名有关的参数:  
  • -user name : 列出文件所有者为name的文件  
  • -group name : 列出文件所属用户组为name的文件  
  • -uid n : 列出文件所有者为用户ID为n的文件  
  • -gid n : 列出文件所属用户组为用户组ID为n的文件  
  • # 例如:  
  • find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件  
  •   
  • # 与文件权限及名称有关的参数:  
  • -name filename :找出文件名为filename的文件  
  • -size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件  
  • -tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、  
  •              目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);  
  • -perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;  
  • -perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示  
  • -perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示  
  • # 例如:  
  • find / -name passwd # 查找文件名为passwd的文件  
  • find . -perm 0755 # 查找当前目录中文件权限的0755的文件  
  • find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte  
  • 11,通过进程名和PID过滤
    使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令:

    $ ps -C getty

    12,显示所有进程信息,连同命令行

    命令:ps -ef

     

    该命令用于将某个时间点的进程运行情况选取下来并输出,process之意,它的常用参数如下:

    [html] view plain copy

  • -A :所有的进程均显示出来  
  • -a :不与terminal有关的所有进程  
  • -u :有效用户的相关进程  
  • -x :一般与a参数一起使用,可列出较完整的信息  
  • -l :较长,较详细地将PID的信息列出  
  • 其实我们只要记住ps一般使用的命令参数搭配即可,它们并不多,如下:

    [html] view plain copy

  • ps aux # 查看系统所有的进程数据  
  • ps ax # 查看不与terminal有关的所有进程  
  • ps -lA # 查看系统所有的进程数据  
  • ps axjf # 查看连同一部分进程树状态  
  • 9、kill命令

    该命令用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用,它的基本语法如下:

    [html] view plain copy

  • kill -signal PID  
  • signal的常用参数如下:

    注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。

    [html] view plain copy

  • 1:SIGHUP,启动被终止的进程  
  • 2:SIGINT,相当于输入ctrl+c,中断一个程序的进行  
  • 9:SIGKILL,强制中断一个进程的进行  
  • 15:SIGTERM,以正常的结束进程方式来终止进程  
  • 17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行  
  • 例如:

    [html] view plain copy

  • # 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程  
  • kill -SIGTERM %1   
  • # 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得  
  • kill -SIGHUP PID  
  • 10、killall命令

    该命令用于向一个命令启动的进程发送一个信号,它的一般语法如下:

    [html] view plain copy

  • killall [-iIe] [command name]  
  • 它的参数如下:

    [html] view plain copy

  • -i :交互式的意思,若需要删除时,会询问用户  
  • -e :表示后面接的command name要一致,但command name不能超过15个字符  
  • -I :命令名称忽略大小写  
  • # 例如:  
  • killall -SIGHUP syslogd # 重新启动syslogd  
  • 11、file命令

  • 该命令用于判断接在file命令后的文件的基本数据,因为在Linux下文件的类型并不是以后缀为分的,所以这个命令对我们来说就很有用了,它的用法非常简单,基本语法如下:
  • [html] view plain copy

  • file filename  
  • #例如:  
  • file ./test  
  • 8、ps命令

    ps常用参数举例:// https://blog.youkuaiyun.com/vip_wangsai/article/details/72616587

    1,基本ps使用:

     

  • $ ps

    https://i-blog.csdnimg.cn/blog_migrate/40f62fb773ebfa5d2d5686996a160417.png

    结果默认会显示4列信息。
    PID: 运行着的命令(CMD)的进程编号
    TTY: 命令所运行的位置(终端)
    TIME: 运行着的该命令所占用的CPU处理时间
    CMD: 该进程所运行的命令
    这些信息在显示时未排序。

    2,列出目前所有的正在内存当中的程序。也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息:

    $ ps -aux

    https://i-blog.csdnimg.cn/blog_migrate/9a0a9014e245facea4c008c966360706.png

    4. 可以用 | 管道和 more 连接起来分页查看。
    命令:ps -aux |more
    5. 把所有进程显示出来,并输出到ps001.txt文件
    命令:ps -aux > ps001.txt
    6. 输出指定的字段
    命令:ps -o pid,ppid,pgrp,session,tpgid,comm

    7,根据 CPU 使用来升序排序

    $ ps -aux --sort -pcpu | less

    8,根据 内存使用 来升序排序
    $ ps -aux --sort -pmem | less

    9,树形显示进程

    $ pstree

    10,查看特定用户进程

    在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令:

    $ ps -u pungki

  •  
  •  
  •  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值