systemctl命令和配置整理

2023-11-16

一、systemctl介绍

systemctl主要负责控制systemd系统和服务管理器。在ubuntu 、centos等一系列发行版中可用。可以方便的管理需要启动的服务等。可以实现开机自启动、出错重启和定时重启等等功能。

二、systemctl管理命令

下面有一个是错误的,正确为 systemctl daemon-reload #系统命令重新加载
在这里插入图片描述
下面是详细的

#语法
systemctl COMMAND name.service
#启动
systemctl start name.service
#停止
systemctl stop name.service
#重启
systemctl restart name.service
#查看状态
systemctl status name.service
#禁止自动和手动启动
systemctl mask name.service
#取消禁止
systemctl unmask name.service
#查看某服务当前激活与否的状态:
systemctl is-active name.service
#查看所有已经激活的服务:
systemctl list-units --type|-t service
#查看所有服务:
systemctl list-units --type service --all
#设定某服务开机自启,相当于chkconfig name on
systemctl enable name.service
#设定某服务开机禁止启动:相当于chkconfig name off
systemctl disable name.service
#查看所有服务的开机自启状态,相当于chkconfig --list
systemctl list-unit-files --type service
#用来列出该服务在哪些运行级别下启用和禁用:chkconfig –list name
ls /etc/systemd/system/*.wants/name.service
#查看服务是否开机自启:
systemctl is-enabled name.service
#列出失败的服务
systemctl --failed --type=service
#开机并立即启动或停止
systemctl enable --now postfix
systemctl disable  --now postfix
#查看服务的依赖关系:
systemctl list-dependencies name.service
#杀掉进程:
systemctl kill unitname
#重新加载配置文件
systemctl daemon-reload
#关机
systemctl halt、systemctl poweroff
#重启:
systemctl reboot
#挂起:
systemctl suspend
#休眠:
systemctl hibernate
#休眠并挂起:
systemctl hybrid-sleep

三、system unit文件格式

本文件一共有三个地方可以存放
/etc/systemd/system/
/usr/lib/systemd/system
/lib/systemd/system

1、unit 格式说明:

1、以 “#” 开头的行后面的内容会被认为是注释
2、相关布尔值,1、yes、on、true 都是开启,0、no、off、false 都是关闭
3、时间单位默认是秒,所以要用毫秒(ms)分钟(m)等须显式说明

2、service unit file文件通常由三部分组成:

1、[Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
2、[Service]:与特定类型相关的专用选项;此处为Service类型
3、[Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项

1)Unit段的常用选项:
可选项 描述
Description 对当前服务的简单描述
After 可以指定在哪些服务之后进行启动
Before 可以指定在哪些服务之前进行启动
Requires 可以指定服务依赖于哪些服务(这种依赖是"强依赖",一旦所依赖的服务异常,当前的服务也随之停止)
Wants 可以指定服务依赖于哪些服务(这种依赖是"弱依赖",即使所依赖的服务的启动情况不影响当前的服务是否启动)
Conflicts 定义units间的冲突关系
2)Service段的常用选项:
可选项 描述
EnvironmentFile 环境配置文件,用来指定当前服务启动的环境变量
ExecStart 指定服务启动时执行的命令或脚本
ExecStartPre 指定服务启动前执行的命令或脚本
ExecStartPost 指定服务启动后执行的命令或脚本
ExecStop 指明停止服务要运行的命令或脚本
ExecStopPost 指定服务停止之后执行的命令或脚本
RestartSec 指定服务在重启时等待的时间,单位为秒
ExecReload 指明重启服务要运行的命令或脚本
Restart 当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务,具体看下列类型
PrivateTmp 设定为yes时,会在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/目录
KillMode 指定停止的方式,具体见下面
Restart 指定重启时的类型,具体见下面
Type 指定启动类型,具体见下面

Type的可选值

Type可选项 描述
simple 指定ExecStart字段的进程为主进程
forking 指定以fork() 子进程执行ExecStart字段的进程
oneshot 执行一次
notify 启动后发送会发送通知信号通知systemd
idle 等其他任务结束后才运行

Restart的可选值

Restart可选项 描述
no 退出后不会重启
on-success 当进程正常退出时(退出码为0) 执行重启
on-failure 当进程不正常退出时(退出码不为0) 执行重启
on-abnormal 当被信号终止和超时执行重启
on-abort 当收到没有捕捉到的信号终止时执行重启
on-watchdog 当看门狗超时时执行重启
always 一直重启

KillMode可选值

KillMode可选项 描述
control-group 杀掉当前进程中所有的进程
process 杀掉当前进程的主进程
mixed 主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
none 不杀掉任何进程
3)Install段的常用选项:
Install可选项 描述
Alias 别名,可使用systemctl command Alias.service
RequiredBy 被哪些units所依赖,强依赖
WantedBy 被哪些units所依赖,弱依赖
Also 安装本服务的时候还要安装别的相关服务

Install一般填为WantedBy=multi-user.target

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启,使用命令 systemctl daemon-reload

四、一个例子设置frpc开机自启动或异常重启动

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=always
RestartSec=5s
ExecStart=/frp_0.41.0_linux_amd64/frpc -c /frp_0.41.0_linux_amd64/frpc.ini
ExecReload=/frp_0.41.0_linux_amd64/frpc reload -c /frp_0.41.0_linux_amd64/frpc.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target


将此文件命名为frps.service复制到/lib/systemd/system里面,然后重新加载systemctl配置文件

cp ./frpc.service /lib/systemd/system
systemctl enable frpc  
systemctl daemon-reload

查看状态,已经正常运行,当用kill -9强制杀死时5s后将会自动重启。
在这里插入图片描述
出现下表情况是说明有一个正在运行,可以杀死后5s后查看结果
在这里插入图片描述

参考
参考链接1
参考链接2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

systemctl命令和配置整理 的相关文章

  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • 当安装的 RPM 取代了另一个 RPM 时如何检测升级

    RPM scriptlet 被传入 1 https fedoraproject org wiki Packaging Scriptlets rd Packaging ScriptletSnippets Syntax 操作完成后 系统中将保留
  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 如何在递归调用函数时阻止 bash 创建子 shell

    这是一个计算阶乘的简单 shell 函数 bin bash function factorial if 1 lt 2 then echo 1 else echo 1 factorial 1 1 fi factorial 1 但我发现这个脚本
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • bash 中 :-(冒号破折号)的用法

    bash中这种风格的含义是什么 PUBLIC INTERFACE eth0 目的是什么 If PUBLIC INTERFACE存在且不为null 则返回其值 否则返回 eth0 实际上有一些记录在bash 手册页 http linux di
  • 如何制作一个 bash 脚本来同时创建 40 个程序实例?

    我是新来的bash and Linux 我编写了一个程序 我想创建多个同时实例 现在 我通过打开 10 个新终端 然后运行该程序 10 次 我运行的命令是php home calculatedata php 使用 bash 脚本执行此操作的
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • OSX bash 最小化窗口

    在 Mac 中并使用 bash shell 我想执行一个包含单个命令 启动 Jupyter Lab 的文件并立即最小化终端窗口 有没有办法在不安装第三方软件的情况下做到这一点 是的 只需使用osascript https ss64 com
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER

随机推荐

  • 新手必读:Arduino UNO R3教程,原理图,引脚图,详细介绍

    刚入门的学习Arduino的朋友都会有个疑问Arduino UNO R3是什么 为什么要从Arduino UNO R3开始学起 Arduino概述 Arduino是一个开放源码电子原型平台 拥有灵活 易用的硬件和软件 Arduino专为设计
  • JAVA--位运算

    java的位运算 什么是位运算 位运算符就是在二进制的情况下对bit位的运算 在计算机当中 数字都是由二进制构成 由一串0或1构成 一个字节是由八位0或1构成 所以一般情况下都是由八位构成 但是最高位都是符号位0为正数1为负数 比如 8 0
  • 解决用Fiddler抓包,网页显示你的连接不是专用/私密连接

    一 在Fiddler安装证书 1 Tools gt Options gt HTTPS gt 勾选Capture HTTPS CONNECTs gt 勾选Decrypt HTTPS trafic gt 弹窗一路yes 如果没有弹窗 则Acti
  • 【ClickHouse内核】对于分区、索引、标记和压缩数据的协同工作

    目录 概述 写入过程 生成分区目录 生成索引 生成标记和数据压缩文件 各个底层物理文件生成的过程 查询过程 借助索引文件降低扫描范围 借助标记文件降低解压数据的大小 数据标记与压缩数据块的对应关系 多个数据标记对应一个压缩数据块 一个数据标
  • 关于umask(权限掩码)的一些知识

    关于umask 权限掩码 的一些知识 前言 首先 我们先介绍一下关于umask的一些基础知识 以方便更深入的了解umask 定义 umask user file creation mode mask 用户文件创建权限掩码 是linux系统或
  • 手动开启O2, O3优化

    O2 O3优化可以提高程序运行效率 减少程序的运行时间 通过开启O2 O3优化 可以使STL与数组模拟的数据结构各种操作的时间达到相同 但如何手动开启 将下面两句话加到程序开头即可 pragma GCC optimize 2 pragma
  • NeoVim 安装

    一 NeoVim 是什么 hyperextensible Vim based text editor 译 基于超可扩展Vim的文本编辑器 二 如何安装NeoVim 1 brew 安装 注 brew 是 MacOS 上的包管理工具 即该命令一
  • TensorIR快速入门

    本文翻译自Blitz Course to TensorIR tvm 0 9 dev0 documentation TensorIR是一种用于深度学习程序的特定领域的语言 服务于两个广泛的目的 在各种硬件后端上转换和优化程序的实现 对自动向量
  • linux数据库的测试连接,你会遇到哪些问题?

    linux安装数据库及测试连接 第一步 第二步 第三步 第四步 本文将介绍用阿里云服务器安装两种版本的数据库 及连接时会遇到的问题 一种是5 6 一种是8 0 第一步 安装完成后 测试连接 service mysqld status 第二步
  • 当经历所有大厂的实习面试过后

    学而不思则罔 思而不学则殆 当走完基本所有大厂之后 发现其实每个公司对基础能力的考察都比较注重 只有基础掌握好了 把前端所有的知识能够一连串的理清 那么不管面试题是什么 都可以游刃有余的去回答 这里就是把我所有面试过的问题的一些底层原理阐述
  • 用Docker部署自己的JupyterHub

    话在前头 用 Docker 部署 JupyterLab 感觉是部署 JupyterLab 最方便的方式了 官方提供了很多可选的镜像 也可以自己从 jupyter base notebook 中继续打包 镜像启动命令加上 NotebookAp
  • 使用tf.keras实现 softmax多分类的代码

    softmax多分类 多分类问题的关键在于输出10个概率值 然后使用softmax进行激活 softmax激活函数 能把10个输出变为10个概率分布 然后这10个概率的和为1 1 对数几率回归 解决的是 二分类的问题 对于 多个选项 的问题
  • [云原生专题-42]:K8S - 核心概念 - placeholder-有状态服务

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 placeholder 作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址
  • 讲一点点自动驾驶技术(1)概论

    讲一点点自动驾驶技术 1 概论 作为一个自动驾驶小菜鸟工程师 小Q入门才两三年时间 最近空闲时间比较多 利用这个平台把自己对于无人驾驶技术所看所学的东西在这进行一个整理 一来自己看着方便 二来供大家交流学习 Xiao Xi ps 如果大家觉
  • github 上传和拉取 support for passward authentication was removed...

    参考下面这篇文章 remote Support for password authentication was removed on August 13 2021 IT博客技术分享的博客 CSDN博客 但是记得把repositories和
  • Java教程【01.02】Java引用类型数组和继承的意义

    Java引用类型数组和继承的意义 Java引用类型数组和继承是Java中常用的两个概念 它们在编程中起到重要的作用 在本教程中 我们将讨论Java引用类型数组的使用以及继承的意义 并提供相关的示例 步骤1 创建引用类型数组 Java中的引用
  • AI2.0:十年之后我们还能做什么

    AI大模型展现惊人能力 有望成为下一代通用技术平台 2010年 麻省理工大学阿齐跌鲁教授等提出了科技发展如何影响人类就业的分析框架 当前 随着以GPT 4为代表的大语言模型的出现 A1开始具备文本生成 语言理解 知识问答 逻辑推理等能力 A
  • 代理HTTP使用不当会出现哪些问题?如何正确使用代理服务?

    代理HTTP是一种常见的网络代理方式 它为客户端和服务器之间提供中间层 转发上下游的请求和响应 正确使用代理HTTP可以提高采集效率 增加网络安全性 加速网络速度 保护用户隐私 但是 使用不当就难以达到预期的效果 在使用代理HTTP服务器时
  • 【VMware】虚拟机中Ubuntu无法连接网络的有效解决办法

    1 Ubuntu网络设置 依次单击 System Settings gt Network gt Wired gt Options 如下图所示 依次选择 General 勾选如下图所示的单选框 最后点击 Save 如下图所示 依次选择 IPv
  • systemctl命令和配置整理

    一 systemctl介绍 systemctl主要负责控制systemd系统和服务管理器 在ubuntu centos等一系列发行版中可用 可以方便的管理需要启动的服务等 可以实现开机自启动 出错重启和定时重启等等功能 二 systemct