centos7系统 和centos6.6重启服务器自动运行脚本问题

285 阅读4分钟

这是我参与更文挑战的第5天,活动详情查看:更文挑战

有时候遇到服务器不稳定经常挂掉的时候,部署在服务器上服务就会down掉,需要人工手动进行重启服务,这是非常麻烦的,也是非常不智能的,同时极大程度的影响客户的体验,所以这时我们只需要设置一个服务器自启的服务就可以完美的解决这个问题。

centos7系统参下:

先编写一个service文件在/lib/systemd/system/文件夹下(有些根据系统不同可能是在/usr/lib/systemd/system/),文件格式如下:

vim /lib/systemd/system/test.service

[Unit]

Description=test

After=network.target

[Service]

Type=forking

ExecStart=/root/test.sh

ExecReload=/root/testreload.sh

ExecStop=/root/teststop.sh

PrivateTmp=true

[Install]

WantedBy=multi-user.target

其中他们的字段分别代表了

Description:描述服务

After:描述服务类别

[Service]服务运行参数的设置

Type=forking是后台运行的形式

ExecStart为服务的具体运行命令(如果是运行脚本文件只需要把sh文件位置写入就行,如果是启动某些服务,就找到启动服务的文件位置 然后start ,例如/www/lanmps/init.d/nginx restart)

ExecReload为重启命令

ExecStop为停止命令

PrivateTmp=True表示给服务分配独立的临时空间

然后保存文件如果保存文件显示权限不够,可以切换超级管理员sudo su,然后进行保存文件,赋予文件754的权限,赋予完成后看是否赋予成功可以通过ll观察,第一位代表文件类型,然后以三位一组rwx代表当前用户的权限,r-x代表用户组的权限,r--代表其他权限

image.png

赋予权限之后systemctl enable test.service设置为开机自启,然后可以通过systemctl status nginx.service命令查看这个service的状态,这是正常执行的

image.png 其他命令

systemctl start test.service 启动nginx服务

systemctl enable test.service 设置开机自启动

systemctl disable test.service 停止开机自启动

systemctl status test.service 查看服务当前状态

systemctl restart test.service 重新启动服务

systemctl list-units --type=service 查看所有已启动的服务

如果你设置自启之后active为inactive那么就是服务在等待被执行,也是成功的,这时候你就可以reboot重启服务来检查你是否设置成功。

centos6.6使用以下方法:

因为centos6是没有systemctl的(就非常生气,因为客户的就是centos6的)解决centos6的有两种方法分别是通过chkconfig和设置rc.local,但是因为rc.local这种方法我没有成功,每次设置了/etc/rc.d/rc.local文件,一些echo、su命令都可以执行但是执行java -jar就不知道为什么不行(以后再补上),重启后还是没有执行(不知道哪里出了问题,弄了一天心态炸了,以后弄好了再给各位看官补上),所以就不在这进行描述了,然后是使用了chkconfig的方式,在/etc/init.d/文件夹下面建一个sh脚本文件

#!/bin/sh 

#add for chkconfig 

#chkconfig: 2345 70 30 

#description: the description of the shell  #关于脚本的简短描述 

#processname: xxxx                   #第一个进程名,后边设置自启动的时候会用到 

#下面要启动服务的命令

service iptables restart(运行系统服务使用restart)

sh /home/hipay/test.sh(运行脚本)

其中chkconfig : 2345 70 30 ,2345代表运行级别

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS)

运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

70是指脚本将来的启动顺序号,如果别的程序的启动顺序号比70小(比如44、45),则脚本需要等这些程序都启动以后才启动。

30是指系统关闭时,脚本的停止顺序号

然后保存同时需要给文件添加执行权限chmod +x ./test.sh,再把test.sh添加到chkconfig (chkconfig --add test.sh),使用命令chkconfig查看所有的启动文件。

重启之后应该就ok了!!!

如有问题欢迎评论指教(0-----0)