道一站 道一站
首页
  • 历史文明
  • 自我管理
  • 经济金融
  • 未来科技
  • 李笑来
  • 股票
  • 期货
  • 期权
  • 外盘
  • 量化
  • 区块
  • 认知
  • 数理
  • 收藏
  • 前端

    • JavaScript
    • TypeScript
  • 页面

    • HTML
    • CSS
  • 编程

    • C++
    • Python
    • Shell
    • 小程序开发
  • 笔记

    • 《Git》
    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
  • 技术文档
  • Linux
  • Docker
  • GitHub
  • 博客搭建
  • 效用工具
  • 周易基础
  • 奇门遁甲
  • 收藏资源
  • 学习方法
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档
关于

daotoyi

静水流深
首页
  • 历史文明
  • 自我管理
  • 经济金融
  • 未来科技
  • 李笑来
  • 股票
  • 期货
  • 期权
  • 外盘
  • 量化
  • 区块
  • 认知
  • 数理
  • 收藏
  • 前端

    • JavaScript
    • TypeScript
  • 页面

    • HTML
    • CSS
  • 编程

    • C++
    • Python
    • Shell
    • 小程序开发
  • 笔记

    • 《Git》
    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
  • 技术文档
  • Linux
  • Docker
  • GitHub
  • 博客搭建
  • 效用工具
  • 周易基础
  • 奇门遁甲
  • 收藏资源
  • 学习方法
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档
关于
  • 技术文档

  • Linux

    • 127001和0000地址的区别
    • arp_route
    • CMD_ip_ifconfig
    • IP与子网掩码的关系
    • libc,glibc和libc关系
    • Linux 路由表详解及 route 命令详解
    • Linux 系统中成功恢复已删除的文件
    • Linux_boot
    • Linux_chroot
    • Linux_chroot_RecoveryPass
    • Linux_chroot_SSHlogin
    • Linux_cmd_echo
    • LInux_cmd_sed
    • Linux_FTP
    • Linux_ldconfig_PATH
    • Linux_locale
    • Linux_Login_Repeat
    • d_faillock
    • Linux_SSH
    • Linux_systemctl_systemd
    • Linux_systemd_serivice
      • [Unit]
      • [Service]
      • [Install]
    • Linux_Terminal_HotKey
    • Linux-cmd-tar
    • LinuxTerminalHotkey
    • linux后台运行、挂起、恢复进程相关命令
    • Linux认证
    • Net
    • Nginx 常用配置清单
    • Nginx通识
    • perf分析unixbench性能
    • ping请求错误分析
    • Remote_SSH&X11(Manjaro)
    • Remote_XDMCP(Redhat6)
    • Sql Or NoSql,看完这一篇你就懂了
    • systemd
    • Unicode_UTF
    • URL
    • 开源协议
    • 线程、进程、多线程、多进程和多任务
    • 正向代理与反向代理
  • Docker

  • GitHub

  • 博客搭建

  • 效用工具

  • 技术
  • Linux
daotoyi
2022-04-30
目录

Linuxsystemdserivice

Linux_systemd_serivice

[toc]

Systemd 添加自定义服务(开机自启动) (opens new window)

# basic

systemctl enable mysqld
systemctl disable mysqld
systemctl start mysqld
systemctl stop mysqld
systemctl restart mysqld
systemctl status mysqld
systemctl is-active sshd.service
systemctl kill mysqld  # 结束服务进程(服务无法停止时)
1
2
3
4
5
6
7
8

# example

systemctl cat sshd.service

/usr/lib/systemd/system/sshd.service

[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# [Unit]

  • Description:当前服务的简单描述

  • After:sshd.service 在 network.target 或 sshd-keygen.service 之后启动

  • Before:定义 sshd 应该在哪些服务之前启动

    • 注意:After 和 Before 字段只涉及启动顺序,不涉及依赖关系。
  • Wants:存在"弱依赖"关系,即如果"sshd-keygen.service"启动失败或停止运行,不影响 sshd.service 继续执行。

  • Requires:表示"强依赖"关系,即如果该服务启动失败或异常退出,那么sshd.service 也必须退出。

    • 注意:Wants 字段与 Requires 字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动。

# [Service]

  • EnvironmentFile:许多软件都有自己的环境参数文件,该字段指定文件路径

  • Type:定义启动类型。可设置:simple,exec,forking,oneshot,dbus,notify,idle

    • simple(设置了 ExecStart= 但未设置 BusName= 时的默认值):ExecStart 字段启动的进程为该服务的主进程
    • forking:ExecStart 字段的命令将以 fork() 方式启动,此时父进程将会退出,子进程将成为主进程
  • ExecStart:定义启动进程时执行的命令

  • 上面的例子中,启动 sshd 执行的命令是 /usr/sbin/sshd -D $OPTIONS,其中的变量 $OPTIONS 就来自 EnvironmentFile 字段指定的环境参数文件。类似的,还有如下字段:

  • ExecReload:重启服务时执行的命令

  • ExecStop:停止服务时执行的命令

  • ExecStartPre:启动服务之前执行的命令

  • ExecStartPost:启动服务之后执行的命令

  • ExecStopPost:停止服务之后执行的命令

  • RemainAfterExit:设为yes,表示进程退出以后,服务仍然保持执行

  • KillMode:定义 Systemd 如何停止服务,可以设置的值如下:

  • control-group(默认值):当前控制组里面的所有子进程,都会被杀掉

  • process:只杀主进程

  • mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号

  • none:没有进程会被杀掉,只是执行服务的 stop 命令

  • Restart:定义了退出后,Systemd 的重启方式。可以设置的值如下:

  • no(默认值):退出后不会重启

  • on-success:只有正常退出时(退出状态码为0),才会重启

  • on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启

  • on-abnormal:只有被信号终止和超时,才会重启

  • on-abort:只有在收到没有捕捉到的信号终止时,才会重启

  • on-watchdog:超时退出,才会重启

  • always:不管是什么退出原因,总是重启

  • RestartSec:表示 Systemd 重启服务之前,需要等待的秒数

所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行:EnvironmentFile=-/etc/sysconfig/sshd

# [Install]

  • WantedBy:表示该服务所在的 Target(服务组)
  • 常用的 Target 有两个:
    • 一个是 multi-user.target,表示多用户命令行状态;
    • 一个是 graphical.target,表示图形用户状态,它依赖于 multi-user.target

# e.g.(simple)

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

[Service]
Type=forking
ExecStart=/sbin/telnetd -p 23

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
上次更新: 2023/10/10, 14:48:21
Linux_systemctl_systemd
Linux_Terminal_HotKey

← Linux_systemctl_systemd Linux_Terminal_HotKey→

最近更新
01
置身事内
10-10
02
基础知识|八卦五行天干地支
10-08
03
基础知识|推算年月日时的干支
10-08
更多文章>
Theme by Vdoing | Copyright © 2021-2023 Daotoyi | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式