Linux 脚本自启动

您所在的位置:网站首页 chkconfig开机启动命令 Linux 脚本自启动

Linux 脚本自启动

2023-04-09 18:27| 来源: 网络整理| 查看: 265

               Linux 脚本自启动--程序开机自启动的秘密-----自定义服务

最近有一个需求,某些服务安装完毕后,有一个启动脚本,这个脚本名称为 某某server,但该脚本需要手动启动才可以正常使用该服务,不够智能,每次一重启机器就需要手动启动一次,很是麻烦,怎么解决呢?有以下几种方案。

第一,脚本链接到 /etc/profile.d/目录下,在该目录下的脚本开机后都会自动运行,但 目前的脚本是带参数start或者stop才可以启动,重新写了个执行脚本放入该目录下后,开机有问题,不能正常进入系统,该方案否决。

感兴趣的同学可以去这个目录下看看,有很多的开机所需的脚本都在这里。如果安装了vim,也有关于vim的脚本。

第二,编写 /etc/rc.d/rc.local.这里需要注意,该文件需要赋予权限x,默认是没有权限的,该方案是可行的,只是对开机速度有些影响,开机比较缓慢。

第三,自定义服务文件,注册到系统服务内,通过systemctl命令管理。

具体做法如下:1.编辑文件, /usr/lib/systemd/system/xpnserver.service

[Unit] Description=xpnserver # 内容自己定义:该服务的说明 After=rc-local.service nss-user-lookup.target #服务的启动方式

[Service] Type=forking #服务的类别 ExecStart=/root/xpnserver/xpnserver start# 脚本的绝对路径和执行参数 ExecStop= /root/xpnserver/xpnserver stop#脚本的绝对路径和执行参数 Restart=on-failure#重启服务的流程定义 RestartSec=42s#重启时间 ,超时判定服务重启失败 KillMode=process# 结束服务的方式为杀掉服务进程

[Install] WantedBy=multi-user.target#注册到内核,并生成连接文件赋予该文件x执行权限,然后就可以愉快的使用systemctl 命令控制是否开机自启等了。

====================================================================================

#执行结果,以及验证方法

[root@centos1 system]# systemctl is-enable vpnserver#其实是systemctl is-enable vpnserver.service,

service可以省略#的,下面是一样的,我这是写错了少了个d,下面是执行成功的命令 Unknown operation 'is-enable'. [root@centos1 system]# systemctl is-enabled xpnserver disabled [root@centos1 system]# systemctl enable xpnserver Created symlink from /etc/systemd/system/multi-user.target.wants/xpnserver.service to /usr/lib/systemd/system/vpnserver.service. [root@centos1 system]# systemctl start vpnserver#启动服务 [root@centos1 system]# systemctl stop xpnserver#停止服务 [root@centos1 system]# systemctl start xpnserver#启动服务 [root@centos1 system]# vim xpnserver.service [root@centos1 system]# systemctl restart xpnserver#重启服务

#都是正常的,验证通过。

=========================================================================================

第四,这个是比较老旧版本的服务启动方式,通常是在5或者6版本,这个例子是将test.sh脚本加入chkconfig服务

# 1.将(脚本)启动文件移动到 /etc/init.d/或者/etc/rc.d/init.d/目录下。(前者是后者的软连接)

mv /www/wwwroot/test.sh /etc/rc.d/init.d

 

# 2.启动文件前面务必添加如下三行代码,否侧会提示chkconfig不支持。

#!/bin/sh             告诉系统使用的shell,所以的shell脚本都是这样

#chkconfig: 35 20 80        分别代表运行级别,启动优先权,关闭优先权,此行代码必须

#description: http server     自己随便发挥!!!,此行代码必须

/bin/echo $(/bin/date +%F_%T) >> /tmp/test.log

 

# 3.增加脚本的可执行权限

chmod +x /etc/rc.d/init.d/test.sh

 

# 4.添加脚本到开机自动启动项目中。添加到chkconfig,开机自启动。

[root@localhost ~]# cd /etc/rc.d/init.d

[root@localhost ~]# chkconfig --add test.sh

[root@localhost ~]# chkconfig test.sh on

 

# 5.关闭开机启动

[root@localhost ~]# chkconfig test.sh off

 

# 6.从chkconfig管理中删除test.sh

[root@localhost ~]# chkconfig --del test.sh

 

# 7.查看chkconfig管理

[root@localhost ~]# chkconfig --list test.sh

总结:在本例中,vpnserver这个启动脚本是带参的,systemctl服务管理是十分适合的,也就是第三种方案,推荐指数:五颗星

如果是一般的脚本,比如仅仅需要开机执行生成一些环境的脚本,chkconfig服务管理是十分合适的,也就是第四种方案。推荐指数:三颗星,方式比较老旧,基本是旧版系统的方式,说不上什么时候就没有这个方式了。

第二种方案,比较简单实用,但一定要注意赋予x权限,重要的事情说n遍,赋予权限!!!!!!!!!!!推荐指数:四颗星

第一种方案,推荐指数:0颗星,毕竟是系统的启动脚本目录,不要随意动,万一启动系统时出点问题,哭都来不及了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3