Linux注册系统服务并设置开机启动

  • A+
所属分类:操作系统管理

如果您想让“绿色版”程序成为在开机时自启或在后台运行,就需要将其注册为系统服务。

说明

由于不了解 Upstart 和 SysV-Init 的传参模式,暂不提供这两种初始化系统的配置指南
如果您熟悉这些初始化系统并且愿意为本文档作出贡献,欢迎开启 PR 完善相关文档(GitHub 仓库

首先,您要搞清楚您的 Linux 系统使用的 初始化系统 是什么,常见的初始化系统:

  • Systemd
  • Upstart
  • SysV-Init

执行下面的命令然后查看输出,找到您的初始化系统:

if [[ `/sbin/init --version` =~ upstart ]]; then echo Upstart; elif [[ `systemctl` =~ -\.mount ]]; then echo Systemd; elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]; then echo SysV-Init; else echo Unknown; fi

Linux注册系统服务并设置开机启动

本文将以systemd初始化系统为例,讲解如何注册系统服务及设置开机启动;

注册系统服务

注册系统服务前置知识

Systemd 是 Linux 系统的一种初始化系统实现,它管理的各种服务叫做 Unit,每个服务对应一个 Unit 配置文件

在本教程中,frpc 会被注册为一个服务,我们让 Systemd 来自动管理 frpc,借此实现开机自启和后台运行

Systemd 的服务有两种状态:

  • 运行中/已停止/错误
  • 启用/禁用

如果 启用 了服务,开机的时候服务就会自启,反之就不会

编写配置文件

Systemd 的 Unit 配置文件 通常位于这些目录中:

  • /lib/systemd/system (供软件包使用)
  • /etc/systemd/system (供管理员使用)

本教程将选用第二个目录来放置  Unit 配置文件,并且 frpc 启用后报错退出时每分钟会自动重启一次

执行下面的命令

vi /etc/systemd/system/<Unit名称>.service

会自动创建好这个文件,然后在英文输入法下按一下 i 键,左下角应该会出现 -- INSERT -- 或者 -- 插入 -- 字样

Linux注册系统服务并设置开机启动

然后复制并粘贴下面提供的服务文件内容,请注意 不要 多复制或少复制任何东西,确保粘贴后的内容与下方一致

[Unit]
Description=name Service
After=network.target

[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=60s
ExecStart=脚本命令或程序指令

[Install]
WantedBy=multi-user.target

粘贴完成后按一下 ESC,左下角的 -- INSERT -- 会消失,此时输入 :wq 并按回车退出

执行下面的命令重载 Systemd,这样服务就配置完成了

systemctl daemon-reload

启动服务命令

systemctl start <Unit名称>

停止服务命令

systemctl stop <Unit名称>

查看运行情况

systemctl status <Unit名称> -l

配置开机启动

注册好服务后,实现开机自启非常简单,回顾一下前置知识

我们只要 启用 服务就可以实现开机自启

如果不想开机自启了,禁用 服务即可
使用下面的命令启用/禁用服务,enable 是启用,disable 是禁用,操作完成后再用 status 检查一下状态

systemctl <enable|disable> <Unit名称>
systemctl status <Unit名称>

 

下载服务恢复

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: