linux 开机自启动服务

测试环境会因为运维某些需求(更改硬件配置,分配服务器资源…)使得会停服。
即使在工作时间之外维护,但也会导致次日上班时某些开发单独维护的服务没有及时启动,导致工作进度受影响。
那怎么友好的避免?编写服务器重启脚本。

那怎么做呢?

准备服务启动 shell

拿运维写的 tomcat,和 node 做个例子(以备今后使用)
由于我们项目都是专门归类在同一目录之下,所以采用简单的循环启动服务即可。

1
2
3
4
5
6
7
8
9
#!/bin/bash
serverDir=/mydata/tomcats

for dir in `ls $serverDir/`
do
if [ -f "$serverDir/$dir/bin/startup.sh" ]; then
$serverDir/$dir/bin/startup.sh &
fi
done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
# chkconfig: 345 88 08
# description: Forever for Node.js
serverDir=/mydata/nodeProject
export PATH=$PATH:/mydata/node-v8.9.0-linux-x64/bin
cd $serverDir
for dir in `ls $serverDir/`
do
if [ -f "$serverDir/$dir/bin/www.js" ]; then
cd $dir
forever start -s ./bin/www.js
cd ../
sleep 2
fi
done

编写 linux 重启 shell

先了解一下/etc/rc.d/init.d
/etc/rc.d/init.d
存放了各种系统服务启动的信息

/etc/rc.d/rc[0-6].d
是指服务运行的级别

  • 0:表示关机
  • 1:单用户模式
  • 2:无网络连接的多用户命令行模式
  • 3:有网络连接的多用户命令行模式
  • 4:不可用
  • 5:带图形界面的多用户模式
  • 6:重新启动

也可使用chkconfig来维护修改。查看更多

1
2
3
4
5
6
7
# 查询
[root@localhost etc]# chkconfig --list
NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
abrt-ccpp 0:off 1:off 2:off 3:off 4:off 5:off 6:off
abrtd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
...

正题:编写/etc/rc.d/rc.local
把上面的各种服务 sh 维护到此文件中,当重启后,系统自动执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
#Start Tomcats
/mydata/bashShells/startTomcats.sh
#Start Nginx
/usr/sbin/nginx
#Start Node Projects
/mydata/bashShells/startNodeProjs.sh
mount -o username=Administrator,password=Cn654321Ty //192.168.1.90/yunwei /mnt/yunwei
【长按关注】看看↓↓↓?
Eminoda wechat
【前端雨爸】分享前端技术实践,持续输出前端技术文章
欢迎留言,评论交流,一起讨论前端问题
📢 因为是开源博客,为避免 Gitalk授权 带来的 安全风险,也可访问