linux服务依赖性自启shell,shell脚本在Linux上关闭时自动启动服务

shell脚本在Linux上关闭时自动启动服务

我为这种用法总共添加了六个shell脚本,您可以选择哪个脚本适合您。

我在每个shell脚本中应用了不同的命令和方法。

Note: 您需要更改电子邮件ID,而不是我们的ID。

1)在Linux系统中使用SysVinit停机时如何自动启动服务?

如果要在SysVinit Linux系统中启动单个服务,请使用以下bash脚本。

我已httpd在此脚本中添加了服务,但是您可以添加服务,无论您要监视哪个。

# vi /opt/scripts/service-monitor.sh

#!/bin/bash

serv=httpd

sstat=stopped

service $serv status | grep -i 'running|stopped' | awk '{print $3}' | while read output;

do

echo $output

if [ "$output" == "$sstat" ]; then

service $serv start

echo "$serv service is UP now.!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

else

echo "$serv service is running"

fi

done

设置文件的可执行权限service-monitor.sh。

$ chmod +x /opt/scripts/service-monitor.sh

最后添加一个cronjob以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor.sh

或者,您可以使用以下脚本。

# vi /opt/scripts/service-monitor-1.sh

#!/bin/bash

serv=httpd

sstat=$(pidof $serv | wc -l )

if [ $sstat -gt 0 ]

then

echo "$serv is running fine!!!"

else

echo "$serv is down/dead"

service $serv start

echo "$serv service is UP now!!!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

fi

设置文件的可执行权限service-monitor-1.sh。

$ chmod +x /opt/scripts/service-monitor-1.sh

最后,我们添加了一个cron作业以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-1.sh

2)在Linux系统中使用systemd停机时如何自动启动服务?

如果要在systemd Linux系统中启动一项服务,请使用以下bash脚本。

我已httpd在此脚本中添加了服务,但是您可以添加服务,无论您要监视哪个。

# vi /opt/scripts/service-monitor-2.sh

#!/bin/bash

serv=httpd

sstat=dead

systemctl status $serv | grep -i 'running|dead' | awk '{print $3}' | sed 's/[()]//g' | while read output;

do

echo $output

if [ "$output" == "$sstat" ]; then

systemctl start $serv

echo "$serv service is UP now.!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

else

echo "$serv service is running"

fi

done

设置文件的可执行权限service-monitor-2.sh。

$ chmod +x /opt/scripts/service-monitor-2.sh

最后添加一个cronjob以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-2.sh

或者,您可以使用以下脚本。

# vi /opt/scripts/service-monitor-3.sh

#!/bin/bash

serv=httpd

sstat=$(pidof $serv | wc -l )

if [ $sstat -gt 0 ]

then

echo "$serv is running fine!!!"

else

echo "$serv is down/dead"

systemctl start $serv

echo "$serv service is UP now!!!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

fi

设置文件的可执行权限service-monitor-3.sh。

$ chmod +x /opt/scripts/service-monitor-3.sh

最后添加一个cronjob以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-3.sh

3)在Linux系统中使用SysVinit时如何自动启动多项服务?

如果要在SysVinit Linux系统中启动多个服务,请使用以下bash脚本。

我已在此脚本中添加httpd和rsyslog服务,但是您可以添加服务,无论您要监视哪个。

# vi /opt/scripts/service-monitor-4.sh

#!/bin/bash

sstat=stopped

for serv in httpd rsyslog

do

service $serv status | grep -i 'running|stopped' | awk '{print $3}' | while read output;

do

echo $output

if [ "$output" == "$sstat" ]; then

service $serv start

echo "$serv service is UP now.!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

else

echo "$serv service is running"

fi

done

done

设置文件的可执行权限service-monitor-4.sh。

$ chmod +x /opt/scripts/service-monitor-4.sh

最后添加一个cronjob以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-4.sh

或者,您可以使用以下脚本。

# vi /opt/scripts/service-monitor-5.sh

#!/bin/bash

for serv in rsyslog httpd

do

sstat=$(pgrep $serv | wc -l )

if [ $sstat -gt 0 ]

then

echo "$serv is running!!!"

else

echo "$serv is down/dead"

service $serv start

echo "$serv serv is UP now!!!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

fi

done

设置文件的可执行权限service-monitor-5.sh。

$ chmod +x /opt/scripts/service-monitor-5.sh

最后添加一个cronjob以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-5.sh

4)在Linux系统中使用systemd停机时如何自动启动多项服务?

如果要在systemd Linux系统中启动多个服务,请使用以下bash脚本。

我已在此脚本中添加httpd和rsyslog服务,但是您可以添加服务,无论您要监视哪个。

# vi /opt/scripts/service-monitor-6.sh

#!/bin/bash

sstat=dead

for serv in httpd rsyslog

do

systemctl status $serv | grep -i 'running|dead' | awk '{print $3}' | sed 's/[()]//g' | while read output;

do

echo $output

if [ "$output" == "$sstat" ]; then

systemctl start $serv

echo "$serv service is UP now.!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

else

echo "$serv service is running"

fi

done

done

设置文件的可执行权限service-monitor-6.sh。

$ chmod +x /opt/scripts/service-monitor-6.sh

最后添加了一个cron作业以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-6.sh

或者,您也可以使用以下脚本。

# vi /opt/scripts/service-monitor-7.sh

#!/bin/bash

for serv in rsyslog httpd

do

sstat=$(pgrep $serv | wc -l )

if [ $sstat -gt 0 ]

then

echo "$serv is running!!!"

else

echo "$serv is down/dead"

systemctl start $serv

echo "$serv serv is UP now!!!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

fi

done

设置文件的可执行权限service-monitor-7.sh。

$ chmod +x /opt/scripts/service-monitor-7.sh

最后添加一个cronjob以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-7.sh

5)如何使用systemd和SysVinit Linux系统在服务关闭时自动启动服务?

如果要在systemd和SysVinit Linux系统中启动服务,请使用以下bash脚本。

我已httpd在此脚本中添加了服务,但是您可以添加服务,无论您要监视哪个。

# vi /opt/scripts/service-monitor-8.sh

#!/bin/bash

smanager=$(ps -p1 | grep "init|systemd" | awk '{print $4}')

serv=httpd

if (( $(pidof $serv | wc -l) > 0 ))

then

echo "$serv is running!!!"

elif [ "$smanager" == "init" ]

then

service $serv start

echo "$serv service is UP now.!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

else

systemctl start $serv

echo "$serv service is UP now.!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

fi

设置文件的可执行权限service-monitor-8.sh。

$ chmod +x /opt/scripts/service-monitor-8.sh

最后添加一个cronjob以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-8.sh

6)在Linux系统中,如何使用systemd和SysVinit在服务关闭时自动启动服务?

如果要在systemd和SysVinit Linux系统中启动多个服务,请使用以下bash脚本。

我已在此脚本中添加httpd和rsyslog服务,但是您可以添加服务,无论您要监视哪个。

# vi /opt/scripts/service-monitor-9.sh

#!/bin/bash

smanager=$(ps -p1 | grep "init|systemd" | awk '{print $4}')

for serv in rsyslog httpd

do

if (( $(pgrep $serv | wc -l) > 0 ))

then

echo "$serv is running!!!"

elif [ "$smanager" == "init" ]

then

service $serv start

echo "$serv service is UP now.!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

else

systemctl start $serv

echo "$serv service is UP now.!" | mail -s "$serv service is DOWN and restarted now On $(hostname)" daygeek@gmail.com

fi

done

设置文件的可执行权限service-monitor-9.sh。

$ chmod +x /opt/scripts/service-monitor-9.sh

最后添加了一个cron作业以使其自动化。它将每5分钟运行一次。

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/service-monitor-9.sh

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值