如何用Base Shell控制服务启动与停止?

Bash

1 前言

一个问题,一篇文章,一出故事。
某些场景,我们使用简单的命令去停止或者启动服务,会遇到出错的情况,于是我们需要带自动检测功能的函数去执行服务的启动或停止。

2 最佳实践

2.1 创建脚本

vim ~/scripts/serviceControl.sh

加入如下设置,

#!/bin/bash

stopService() {
    local serviceName=$1

    if systemctl is-active --quiet "$serviceName"; then
        echo "Stopping $serviceName..."
        systemctl stop "$serviceName"

        while systemctl is-active --quiet "$serviceName"; do
            sleep 1
        done

        echo "$serviceName has been stopped."
    else
        echo "$serviceName is not running."
    fi
}

startService() {
    local serviceName=$1

    if ! systemctl is-active --quiet "$serviceName"; then
        echo "Starting $serviceName..."
        systemctl start "$serviceName"

        while ! systemctl is-active --quiet "$serviceName"; do
            sleep 1
        done

        echo "$serviceName has been started."
    else
        echo "$serviceName is already running."
    fi
}

stopService "openvpn"
startService "openvpn"

2.2 测试脚本

bash ~/scripts/serviceControl.sh
没有评论

发表回复

Bash
如何监视服务并自动通知?

1 前言 一个问题,一篇文章,一出故事。 最近笔者希望通过脚本实现监视服务并在服务异常是使用两种方式 …

Bash
如何Telnet自动登录路由器执行命令?

1 前言 一个问题,一篇文章,一出故事。 最近在笔者需要一个脚本自动从路由读取一些信息,因此整理本章 …

Bash
如何防止Base Shell脚本重复执行?

1 前言 一个问题,一篇文章,一出故事。 笔者最近发现脚本因为重复执行而损耗服务器性能,因此解决此问 …