Linux编写Service实现程序挂入后台自动重启

2,779 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

很多时候我们要去部署一个项目、一个程序,需要保证它能够在服务器中,能够一直保持运行状态,遇到服务器正常或不正常重启时,依旧能够保持在运行时的状态,我们就可以将这个程序的启动方式设定为service服务型的启动方式。

  • 这里以创建Python程序服务为例

  • 服务器版本为Centos 8.3

1、在/etc/systemd/system中创建一个service,使用vim或者vi编辑器,进入文件后,输入指令i进入编辑状态。

vim /etc/systemd/system/myNotice.service

设定service的一些参数信息

  • [Unit]
    • Description为描述信息内容
    • After为先后执行的service
  • [Service]
    • Type类型,可以不变更
    • User为执行的用户,此处为root用户
    • Group为执行的用户组,此处为root用户组
    • WorkingDirectory为当前工作路径,一般为程序入口
    • ExecStart为执行的指令信息,注意无论有没有配置好环境变量,这里都采用可执行程序的绝对路径
  • [Install]
    • 此部分内容可以不修改

完整的service编写可以参考如下:

[Unit]
Description=yourDescription
After=network.service
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/root
ExecStart=/root/anaconda3/bin/python notice.py
PrivateTmp=true
Restart=on-failure
[Install]
WantedBy=multi-user.target

注意:工作路径和执行程序指令的时候,都使用绝对路径去操作。否则服务将无法根据已配置好的环境运行程序

2、编辑好之后可以保存退出

按下esc键,敲入指令:wq即可

3、载入service

systemctl daemon-reload

4、开启service

systemctl start myNotice

5、查看service启动状态

systemctl status myNotice

6、重启service

systemctl restart myNotice

7、停止service

systemctl stop myNotice

看到绿色的active(running)就说明成功了

  • 如果是白色的inactive (dead)就说明启动失败了或者没有启动

通过如下指令可以查看service启动的日志,找到失败的原因:

journalctl -xe

原创:本文由CodeItEasy公众号(lsir_34567)原创,编辑:原虫子
CSDN创作者:刘先生的u写倒了 ( blog.csdn.net/weixin_4379… )
微信公众平台创作者:CodeItEasy
掘金平台创作者:刘先生的u写倒了