linux - Shell 脚本未启动服务
问题描述
我有一个非常基本的 shell 脚本来检查给定的服务,然后查询服务以查明服务是否正在运行。如果服务未运行,它会尝试重新启动服务。但它不起作用。当我停止服务时。即使服务没有运行,它也永远不会进入“if”部分。退出状态是“0”吗?我检查终端中的输出,不是“0”,但仍然不会进入“if”部分。我错过了什么?任何帮助表示赞赏
#!/bin/bash
#checking for apache
service="sshd"
whie [ 1 ]
do
ps -e | grep $service
if [ $? -ne 0 ]; then
service ssh start
fi
sleep 3
done
解决方案
流程管理是一项复杂的业务,但也可以做得非常简单。在您的情况下,您只需要一个脚本来确保服务已启动并继续运行,这可以通过确定/etc/init.d/sshd
实际运行的命令然后将其插入此脚本来完成:
while true
do
[command from /etc/init.d/sshd]
done
PS:正如@CharlesDuffy 指出的那样,您首先要检查进程是否守护进程(在后台运行,立即返回)。如果是这样,您将不得不修改命令,以免发生这种情况。
推荐阅读
- node.js - 如何获取包含某个字符串的所有结果(在帖子中有更多解释)
- c# - 如何“正确”将 C# 属性转换为 C++?
- java - Maven 将依赖项写入我的项目的根文件夹。我怎样才能解决这个问题?
- django - 如何将这些循环转换为精细优化的 Django 查询
- django - IntegrityError:“is_approved”列中的空值违反非空约束
- mongodb - MongoDB计算所有出生在不同地点的独特人
- php - 编辑 php 文件,但只显示字符串之间的数据
- vba - 如何通过 VBA 在 Word 中的纯文本内容控件中获取文本
- swift - 从不调用 SceneDelegate 函数
- mysql - MySQL 存储过程问题,生成自定义 ID