shell命令实现服务的全启动
有时候在单机服务器部署中,会启动好几个软件(排除用docker),比如nginx,redis,tomcat,mysql 。。。。 以前 在不知道服务装在哪里的情况下,可以用whereis命令查看文件的位置。 $ whereis nginx nginx: /usr/local/nginx 然后 cd /usr/local/nginx ls
有时候在单机服务器部署中,会启动好几个软件(排除用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)