Linux下实现程序开机自启(rc.local 和 systemctl)
需求:
实现了一个程序,需要在ubuntu上跑起来。能开机自启,且崩溃了也能自己重启。有两种实现方式,个人推荐第二种。
方式1:
实现方式:
直接将要启动程序的运行命令加在 /etc/rc.local 中,开机时会运行这里的命令。
我使用时:写了一个脚本DDR_Guard.sh,在脚本里面循环判断程序有没有开启。如果没有开启,则调用相应的启动指令。
比如:

注意:
1)此方式在Ubuntu20.04之后就取消了,只在Ubuntu16.04中测试可行。
2)在 /etc/rc.local 中的命令一定要可以结束,如果结束不了会导致系统开不起来。所以我用了后台运行:也就是nohup。
方式2(推荐使用):
采用systemctl的方式,好像很挺方便的样子。(实际用时把youngtest换成自己需要的名字即可)
强烈建议看看这个文档,里面介绍了一些参数的具体含义:https://ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
准备工作:
1)为了测试,我写了一个程序test0726,里面循环往一个文件里面输入一句话。
2)还写了一个脚本:youngtest.sh
#!/bin/bash
cd /home/dadao/workspace/test/systemctltestLog
v_time=`date "+%Y_%m_%d_%H_%M_%S"`
echo $v_time" Start runing ++++++++++++++++++++ " >> youngtestsh.log
./test0726
echo $v_time" Process quit ---------------------- " >> youngtestsh.log
3)需要有执行权限:chmod +x youngtest.sh test0726
如何配置:
1)编写一个 youngtest.service,内容如下:
[Unit]
Description=test [Service]
Type=simple
User=dadao
ExecStart=/home/dadao/workspace/test/systemctltestLog/youngtest.sh
Restart=always
RestartSec=30
StartLimitInterval=0 [Install]
WantedBy=multi-user.target graphical.target
以下参数根据实际需要进行配置:
User:表示以哪个用户启动,不写默认是root。
ExecStart:就是要执行的语句。
Restart=always: 只要不是通过systemctl stop来停止服务,任何情况下都必须要重启服务,默认值为no。还可以配置有条件重启,具体参考上述文档。
RestartSec=5: 重启间隔,比如某次异常后,等待5(s)再进行启动,默认值0.1(s)
StartLimitInterval: 无限次重启,默认是10秒内如果重启超过5次则不再重启,设置为0表示不限次数重启
2)拷贝到: /lib/systemd/system 可能还要注意权限问题。

3)修改配置文件后需要重加载配置:
sudo systemctl daemon-reload
4)设置开机自启:
sudo systemctl enable youngtest.service
之后就可以直接重启了。
5)之后就可以操作了:
启动:
sudo systemctl start youngtest.service

停止:
sudo systemctl stop youngtest.service

查看状态:
sudo systemctl status youngtest.service

测试自动重启功能:

Linux下实现程序开机自启(rc.local 和 systemctl)的更多相关文章
- ElasticSearch(十四):Linux下设置ElasticSearch 开机自启
一.创建脚本文件 在 /etc/init.d 目录下,创建脚本文件 elasticsearch # cd /etc/init.d/ # vim elasticsearch 将以下内容写入文件中(其 ...
- Linux下设置Nginx开机自启
1.本地环境 [root@dev ~]#cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 2.在/etc/init.d创建ngi ...
- Linux中程序开机自启
Linux中程序开机自启 https://www.itbulu.com/debian-ubuntu-rclocal.html
- Linux开机启动文件rc.local无法执行怎么办?
rc.local是Linux系统中的一个重要的开机启动文件,每次开机都要执行这个文件.但是有一些用户的Linux系统无法执行这个文件,并导致了一系列的问题.遇到这个问题我们应该怎么办呢? 在Linux ...
- linux下配置tomcat开机自启动
Linux下配置tomcat开机自启动 1.写一个tomcat脚本,内容如下,设置其权限为755,放在/etc/init.d/目录下 #!/bin/bash## /etc/init.d/tomca ...
- linux下c程序调用reboot函数实现直接重启【转】
转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...
- Linux下C程序的编辑,编译和运行以及调试
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- 位图文件(BMP)格式以及Linux下C程序实现(转)
源:位图文件(BMP)格式以及Linux下C程序实现 说到图片,位图(Bitmap)当然是最简单的,它是Windows显示图片的基本格式,其文件扩展名为*.BMP.由于没有经过任何的压缩,故BMP图 ...
- Linux下C程序内存泄露检测
在linux下些C语言程序,最大的问题就是没有一个好的编程IDE,当然想kdevelop等工具都相当的强大,但我还是习惯使用kdevelop工具,由于没有一个习惯的编程IDE,内存检测也就成了在lin ...
- Linux下C程序的内存映像
2.Linux下C程序的内存映像 2.1. 代码段.只读数据段(1)对应着程序中的代码(函数),代码段在Linux中又叫文本段(.text)(2)只读数据段就是在程序运行期间只能读不能写的数据,con ...
随机推荐
- 世界读书日:推荐15本AI从入门到放弃的书
hi,我是熵减,见字如面. 在世界读书日即将到来的前,以及借着ChatGPT的火热,各种AI大模型的创业东风,今天给大家推荐一些AI相关的图书,希望大家能从入门到放弃,找到适合自己的热爱. 本次推荐图 ...
- Sitecore10 Demo演示环境Azure一键部署(Step By Step Guide to installing Sitecore10 in Azure Paas)
本文演示Sitecore XP Single(XP0)在Azure上的一键部署,即"30分钟生成Sitecore演示环境"的一环. 关于XP(即Sitecore Experienc ...
- 视频会议中的AEC、AGC、ANS是什么?
视频会议中的AEC.AGC.ANS是什么? 1.AGC是自动增益补偿功能(Automatic Gain Control),AGC可以自动调麦克风的收音量,使与会者收到一定的音量水平,不会因发言者与麦克 ...
- css3 flex弹性布局详解
一.flexbox弹性盒子 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这 ...
- 如何将c#在线编辑器嵌入自己项目
如何将c#在线编辑器嵌入自己项目 首先我们需要介绍一下这个在线编辑器,当前的在线编辑器支持c#的代码编译运行,并且无需后台服务,基于WebAssembly实现的在浏览器端去执行我们的c#代码,基于Ro ...
- 2020-09-10:java里Object类有哪些方法?
福哥答案2020-09-10: registerNatives:private+static.getClass:返回此 Object 的运行时类. hashCode:返回该对象的哈希码值.equals ...
- 2022-02-24:k8s安装rabbitmq,yaml如何写?
2022-02-24:k8s安装rabbitmq,yaml如何写? 答案2022-02-24: yaml如下: apiVersion: apps/v1 kind: Deployment metadat ...
- nodejs 入门基本概念
nodejs 的诞生 Node.js 是2009的时候由大神 Ryan Dahl 开发的.Ryan 的本职工作是用 C++ 写服务器,后来他总结出一个经验,一个高性能服务器应该是满足"事 ...
- Deferred Components-实现Flutter运行时动态下发Dart代码 | 京东云技术团队
导读 Deferred Components,官方实现的Flutter代码动态下发的方案.本文主要介绍官方方案的实现细节,探索在国内环境下使用Deferred Components,并且实现了最小验证 ...
- Docker 的安装及常用命令
CentOS Docker 安装 参看链接 Windows安装 Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/doc ...