linux实现开机自启动服务或者开机自运行用户自定义脚本有三种方式

方式一:
执行 systemctl enable 服务名 命令,将对应服务的.service文件软链接到 /etc/systemd/system/multi-user.target.wants/ 目录下
(此种方式一般适用于通过rpm部署的软件,系统自动创建了对应服务的.service文件这种情形,当然我们也可以自己编写.service文件,然后就可以交给systemctl命令去管理服务,只不过自己编写较为麻烦)

通过rpm安装软件的方式,通常都会在 /usr/lib/systemd/system/ 目录下帮我们创建好.service文件,有了.service文件,我们就可以用systemctl命令去管理我们的服务。
例如我们通过rpm的方式安装kong服务,那么安装过程中会在 /usr/lib/systemd/system/ 目录下帮我们创建kong.service文件,有了kong.service文件,我们就可以通过 systemctl start kong 命令去启动kong服务,如果对应的服务没有.service文件,那么用systemctl命令就会提示找不到.service文件。
如果我们要配置kong服务开机自启,只需执行 systemctl enable kong 命令,系统会自动帮我们把 /etc/systemd/system/multi-user.target.wants/kong.service 软链接到 /etc/systemd/system/multi-user.target.wants/ 目录下,在这个目录下的服务都会在开机的时候进行自启动。
另外,有时候我们配置开机自启动的服务可能启动失败,最大的原因可能是服务之间有依赖关系;例如,我们把kong服务和postgresql服务都设置成开机自启动,由于kong服务依赖于postgresql服务,因此如果是kong服务先启动的话,就会失败,所以我们应该配置一下服务之间的依赖关系。

可参考文档:https://blog.csdn.net/jimmyleeee/article/details/118699167

systemctl命令:
systemctl start kong:启动kong服务
systemctl stop kong:停止kong服务
systemctl status kong:查看kong服务状态
systemctl enable kong:设置kong服务开机自启
systemctl disable kong:关闭kong服务开机自启

方式二:
将自定义的脚本拷贝到 /etc/rc.d/init.d 目录下,然后使用chkconfig添加服务,就可以实现开机自启。
方式一我们提到通过rpm安装软件的方式,有的会自动帮我们创建对应服务.service文件,我们就可以通过systemctl命令来管理服务;但也有的软件安装过程会自动帮我们把相关服务的启动脚本创建到 /etc/rc.d/init.d 目录下,我们就可以通过service命令来管理服务。并且可以通过 chkconfig 服务名 on 命令设置服务开机自动。

我们也可以使用方式二来配置自定义服务实现开机自启,步骤如下:
① 编写对应的shell脚本,赋予可执行权限(注意脚本文件需要两行注释,其中一行设置运行级别和脚本启动和停止优先级的要特别注意)
② 将脚本拷贝到 /etc/rc.d/init.d 目录下
③ 执行 chkconfig add 服务名 命令添加服务
④ 执行 chkconfig 服务名 on 命令设置服务开机自启动(这里也可以不用设置,步骤③就会自动设置对应运行级别的开机自启)

service命令:
service kong start:启动kong服务
service kong stop:停止kong服务
service kong status:查看kong服务状态
chkconfig命令:
chkconfig --list:列出在/etc/rc.d/init.d目录下的系统服务
chkconfig --add 服务名:添加服务
chkconfig --del 服务名:删除服务
chkconfig 服务名 on:设置服务开机自启
chkconfig 服务名 off:关闭服务开机自启

chkconfig命令可参考文档:https://blog.csdn.net/u013246459/article/details/52534741/

方式三:
将执行用户自定义脚本的命令写到 /etc/rc.d/rc.local 文件中
(这种方式适用于将用户自定义脚本设置为开机运行,通过这种方式配置的自启动脚本,会在方式一和方式二执行完自启动服务后再运行我们的自定义脚本,也就是说,通过这种方式配置的自启动脚本,会在linux的一些系统服务,比如网络network启动之后才运行我们的脚本)

配置的步骤如下:
① 用户自定义脚本需要赋予可执行权限:chmod +x kafka_enable_start.sh
② 拷贝到任意路径下:cp kafka_enable_start.sh /root
③ 使用root用户执行脚本,脚本需要是绝对路径:echo "su - root -c '/root/kafka_enable_start.sh'" >> /etc/rc.d/rc.local
④ rc.local文件需要赋予可执行权限:chmod +x /etc/rc.d/rc.local

如果我们自己的一些服务,没有被systemctl管理的,想要设置成开机自启动,就可以将对应的启动命令写成脚本,然后用这种方式进行配置。
如果我们自己的一些应用服务之间也有依赖关系,可以通过在自定义脚本中增加一些逻辑处理;例如我们的报表服务和api应用服务都需要设置成开机自启,并且api服务依赖于报表服务,那么可以在自定义的脚本里面增加逻辑判断,当报表服务成功启动再去启动api服务,或者是在执行了启动报表服务的命令之后,sleep一段时间再去执行启动api服务的命令。

可参考文档:https://www.cnblogs.com/wucongzhou/p/12588682.html

备注:rc.local的日志内容默认是 /var/log/boot.log

相关参考文档:
https://blog.51cto.com/u_14286115/3326768
https://blog.csdn.net/wang123459/article/details/79063703
https://blog.csdn.net/soonfly/article/details/72876001
https://bbs.huaweicloud.com/blogs/295010
https://blog.csdn.net/weixin_34547317/article/details/116739390
https://blog.csdn.net/qq_15079039/article/details/53291742

linux实现开机自启动服务/脚本相关推荐

  1. linux 设置开机自启动服务命令,linux开机自启动服务优化设置命令

    1.设置成英文字符,避免出现乱码 [root@xuegod62 ~]# LANG=en 2.两种配置linux开机自启动服务命令: 1) [root@xuegod62 ~]# ntsysv 2) [r ...

  2. linux 设置开机自启动服务命令,linux 设置服务开机自启动

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 由于机房断电,导致服务关闭,在运维人员匆忙的情况下,可能就只重启了机器,很容易就忽视了里面的服务,而对于比较重要的 ...

  3. Linux之开机自启动服务(两种方式)

    Linux开机启动自启动脚本两种方式 先要了解一下系统启动运行级别,请看这篇文章 链接: Linux之运行级别 rc.local方式 1首先创建一个要自启动的脚本 vi /etc/scripts/cr ...

  4. Linux服务跟随启动,Linux—添加开机启动(服务/脚本)

    系统启动时需要加载的配置文件 /etc/profile./root/.bash_profile /etc/bashrc./root/.bashrc /etc/profile.d/*.sh./etc/p ...

  5. Linux—添加开机启动(服务/脚本)

    系统启动时需要加载的配置文件 /etc/profile./root/.bash_profile /etc/bashrc./root/.bashrc /etc/profile.d/*.sh./etc/p ...

  6. linux服务器开机管理,Linux服务器开机自动启动服务或脚本的方法

    由于种种原因我们需要重启服务器或断电重启,服务都得手动一个一个启动太过麻烦,所以专门了解开机自启脚本的设置方法. 方式一: 直接在脚本/etc/rc.d/rc.local(和/etc/rc.local ...

  7. linux开发板开机自启动脚本,linux 添加开机自启动脚本

    Linux设置服务开机自动启动的方式有好多种,这里介绍一下通过chkconfig命令添加脚本为开机自动启动的方法. 1. 编写脚本autostart.sh(这里以开机启动redis服务为例),脚本内容 ...

  8. 将自己写的脚本添加至开机自启动服务和chkconfig的原理

    将自己写的脚本添加至开机自启动服务和chkconfig的原理 创建脚本测试 [root@anuo ~]# vim anuo.sh --创建个脚本 # !/bin/bash # chkconfig: 3 ...

  9. CentOS 7添加开机启动服务/脚本

    CentOS 7添加开机启动服务/脚本 一.添加开机自启服务 在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins. ...

最新文章

  1. PC厂商如何演化移动互联网市场格局?
  2. 电脑达人教你怎么解决Win7系统盘渐渐变小的问题
  3. 如何将文件复制到虚拟机中
  4. 基于java springboot+mybatis爱游旅行平台前台+后台设计实现
  5. css背景从左到右颜色渐变,CSS:linear-gradient()背景颜色渐变
  6. php carbon,laravel Carbon函数
  7. 老生长谈的$.extend()方法
  8. Atitit 提升扩展性 自由化理念 参数 第一章 前瞻性设计 第二章  自由化理念 自由化参数 json map等半结构化参数,dsl等全功能参数 自由化功能接口 dsl 自由化返回
  9. .net MVC小尝试
  10. mysql必知必会和sql必知必会
  11. win10系统字体颜色变淡
  12. 带你了解强大的Cadence家族,你可能只用到了它1/10的工具
  13. 【VC++游戏开发#十】2D篇 —— 人工智能(一):滚动地图 用鼠标控制人物的走动
  14. 最新微博图片相册批量下载工具
  15. 《剑指 offer : 专项突破版》 读后感
  16. 用word模板制作幻灯片
  17. java 163邮箱发邮件_java用163邮箱发邮件的方式,步骤有哪些?
  18. OSChina 周五乱弹 —— 那地图上的点到底去哪儿
  19. 成就系统和任务系统的设计
  20. 值传递,地址传递,引用传递

热门文章

  1. 外挂基础知识入门教学|工具下载
  2. linux远程拷贝命令及not a regular file 解决方案
  3. [FEEDSKY]我谈中文网志年会
  4. 安卓离线下载V7兼容包存在,但是无法import android.support.v7.app.AppCompatActivity
  5. CountDownLatch导致的线程阻塞问题及线程池的使用
  6. pythonxy安装包_Python计算机视觉:安装
  7. 文本文件(ASCII)的读写
  8. decltype 使用
  9. 洛谷P1892.团伙
  10. 理解串口通信以及232、485、422常见问题