开机自启相关.md 3.3 KB

使用 systemctl 配置服务.并且使其自启动

新增服务

[!note] ubuntu 21.04

定义服务

/lib/systemd/system/ 目录下创建文件 serverName.service

[!warning] serverName 替换为自己需要的服务名称,可以直接执行下面的代码

修改文件,使用vim来进行编辑, 在shell

vim /lib/systemd/system/serverName.service

通过vim打开serverName.service后继续输入下方代码,其中的 server 替换成执行任务

[Unit]
Description=fraps service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target
[Service]
Type=simple
#要启动的命令(此处根据实际情况填写)
ExecStart= #server 执行的任务,此注释替换新的
[Install]
WantedBy=multi-user.target

ps 如果该服务需要使用到网络,则需要在[Unit]下添加

After=network.target network-online.target syslog.target
Wants=network.target network-online.target

ps 如果添加了网络配置还是提示无效,则可以使用自动重启功能

[Service]
Restart=always
RestartSec=3

参数解释

  1. 重启策略 Restart
  2. Restart=always 服务退出后总是重启
  3. Restart=on-failure 服务退出后重启,除非退出代码为0
  4. Restart=on-abnormal 服务退出后重启,除非退出代码为0,或者由于信号而退出
  5. Restart=on-success 服务退出后重启,只有退出代码为0时才重启
  6. Restart=on-abort 服务退出后重启,只有退出代码为0时才重启
  7. Restart=never 服务退出后不重启

  8. 重启间隔 RestartSec

  9. RestartSec=3 服务退出后3秒后重启

  10. RestartSec=30s 服务退出后30秒后重启

  11. RestartSec=1min 服务退出后1分钟后重启

  12. 重启次数 Limit

  13. LimitRestart=3 服务退出后重启3次

    启用服务

    sudo systemctl enable serverName
    

    启动服务进程

    sudo systemctl start serverName
    

    常用命令

    [!tip] 常用命令基本上分为 start restart stop

启动服务进程

sudo systemctl start serverName

重启服务

sudo systemctl restart serverName

关闭服务

sudo systemctl stop serverName

启用服务

sudo systemctl enable serverName

停用服务

sudo systemctl disable serverName

问题解决

[!warning] 如果重新修改了服务文件需要执行systemctl daemon-reload重新加载 Warning: The unit file, source configuration file or drop-ins of githook.service changed on disk. Run > 'systemctl daemon-reload' to reload units.

  systemctl daemon-reload

日志查看

[!tip] 查看服务日志使用 journalctl -u 服务名 journalctl用来查看systemctl搜集到的日志,可以用来调试排查问题. 据说是systemctl携带的

使用示例

查看服务名为githook的服务日志

journalctl -u githook.service

更多使用技巧

  1. 查看最近的日志

携带参数n加数字可以看到最近n条日志

代码示例

journalctl -n 100 -u githook.service