Bootstrap

Linux下的systemd/service

开机自启任务


一. 概述

systemd 是现代 Linux 系统中管理系统和用户服务的工具,可以创建一个 systemd 服务来实现开机自启的任务

二. 操作

1. 创建 systemd 服务文件

使用文本编辑器创建一个新的服务文件:

sudo vim /etc/systemd/system/test.service

2. 在文件中添加以下内容:

[Unit]
Description=My Script
After=network.target

[Service]
Type=oneshot
ExecStart=source /path/yourScript.sh
User=root
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

3. 添加开机自启

sudo systemctl enable test.service

三. Service解析

1. [unit] 部分

[Unit]
Description=Mount VMware Shared Folders
After=network.target
  • Description:这是服务的描述文本。它用于向用户或系统管理工具提供服务的简短描述。
  • After=network.target:表示该服务在 network.target 后启动,即网络服务已经启动后才开始执行。

2. [Service] 部分

[Service]
Type=oneshot
ExecStart=source /path/yourScript.sh
User=root
RemainAfterExit=true
  • Type=oneshot: 表示该服务将在启动后执行一次任务并退出。oneshot 类型通常用于那些只执行一次任务、然后完成的服务,而不需要持续运行。对于 oneshot 类型的服务,systemd 会在服务成功执行完 ExecStart 后认为该服务已完成。
  • ExecStart:这是指定该服务执行的命令。
  • User=root:指定服务以 root 用户身份运行。(默认也是 root的)
  • RemainAfterExit=true:指示 systemd 在服务执行完毕后将服务的状态保持为“激活”(active),即使该服务已经退出。因为 Type=oneshot 服务会在执行一次任务后退出,而设置 RemainAfterExit=true 允许 systemd 保持服务的“激活”状态,直到下次启动或重新启动该服务。

3.[Install] 部分

[Install]
WantedBy=multi-user.target
  • WantedBy=multi-user.target:WantedBy 指定了该服务在启动时应当被启用的目标。multi-user.target 是一个标准的 systemd 启动目标,表示多用户模式,通常用于支持多用户的常规服务器环境。这意味着当系统进入 multi-user.target 状态时,test.service 会被启动并执行挂载操作。
    WantedBy 可以理解为“当系统处于某个目标状态时,该服务应该启动”。在这里,multi-user.target 是系统正常运行时进入的目标,通常是大多数 Linux 发行版的默认运行级别

四 . 一个最基本的服务文件

[Unit]
Description=My Local Service

[Service]
ExecStart=/usr/bin/mylocalservice

[Install]
WantedBy=multi-user.target
;