Linux开机自启示例

原理

systemd是Linux系统中一个系统和服务管理器,用于启动和管理系统上运行的服务。利用systemctl创建开机自启服务,实际上是把你的服务交给systemd来管理。

创建步骤

创建service文件

系统的服务在/etc/systemd/system/目录下,自定义的服务在/usr/lib/systemd/system/目录下,建一个.service结的尾文件,在这个文件里编写配置。

创建一个frps服务:/usr/lib/systemd/system/frps.service

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=frps
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

参数解释

  • [Unit] 部分定义了服务的描述和依赖关系
    • After 定义了在哪个服务以后启动
  • [Service] 部分定义了服务的执行方式和其他属性
    • Type 服务类型,默认simple表示一个的简单后台进程,forking表示启动时fork一个子进程
    • ExecStart 启动命令
    • ExecReload 重启命令
    • ExecStop 关闭命令
    • WorkingDirectory 指定服务的工作目录
    • PrivateTmp 是否使用私有文件系统,true表示会在临时文件系统中运行,不会访问系统其他临时文件
  • [Install] 部分定义了服务的安装目标
    • WantedBy 哪个在目录下启动服务,multi-user.target表示多用户环境下启用服务

      服务命令

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      # 重新加载系统配置,执行以后我们新创建的配置就可以被systemd管理了
      systemctl daemon-reload

      # 查看服务状态
      systemctl status frps

      # 启动服务
      systemctl status frps

      # 关闭服务
      systemctl stop frps

      # 加入开机自启
      systemctl enable frps

      # 关闭开机自启
      systemctl disable frps