Linux 查看服务是否使用退出代码运行

Linux 查看服务是否使用退出代码运行,linux,bash,if-statement,grep,Linux,Bash,If Statement,Grep,我制作了一个简单的脚本,检查服务是否正在运行并返回退出代码,但我无法使它工作。如果有效,则退出0;如果无效,则退出1 #!/bin/bash #Plugin for checking if the SSH service is running SERVICE='ssh' if [ ps aux | grep -v grep | grep $SERVICE > /dev/null ]; then exit 0 else exit 1 fi if语句可以

我制作了一个简单的脚本,检查服务是否正在运行并返回退出代码,但我无法使它工作。如果有效,则退出0;如果无效,则退出1

#!/bin/bash

#Plugin for checking if the SSH service is running

SERVICE='ssh'

if [ ps aux | grep -v grep | grep $SERVICE > /dev/null ];
then
        exit 0
else
        exit 1
fi

if
语句可以简单地替换为

ps aux | grep -v grep | grep -q "$SERVICE"

如果
grep-q
成功(即匹配
ssh
),则管道的退出状态为0,否则为1。如果这是脚本的最后一行,shell的退出状态将是相同的:不需要显式调用
exit

可以简单地替换
If
语句

ps aux | grep -v grep | grep -q "$SERVICE"

如果
grep-q
成功(即匹配
ssh
),则管道的退出状态为0,否则为1。如果这是脚本的最后一行,shell的退出状态将是相同的:不需要显式调用
exit

可以简单地替换
If
语句

ps aux | grep -v grep | grep -q "$SERVICE"

如果
grep-q
成功(即匹配
ssh
),则管道的退出状态为0,否则为1。如果这是脚本的最后一行,shell的退出状态将是相同的:不需要显式调用
exit

可以简单地替换
If
语句

ps aux | grep -v grep | grep -q "$SERVICE"

如果
grep-q
成功(即匹配
ssh
),则管道的退出状态为0,否则为1。如果这是脚本的最后一行,shell的退出状态将相同:不需要显式调用
exit

这就是问题的原因:

if [ ps aux | grep -v grep | grep $SERVICE > /dev/null ];
  • if语句的语法:
    if列表;然后…
    ()
  • if
    根据列表的退出状态选择要执行的分支
  • 列表基本上是一个命令管道()
  • 您正在使用
    [
    命令--是的,它不仅仅是一个语法命令。
    [
    命令对它接受的参数有特定的要求()
  • [
    不喜欢您给出的参数
你想这么做吗

if ps aux | grep -v grep | grep $SERVICE > /dev/null; then

或者,最好接受切普纳的建议并接受他的回答。

这就是问题的原因:

if [ ps aux | grep -v grep | grep $SERVICE > /dev/null ];
  • if语句的语法:
    if-list;then…
    ()
  • if
    根据列表的退出状态选择要执行的分支
  • 列表基本上是一个命令管道()
  • 您正在使用
    [
    命令--是的,它不仅仅是一个语法命令。
    [
    命令对它接受的参数有特定的要求()
  • [
    不喜欢您给出的参数
你想这么做吗

if ps aux | grep -v grep | grep $SERVICE > /dev/null; then

或者,最好接受切普纳的建议并接受他的回答。

这就是问题的原因:

if [ ps aux | grep -v grep | grep $SERVICE > /dev/null ];
  • if语句的语法:
    if-list;then…
    ()
  • if
    根据列表的退出状态选择要执行的分支
  • 列表基本上是一个命令管道()
  • 您正在使用
    [
    命令--是的,它不仅仅是一个语法命令。
    [
    命令对它接受的参数有特定的要求()
  • [
    不喜欢您给出的参数
你想这么做吗

if ps aux | grep -v grep | grep $SERVICE > /dev/null; then

或者,最好接受切普纳的建议并接受他的回答。

这就是问题的原因:

if [ ps aux | grep -v grep | grep $SERVICE > /dev/null ];
  • if语句的语法:
    if-list;then…
    ()
  • if
    根据列表的退出状态选择要执行的分支
  • 列表基本上是一个命令管道()
  • 您正在使用
    [
    命令--是的,它不仅仅是一个语法命令。
    [
    命令对它接受的参数有特定的要求()
  • [
    不喜欢您给出的参数
你想这么做吗

if ps aux | grep -v grep | grep $SERVICE > /dev/null; then

或者,更好的做法是接受切普纳的建议并接受他的回答。

可能重复的查看我删除了括号,它起作用了。但是当我执行它时,如果服务ssh没有运行,它只返回0。可能重复的查看我删除了括号,它起作用了。但是当我执行它时,如果服务ssh没有运行,它只返回0。可能重复的查看我删除了括号,它工作了。但是当我执行时,如果服务ssh没有运行,它只返回0。可能重复的查看我删除了括号,它工作了。但是当我执行时,如果服务ssh没有运行,它只返回0。