前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下实现程序开机自启(rc.local 和 systemctl)

Linux下实现程序开机自启(rc.local 和 systemctl)

作者头像
xcywt
发布2023-07-27 21:20:47
8510
发布2023-07-27 21:20:47
举报
文章被收录于专栏:xcywtxcywt

需求:

实现了一个程序,需要在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

代码语言:javascript
复制
#!/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,内容如下:

代码语言:javascript
复制
[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

测试自动重启功能:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求:
  • 方式1:
    • 实现方式:
      • 注意:
      • 方式2(推荐使用):
        • 准备工作:
          • 如何配置:
          相关产品与服务
          腾讯云服务器利旧
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档