【问题标题】:Linux self-healing script to check some processLinux自愈脚本检查某些进程
【发布时间】:2015-05-26 04:28:14
【问题描述】:

我是 Linux 脚本的新手,我需要帮助来创建一个脚本,检查服务器上的一些已安装进程,如果其中一项服务没有运行,请重新启动它,然后再次检查这些服务,如果有任何错误,请使用 echo 打印它如下:

dsisrv        (DSI service)                                  (7384)   Running
midaemon      (measurement interface)                        (1412)   Running
misrv         (measurement interface service)                (1384)   Running
perfalarm     (Alarm generator)                                       Stopped
perfalarmsrv  (Alarm generator service)                               Stopped
scopent       (data collector)                                        Stopped
scopesrv      (collector service)                                     Stopped
perfd         (Real Time Metric Access Daemon)               (7888)   Running
perfdsrv      (Real Time Metric Access Service)              (9020)   Running
ttd           (transaction tracking)                         (1808)   Running

如果上述任何服务停止,脚本运行重启命令。

如果有人帮助我从这个脚本开始,不胜感激

问候,

【问题讨论】:

  • 你不告诉我们脚本叫什么,也不显示代码。您也没有提到应该在其上运行的 linux 操作系统。这使您的问题总体上非常模糊;你需要更详细地说明你到底想要什么、你已经做了什么以及你遇到了什么困难。
  • 我需要启动一个脚本来检查一个进程,如果它运行与否,如果进程没有运行重启它,重启后如果有任何错误信息就用 echo 打印出来跨度>
  • 你已经尝试了什么?

标签: linux self-healing


【解决方案1】:
#!/bin/sh
 SERVICE='httpd'
 if ps ax | grep -v grep | grep $SERVICE > /dev/null 
then
 echo "$SERVICE service running, everything is fine"
 else 
echo "$SERVICE is not running" echo "$SERVICE is not running!" | mail -s "$SERVICE down" root 
fi

只需添加您正在寻找的服务,如果服务出现故障,这将给您发送邮件。我假设您使用 bash,所以享受吧。

【讨论】:

    【解决方案2】:

    我做了简单的脚本,希望对您有所帮助,请以 root 身份运行此脚本,并在声明数组中添加您的服务或守护进程

    declare -a service=(vsftpd sshd) 
    

    完整的脚本

    #!/bin/bash
    declare -a service=(vsftpd sshd) ##declaration array
    for x in ${service[@]} ##array with 
    do
    process=` ps -A | grep $x | awk '{print $4}' ` ### all process output
    all_services=`echo $x`
    line_no=` ps -A | sed -n '/'$all_services'/=' `
    if ` ps -A | grep ${process[@]} > 0 ` ## condition to check if service available or not
    then
    echo "status running", " `ps -A | sed -n ''$line_no''p | awk ' {print $1 $4}'` "  ## service up running
    else
    service $all_services start ### start the daemon again
    fi
    done
    

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多