编写了一个简单的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
通过命令行测试它,所以它可以工作,但有没有办法进一步优化它?
答案 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