`
chenhua_1984
  • 浏览: 1246453 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

实用shell脚本备份

阅读更多
#!/bin/bash
#chkconfig: 5 80 90
#description:check
#
 
# source function library
#. /etc/rc.d/init.d/functions

JAVA_HOME=/usr/bin
export JAVA_HOME=$JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

DIALUP_PID=/root/unixDialup/dialup.pid

CheckProcessStata()
{
    CPS_PID=$1
    if [ "$CPS_PID" != "" ] ;then
        CPS_PIDLIST=`ps -ef|grep $CPS_PID|grep -v grep|awk -F" " '{print $2}'`
    else
        CPS_PIDLIST=`ps -ef|grep "$CPS_PNAME"|grep -v grep|awk -F" " '{print $2}'`
    fi

    for CPS_i in `echo $CPS_PIDLIST`
    do
        if [ "$CPS_PID" = "" ] ;then
            CPS_i1="$CPS_PID"
        else
            CPS_i1="$CPS_i"
        fi

        if [ "$CPS_i1" = "$CPS_PID" ] ;then
            #kill -s 0 $CPS_i
            kill -0 $CPS_i >/dev/null 2>&1
            if [ $? != 0 ] ;then
                echo "[`date`] unixdialup-10500: Process $i have Dead"
                kill -9 $CPS_i >/dev/null 2>&1
              
                return 1
            else
                #echo "[`date`] unixdialup-10501: Process is alive"
                return 0
            fi
        fi
    done
    echo "[`date`] unixdialup-10502: Process $CPS_i is not exists"
    return 1
}


   echo "dialup  Service check ..."
   SPID=`cat /root/unixDialup/dialup.pid`
   CheckProcessStata $SPID >/dev/null
       if [ $? != 0 ];then
       nohup /root/bea/user_projects/domains/mydomain/startWebLogic.sh >nohup.out 2>&1 & new_agent_pid=$!
       #nohup ls >nohup.out 2>&1 & aaa=$!
       echo "$new_agent_pid" > $DIALUP_PID
       else
        echo "unixdialup:{$SPID} Running Normal."
       fi


 findchidenproc() {
  CPS_PID=$1
  tmpfile=/tmp/CheckProcessStat$$
  if [ "$CPS_PID" != "" ] ;then
      ps -ef|grep $CPS_PID|grep -v grep|awk -F" " '{print $2,$3}' > $tmpfile
    else
      echo "Warning:Input pid is null"
      return 1
  fi

  while read line
  do
    o_pid_1=`echo $line|awk '{print $1}'`
    o_pid_2=`echo $line|awk '{print $2}'`
        
    if [ "$CPS_PID" = "$o_pid_2" ];then
         echo "$o_pid_1"
         rm -f $tmpfile
         return 0
    fi
        
  done < $tmpfile
  rm -f $tmpfile
  return 1
}

findparentproc() {
  CPS_PID=$1
  tmpfile=/tmp/CheckProcessStat$$
  if [ "$CPS_PID" != "" ] ;then
      ps -ef|grep $CPS_PID|grep -v grep|awk -F" " '{print $2,$3}' > $tmpfile
    else
      echo "Warning:Input pid is null"
      return 1
  fi

  while read line
  do
    o_pid_1=`echo $line|awk '{print $1}'`
    o_pid_2=`echo $line|awk '{print $2}'`
        
    if [ "$CPS_PID" = "$o_pid_1" ];then
        if [ "$o_pid_2" = "1" ];then
            rm -f $tmpfile
            return 1
          else
             echo "$o_pid_2"
             rm -f $tmpfile
             return 0
        fi
    fi
        
  done < $tmpfile
  rm -f $tmpfile
  return 1
}

findallproc(){
  CPS_PID=$1
  tmpfile=/tmp/CheckProcessStat$$
  if [ "$CPS_PID" != "" ] ;then
      ps -ef|grep $CPS_PID|grep -v grep|awk -F" " '{print $2,$3}' > $tmpfile
    else
      echo "Warning:Input pid is null"
      return 1
  fi

  while read line
  do
    o_pid_1=`echo $line|awk '{print $1}'`
    o_pid_2=`echo $line|awk '{print $2}'`
   
    if [ "$CPS_PID"  = "$o_pid_1" ];then
         echo "$CPS_PID"
         if [ "$o_pid_2" = "1" ];then
               #echo "$o_pid_1 is Root process"
               chidrenopt=0
               chi_pid=$CPS_PID             
               while [ $chidrenopt = 0 ]
               do
                  chi_pid=`findchidenproc $chi_pid`
                  if [ $? != 0 ];then
                      chidrenopt=1
                    else
                      echo "$chi_pid"
                  fi
               done
            else
                parentopt=0
                chidrenopt=0
                par_pid=$CPS_PID
                chi_pid=$CPS_PID
                while [ $parentopt = 0 ]
                do
                   par_pid=`findparentproc $par_pid`
                   if [ $? != 0 ];then
                       parentopt=1
                     else
                       echo "$par_pid"
                   fi
                done
               
                while [ $chidrenopt = 0 ]
                do
                   chi_pid=`findchidenproc $chi_pid`
                   if [ $? != 0 ];then
                       chidrenopt=1
                     else
                       echo "$chi_pid"
                   fi
                done
              
         fi 
    fi
     
  done < $tmpfile
  rm -rf $tmpfile
  return 1
}

killproc () {
  pid=$1
  if [ "$pid" = "" ];then
       echo "Warning :input pid is null"
       return 1
     else
       proclist=`findallproc $pid`
       for i in $proclist
       do
          echo "kill -9 $i"
       done
   fi
}

 unixdialup开机自启动

1拷贝 check文件到/etc/rc.d/init.d/目录下面
 cp /root/unixdialup/check    /etc/rc.d/init.d/

2授予可执行权限
 chmod +x check
 
3使用chkconfig设置为系统的服务
 chkconfig --add check
 
4查看服务是否在列表内,查看是否有check
 chkconfig --list
 
5重启系统测试是check正常启动
 reboot
 
6启动后使用ps目录来查看java是否存在
 ps -ef|grep java
 
 
7 如果想卸载check服务
 chkconfig --del check



 

分享到:
评论

相关推荐

    109个shell脚本合集.pdf

    Shell脚本是一种脚本语言,利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能。 Shell脚本可以直接使用在Windows、Unix、Linux上面,并且可以调用大量系统内部的功能来解释执行程序。如果...

    9 个实用 Shell 脚本,直接部署,简单实用

    该脚本使用 `mysql` 命令连接数据库,使用 `mysqldump` 命令备份数据库,并使用循环备份多个数据库。 知识点: * `mysql` 命令:用于连接数据库。 * `mysqldump` 命令:用于备份数据库。 * 循环语句:用于备份多个...

    定时备份的数据表 shell脚本(非常实用)

    定时备份的数据表 shell脚本(非常实用),并且加上linux crontab。满足日常需求 ~~

    23 个非常实用的 Shell 脚本实例.doc

    在实际工作中, Shell 脚本可以应用于各种自动化任务,例如文件备份、日志记录、网络监控等等。 Shell 脚本的编程技术也可以应用于其他领域,例如数据分析、机器学习等等。 Shell 脚本是一种强大的工具,能够帮助...

    shell脚本可配置备份mysql5.7.8以前数据库.rar

    本资源提供了一个专为MySQL 5.7.8及以前版本设计的shell脚本,它允许用户进行自定义配置,方便快捷地执行数据库备份操作。 首先,我们需要了解`shell`脚本。Shell是Unix或Linux操作系统中的命令解释器,它允许用户...

    shell备份文件、重命名文件、删除指定文件的3个脚本分享

    本文将详细解析三个实用的Shell脚本,分别是用于备份文件、重命名文件和删除指定文件的脚本,适合初学者参考和实践。 1. 备份文件的脚本: ```bash #!/bin/bash E_BADARGS=65 case $# in 0) echo "message:param ...

    shell脚本可配置备份oracle数据库异常mail465发邮件.rar

    在Shell脚本中,可能会使用`expdp`(数据泵导出)命令进行完整备份,`impdp`(数据泵导入)用于恢复。这些命令可以通过参数来指定要备份的数据库用户、表空间,甚至整个数据库。 邮件发送部分,脚本可能会使用`...

    Shell 脚本编程实战100例.pdf

    3. 网络管理:实例“检测网段主机状态”涉及网络知识,了解如何利用Shell脚本结合ping命令检测指定网段内主机的在线状态。 4. 数据备份与恢复:通过学习“使用rsync备份数据”,“自动备份mysql库文件”,“备份...

    109个shell脚本合计

    本文档汇总了109个实用的Shell脚本实例,涵盖了多个应用场景,包括系统管理、网络监控、数据库备份等。下面将详细讨论其中几个关键脚本。 1. Dos攻击防范(自动屏蔽攻击IP): 这个脚本通过分析Nginx的访问日志...

    Linux 平台下 RMAN 全备 和 增量备份 shell 脚本

    ### Linux 平台下 RMAN 全备与增量备份 Shell 脚本解析 #### 一、RMAN 备份基础知识 RMAN (Recovery Manager) 是 Oracle 数据库的一个非常强大的备份与恢复工具,适用于各种操作系统环境,包括 Linux。本文将重点...

    shell脚本学习指南

    **Shell脚本学习指南** Shell脚本是Linux和Unix系统中的强大工具,它允许用户通过编写脚本来自动化一系列命令操作,极...通过阅读和实践,你将能熟练掌握编写高效、实用的Shell脚本,从而提升Linux环境下的工作效率。

    Linux云计算-Shell脚本100例

    在“Linux云计算-Shell脚本100例@www.java1234.com.pdf”这份资料中,读者可以期待看到一系列实用的Shell脚本示例,涵盖上述提到的各种应用场景。每个例子都会详细介绍其功能、实现原理和使用方法,帮助读者掌握编写...

    250个shell脚本

    本文档收集了250个实用的Shell脚本实例,涵盖了多个应用场景,包括系统管理、安全防护、数据库备份等核心知识点。 1. Dos攻击防范:通过监控Nginx的日志文件,检测到异常频繁的IP访问后,脚本会自动使用iptables...

    shell脚本100例(最新版).pdf

    在《shell脚本100例(最新版).pdf》这本书中,作者详细介绍了各种实用的Shell脚本案例,涵盖了从基础语法到高级应用的广泛知识。 1. **Hello World** 脚本是最基础的示例,它展示了如何创建一个简单的Shell脚本,`#!...

    shell脚本.pdf

    Shell脚本是Linux/Unix操作系统中的一种编程语言,它允许用户通过命令行接口执行一系列自动化任务。对于初学者来说,掌握Shell脚本可以极大地提高工作效率,尤其在日常系统管理、数据处理和自动化流程中。这份"shell...

    我的几个常用shell脚本

    在IT领域,Shell脚本是一种极其实用的工具,特别是在Linux和Unix系统中。Shell脚本是用Shell语言编写的程序,允许用户通过命令行界面自动化执行一系列操作。在这个名为"我的几个常用shell脚本"的压缩包中,包含了...

    mysql备份shell脚本与备份文件的还原 ,每日和每月备份shell脚本,重要参数说明,还原时的主要问题分析与解决

    本文将详细介绍如何使用`mysqldump`工具创建shell脚本进行自动备份,并解析关键参数,同时探讨还原过程中可能遇到的问题及解决方案。 一、mysqldump简介 `mysqldump`是MySQL提供的一款命令行实用程序,用于导出...

    shell脚本可配置备份mysql5.7.8以前数据库异常sendEmail25发邮件.rar

    这篇文档将深入解析标题"shell脚本可配置备份mysql5.7.8以前数据库异常sendEmail25发邮件.rar"中的关键知识点,包括shell脚本、MySQL数据库备份、异常处理以及sendEmail服务。 首先,我们要了解shell脚本。Shell...

    shell脚本可配置备份mysql5.7.8以前数据库异常mail465发邮件.rar

    总结来说,这个压缩包提供的shell脚本是一个实用的工具,能够自动化对MySQL 5.7.8及更早版本的数据库进行备份,并在出现问题时通过邮件通知管理员。这样的解决方案对于需要定期备份数据库并确保数据安全的企业尤其有...

Global site tag (gtag.js) - Google Analytics