题目:
判断 sshd 进程是否运行,如果服务未启动则启动相应服务。
具体代码实现:
#!/bin/bashsshd_service=`systemctl is-active sshd`if [ "$sshd_service" == "active" ]; thenecho "sshd is running....."
elseecho "sshd is not running"systemctl start sshd &> /dev/nullsleep 1echo "sshd start"
fi
解题分析:
1.需要知道sshd服务是否启动,可以通过is-active进行查看;
2.定义变量sshd_service接收命令`systemctl is-active sshd`的执行结果;
3.判断变量的值是否等于“active”,如果是,则提示sshd正在运行,如果不是,则启动sshd服务;
4.使用命令`systemclt start sshd`启动服务,并将其产生的信息丢弃到/dev/null黑洞中去;
补充:
判断的方法不局限于一种,还有很多方法查看sshd是否运行,如:
1. ps命令查看进程
ps -ef | grep sshd | grep -v grep|wc -l
2.netstat或ss查看端口(sshd的端口是22)
netstat -lntup | grep 22 | wc -l
ss -lntup|grep -w 22|wc -l
不同方法判断的条件不同。