2021-07-16

Linux Service

工作需要后台自启一个小python程序,环境ubuntu 18.04 ,也就是去了rc的版本

  1. 写在.profile里配合自动登陆,需要图像界面启动才能启动,不稳定
  2. /etc/init.d 么的用,未排查具体原因
  3. /etc/systemd/system/my.service 非常好用

记录一下service的用法

  1. 基本框架:参考这篇博客Service Details
    (如果不知道怎么写,可以看同目录下其他服务照猫画虎)
# 一些重要的区块
[Unit]
# 定义启动顺序,下面代表在A.target之前, B.service之后启动my.service
# 注意:该字段无依赖关系,如果B和my有依赖关系,需要写在Wants,Require, 这里的依赖可以视为同时启动的意思
# Wants: 弱依赖 if C exits, my running
# Requires: 强依赖 if D exits, my exits
Before=A.target
After=B.service
Wants=C.service
Require=D.service
# 结论: 上述的启动顺序为, (B then C & D & my then A) and (If D is None : my exits)
[Service]
# 有很多字段,类似Exec*, 按照*的字面意思理解就可以,这里的Start就是启动时的命令
ExecStart=$EXEPATH/exe $SCRIPTS/my_scripts
# 这里还可以定义启动Type=, 具体看教程, 我没有用到
# 重启行为定义字段,后两个的区别是前者包括信号终止,后者只有超时重启
Restart=on-failure/on-abnormal/on-watchdog
[Install]
# 定义如何安装service文件,即我们怎么启动service
WantedBy=multi-user.target
# 这里的target是一组服务,在etc/systemd/system/目录下有一个该目标服务组想要的文件夹,存储指向安装服务的软连接。
# multi-user.target 是一个linux默认运行的服务组
# 图形服务组和其依赖可见[官方文档](https://www.freedesktop.org/software/systemd/man/bootup.html#System%20Manager%20Bootup)

在保存好服务文件后需要进行systemctl daemon-reload

  1. 一些小问题:
    1. 用户问题:看日志发现有为根目录用户关闭进程,发生在我使用/bin/bash打开shell文件后使用/usr/bin/python3打开python文件。解决方法:直接打开python文件
    2. 日志输出问题:写py文件时没有定义日志输出功能。解决:ExecStart 中重定向至log.txt文件
    3. python的模块依赖问题,设定运行顺序在默认服务组后启动或软关联。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值