首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:如果服务尚未运行,则运行服务(Centos、Apache、Clam)

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

Stack Overflow用户
提问于 2015-08-24 02:57:22
回答 2查看 1.6K关注 0票数 2

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

代码语言:javascript
复制
#!/bin/bash
if [[ ! "$(/sbin/service httpd status)" =~ "running" ]]
then
    service httpd start
elif [[ ! "$(/sbin/service clamd status)" =~ "running" ]]
then 
    service clamd start
fi

通过命令行对其进行测试,使其工作正常,但是有任何方法可以进一步优化吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-24 03:11:05

不再关心文本,只需检查返回值即可。

代码语言:javascript
复制
#!/bin/sh
service httpd status &> /dev/null || service httpd start
service clamd status &> /dev/null || service clamd start

或者只是不关心他们已经在运行,让系统来处理。

代码语言:javascript
复制
#!/bin/sh
service httpd start
service clamd start
票数 4
EN

Stack Overflow用户

发布于 2017-03-30 19:13:02

代码语言:javascript
复制
#!/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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32173882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档