笔记|小白笔记1(grep、if、pkill)

  • 首页 > 教程
  • 作者:jaz
  • 时间: 2017年4月30日 16:14
  • 字数:4223 个
  • 字号:
  • 评论:0 条
  • 浏览:1562 次
  • 百度:百度已收录
  • 分类: 教程
  • 时间:2017-4-30 16:14 热度:1562° 评论:0 条 

    脚本

    #!/bin/sh
    t=0
    while [ 1 ]
    do
      ps -fe|grep firefox |grep -v grep
      if [ $? -ne 0 ]
      then
      echo "start firefox ..."
      firefox &> /dev/null &
      else
      echo "firefox is running"
      fi
      sleep 30
      t=$(( $t+1 ))
      if [ $t -gt 360 ]
      then
      pkill firefox
      t=0
      fi
    done
    #####


    grep

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

    grep -v grep在文档中过滤掉包含有grep字符的行

    过滤多个用  grep -v "grep|tail"


    if

    -eq  -ne  -lt  -nt只能用于整数,不适用于字符串,字符串等于用赋值号=

    -eq           //等于
    -ne           //不等于
    -gt            //大于
    -lt            //小于
    -ge            //大于等于
    -le            //小于等于
    详细用法:

        传统if 从句子——以条件表达式作为 if条件
    if [ 条件表达式 ]
    then
     command
     command
     command
    else
     command
     command
    fi


    • 条件表达式


    1.文件表达式
    if [ -f  file ]    如果文件存在
    if [ -d ...   ]    如果目录存在
    if [ -s file  ]    如果文件存在且非空 
    if [ -r file  ]    如果文件存在且可读
    if [ -w file  ]    如果文件存在且可写
    if [ -x file  ]    如果文件存在且可执行   
    2.整数变量表达式
    if [ int1 -eq int2 ]    如果int1等于int2   
    if [ int1 -ne int2 ]    如果不等于    
    if [ int1 -ge int2 ]       如果>=
    if [ int1 -gt int2 ]       如果>
    if [ int1 -le int2 ]       如果<=
    if [ int1 -lt int2 ]       如果<
    3.字符串变量表达式
    If  [ $a = $b ]                 如果string1等于string2
                                    字符串允许使用赋值号做等号
    if  [ $string1 !=  $string2 ]   如果string1不等于string2       
    if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
    if  [ -z $string  ]             如果string 为空
    if  [ $sting ]                  如果string 非空,返回0 (和-n类似)    


    杀死进程命令kill,pkill,killall

        终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。
        另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀
    死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql
    服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld
    这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。
    1)kill

    kill的应用是和ps 或pgrep 命令结合在一起使用的;

    用法:kill [信号代码]   进程ID

    注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止;
    举例:
    [[email protected] ~]# ps auxf |grep httpd
    root 4939 0.0 0.0 5160 708 pts/3 S+ 13:10 0:00 \_ grep httpd
    root 4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpd
    apache 4833 0.0 0.6 24364 4932 ? S 13:02 0:00 \_ /usr/sbin/httpd
    apache 4834 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
    ...
    apache 4840 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
    我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;
    我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830的话,其下的子进程也会跟着死掉;
    [[email protected] ~]# kill 4840 注:杀掉4840这个进程;
    [[email protected] ~]# ps -auxf |grep httpd 注:查看一下会有什么结果?是不是httpd服务器仍在运行?
    [[email protected] ~]# kill 4830 注:杀掉httpd的父进程;
    [[email protected] ~]# ps -aux |grep httpd 注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?
    对于僵尸进程,可以用kill -9 来强制终止退出;
    比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;
    [[email protected] ~]# ps aux |grep gaim
    beinan 5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim
    或
    [[email protected] ~]# pgrep -l gaim
    5031 gaim
    [[email protected] ~]# kill -9 5031
    2)killall
    killall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了。
    用法:killall 正在运行的程序名
    killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;
    举例:
    [[email protected] beinan]# pgrep -l gaim
    2979 gaim
    [[email protected] beinan]# killall gaim
    3)pkill
    pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。
    应用方法:#pkill  正在运行的程序名
    举例:
    [[email protected] beinan]# pgrep -l gaim
    2979 gaim
    [[email protected] beinan]# pkill gaim

    End、

    正文到此结束
    您阅读这篇文章共花了: 
    本文链接:http://blog.jialezi.net/?post=40
    版权声明:若无特殊注明,本文皆为《jaz》原创,转载请保留文章出处。
    捐赠支持:如果觉得这篇文章对您有帮助,请“扫一扫”鼓励作者!

    热门推荐


    既然没有吐槽,那就赶紧抢沙发吧!
    返回顶部    返回首页    手气不错    捐赠支持         
    版权所有:Jialezi `s blog    站点维护: jaz    +主题:海云彩色