Bash:如果尚未运行则运行服务(Centos,Apache,Clam)

时间:2015-08-24 02:57:23

标签: bash apache centos

编写了一个简单的bash脚本,该脚本将运行以检查我的Centos服务器上是否正在运行httpd(apache)或clamd(防病毒),如果没有,它将重新启动它们。

#!/bin/bash
if [[ ! "$(/sbin/service httpd status)" =~ "running" ]]
then
    service httpd start
elif [[ ! "$(/sbin/service clamd status)" =~ "running" ]]
then 
    service clamd start
fi

通过命令行测试它,所以它可以工作,但有没有办法进一步优化它?

2 个答案:

答案 0 :(得分:2)

停止关心文本,只检查返回值。

mysite/life/grevys-zebra

或者只是不在乎他们已经在运行并让系统处理它。

#!/bin/sh
service httpd status &> /dev/null || service httpd start
service clamd status &> /dev/null || service clamd start

答案 1 :(得分:0)

#!/usr/bin/env bash

# First parameter is a comma-delimited string i.e. service1,service2,service3
SERVICES=$1

if [ $EUID -ne 0 ]; then
  if [ "$(id -u)" != "0" ]; then
    echo "root privileges are required" 1>&2
    exit 1
  fi
  exit 1
fi

for service in ${SERVICES//,/ }
do
    STATUS=$(service ${service} status | awk '{print $2}')

    if [ "${STATUS}" != "started" ]; then
        echo "${service} not started"

        #DO STUFF TO SERVICE HERE
    fi
done