shell命令实现服务的全启动

    有时候在单机服务器部署中,会启动好几个软件(排除用docker),比如nginx,redis,tomcat,mysql 。。。。

  以前

     在不知道服务装在哪里的情况下,可以用whereis命令查看文件的位置。

     $ whereis nginx 

     nginx: /usr/local/nginx

    然后 

    cd /usr/local/nginx  

    ls

    ./nginx 

    这样nginx服务就启动了,其他服务也是一样。

    问题是。。。。。这样真的很累,如果有上百个服务呢?要炸了!

现在

   思路: 可以先把这些服务关掉,然后再重新打开。如何关掉服务呢?相信如果你接触过Linux,肯定会说kill -9 <pid>,

但是请问你怎么知道pid呢?

ps -ef|grep <服务名字>

如ps -ef|prep nginx 这样就知道的nginx进程的pid。

这样的确是可以关闭一个服务,还是回到文中,有多个服务,总不能每个都这样操作吧,这样就会很麻烦的。

可以使用shell命令处理

我使用的是pkill -f <服务名>,然后依次重启这些服务就好了。

下面贴出整个文件service-start.sh

#!/bin/sh

echo "服务开始关闭"

pkill -f nginx  #关闭nginx服务

pkill -f redis   #关闭redis服务

pkill -f tomcat #关闭tomcat服务,如果开启了多个tomcat全部都会关闭

pkil -f mysql  #关闭mysql服务

#.........

sleep 3  #睡3秒

#在后台开启服务

nohup /usr/local/nginx/sbin/nginx &  

nohup /usr/local/redis/redis-server &

nohup /home/tomcat1/startup.sh &

nohup /home/tomcat2/startup.sh &

#.....

echo "服务全部开启"

这样就可以大功告成了。pkill,nohup这些命令就不仔细讲解了,不懂请自行google或百度吧!

再补充一下,如果机房断电使服务器重启,也可以写一个命令,使其自动完成上面命令的执行。

  • 把Shell脚本放入/etc/rc.d/init.d/目录下
mv ./service-start.sh /etc/rc.d/init.d/service-start.sh
  • 添加脚本的可执行权限
chmod +x /etc/rc.d/init.d/service-start.sh
  • 使用chkconfig命令把脚本添加进开机启动项目中
chkconfig -- add service-start.sh

chkconfig service-start.sh on

完美,开机以后所有服务都已经启动了!

注:如果出现了 service service-start.sh does not support chkconfig

请在shell脚本前面加上 

# chkconfig: 2345 10 90 

其中2345是默认启动级别,级别有0-6共7个级别。

  等级0表示:表示关机   

  等级1表示:单用户模式   

  等级2表示:无网络连接的多用户命令行模式   

  等级3表示:有网络连接的多用户命令行模式   

  等级4表示:不可用   

  等级5表示:带图形界面的多用户模式   

  等级6表示:重新启动

10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值