systemctl系统服务管理

  • systemctl简介
  • systemctl的管理单位-unit
    • 更新systemd
  • systemctl管理service
    • service服务文件基本格式
      • 自定义service文件
    • 查看开机启动列表
    • 设置开机启动
    • 取消开机启动
    • 启动服务
    • 关闭服务
    • 重启服务
    • 重新加载配置
    • 查看服务运行的状态
    • 检查service是否在启动状态
    • 检测unit单元是否为自动启动
    • 注销一个服务(service)/冻结服务
    • 取消注销服务(service)/解冻服务
    • 显示单元的手册页(前提是由unit提供)
    • 重新载入整个systemd的系统配置并扫描unit文件的变动
  • systemctl查看类操作
    • 查看指定服务的依赖关系
    • 列出服务
    • 列出所有已经加载的systemd `units`
    • 查看是否存在某个服务
    • `列出`指定状态的`服务`
      • 列出活跃(`active`)状态的服务(运行或退出)
      • 列出正在运行(`runing`)状态的服务
      • 列出所有`enabled`状态的服务
      • 列出所有`disabled`状态的服务
      • 列出错误的服务/列出状态为`failed`的服务
  • 查看systemd资源使用率
  • systemctl管理`target`
    • `multi-user.target`--文本界面的Linux系统
      • 将`图形界面`临时切换到`文本界面`
    • `graphical.target`--图形化界面的Linux系统
      • 将`文本界面`临时切换到`图形化界面`
    • 查看`下次启动时`加载的默认`target`
    • 永久设置`下次启动时`加载的默认`target`
  • `loginctl`---`systemd登录控制管理器`
    • 查看当前用户是否拥有执行systemd的权限
    • 查看当前用户的systemd配置信息
    • 查看用户的systemd的权限
    • 开启用户的systemd权限
    • 以普通用户执行systemd

systemctl简介

RHEL6版本及以前,采用的第一个进程都是init.第一个进程非常重要,因为第一个进程要负责后面所有进程的启动,后面其他进程能否启动成功取决于系统能不能正常运行.
通过init进程启动的后续进程都是串行启动的,串行启动就意味着速度慢.
Centos7以后系统默认使用systemctl管理系统服务,采用第一个进程叫做systemd.
该进程相比init来说,采用并行启动后续进程,并行启动意味着速度快.


systemctl的管理单位-unit

systemd管理的内容不仅service,systemd管理的单位是unit,service只是unit的一种.
我们重点关心service和target

更新systemd

# 更新systemd
yum upgrade systemd -y

systemctl管理service

service服务文件基本格式

服务文件存放在/usr/lib/systemd/system目录

service参数详解: https://blog.csdn.net/stone_fall/article/details/108630115

NetworkManager的文件示例

# 查看NetworkManager的service文件
[root@c8 ~]# cat /usr/lib/systemd/system/NetworkManager.service
[Unit]
# 定义的描述
Description=Network Manager
Documentation=man:NetworkManager(8)
# 依赖服务
Wants=network.target
# 在network-pre.targe启动完成后启动--前置条件
After=network-pre.target dbus.service
# 启动后启动的unit--后置条件
Before=network.target network.service[Service]
# 类型
Type=dbus
BusName=org.freedesktop.NetworkManager
# 需要加载的内容
ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
#ExecReload=/bin/kill -HUP $MAINPID
# 需要启动的程序
ExecStart=/usr/sbin/NetworkManager --no-daemon
Restart=on-failure
# NM doesn't want systemd to kill its children for it
# 意思是以进程方式关闭
KillMode=process
# 兼容性
CapabilityBoundingSet=CAP_NET_ADMIN CAP_DAC_OVERRIDE CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_MODULE CAP_AUDIT_WRITE CAP_KILL CAP_SYS_CHROOT
# 系统保护
ProtectSystem=true
# 保护家目录
ProtectHome=read-only# We require file descriptors for DHCP etc. When activating many interfaces,
# the default limit of 1024 is easily reached.
LimitNOFILE=65536[Install]
# 定义service放在哪个target里面
WantedBy=multi-user.target
# 服务的别名
Alias=dubs-org.freedesktop.NetworkManager.service
Also=NetworkManager-dispatcher.service# We want to enable NetworkManager-wait-online.service whenever this service
# is enabled. NetworkManager-wait-online.service has
# WantedBy=network-online.target, so enabling it only has an effect if
# network-online.target itself is enabled or pulled in by some other unit.
Also=NetworkManager-wait-online.service

自定义service文件

服务文件存放在/usr/lib/systemd/system目录

[Unit]
# 定义的描述
Description=Network Manager
[Service]
# 类型
Type=notify
# 以指定用户运行
User=user1
Group=user1
# 工作目录
#WorkingDirectory=/usr/bin/
# 需要启动的程序
ExecStart=/usr/bin/test.sh &
# 服务停止时的命令
ExecStop=killall test.sh
# 需要加载的内容
ExecReload=/bin/kill -HUP $MAINPID
# 是否自动重启
Restart=always
# 重启间隔时间
RestartSec=2s
[Install]
# 如果想要执行enable,必须写Install的内容
## 一般情况下都写multi-user.target
WantedBy=multi-user.target

查看开机启动列表

# systemctl list-unit-files |grep 系统服务名
[root@localhost ~]# systemctl list-unit-files | grep firewalld
firewalld.service                             disabled

设置开机启动

systemctl在enable、disable、mask子命令里面增加了–now选项,可以激活同时启动服务,激活同时停止服务等。

设置开启自启动就是把service文件/usr/lib/systemd/system/创建一个软链接到/etc/systemd/system/multi-user.target.wants/;
其中[Install]字段决定了,启动服务文件链接到/etc/systemd/system/的哪个target目录下.



# 设置开机启动并现在启动
## 相当于同时执行了systemctl start 服务名
systemctl enable --now firewalld# 查看服务启动状态
root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since 日 2021-09-05 23:12:15 CST; 8s agoDocs: man:firewalld(1)Main PID: 31773 (firewalld)CGroup: /system.slice/firewalld.service└─31773 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid9月 05 23:12:14 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
9月 05 23:12:15 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

取消开机启动

# 取消开机启动并现在就停止服务
systemctl disable --now firewalld
## 查看服务状态是否停止
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)9月 05 23:06:15 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
9月 05 23:06:16 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
9月 05 23:06:31 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...
9月 05 23:06:33 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.# 查看启动列表
[root@localhost ~]# systemctl list-unit-files |grep firewalld
firewalld.service                             disabled

启动服务

# 启动服务
systemctl start firewall

关闭服务

# 停止服务
systemctl stop firewall

重启服务

# 重启服务
systemctl restart 服务名

重新加载配置

# 重新加载配置
systemctl reload 服务名

查看服务运行的状态

# 查看服务状态
systemctl status 服务名

检查service是否在启动状态

写脚本是判断服务器是否启动很管用

# systemctl is-active 服务名
systemctl is-active NetworkManager
# active

检测unit单元是否为自动启动

写脚本时判断服务器是否开机自启很管用

# systemctl is-enabled 服务名
systemctl is-enabled firewalld
# enabled

注销一个服务(service)/冻结服务

systemctl mask 是注销服务的意思。
注销服务意味着:
该服务在系统重启的时候不会启动
该服务无法进行做systemctl start/stop操作
该服务无法进行systemctl enable/disable操作

systemctl mask firewalld

取消注销服务(service)/解冻服务

# 取消注销服务(service)/解冻服务
systemctl unmask firewalld

显示单元的手册页(前提是由unit提供)

systemctl help

重新载入整个systemd的系统配置并扫描unit文件的变动

# 重载改动过的服务
systemctl daemon-reload

systemctl查看类操作

查看指定服务的依赖关系

# 查看指定服务的倚赖关系
systemctl list-dependencies sshd

列出服务

列出所有已经加载的systemd units

# 列出所有已经加载的systemd units
systemctl
systemctl | grep docker.service

查看是否存在某个服务

# 列出所有service
systemctl list-units --type=service
systemctl --type=service# 查看是否存在某个服务
systemctl --type=service|grep 服务名

列出指定状态的服务

列出活跃(active)状态的服务(运行或退出)

# 列出所有active状态(运行或退出)的服务
systemctl list-units --type=service --state=active

列出正在运行(runing)状态的服务

# 列出正在运行(runing)状态的服务
systemctl list-units --type=service --state=running

列出所有enabled状态的服务

# 列出所有enabled状态的服务
systemctl list-unit-files --state=enabled
systemctl --state=enabled

列出所有disabled状态的服务

# 列出所有disable状态的服务
systemctl list-unit-files --state=disabled
systemctl --state=disabled

列出错误的服务/列出状态为failed的服务

# 列出错误的服务
systemctl --type service --state failed# 列出所有正在运行或failed状态的服务
systemctl list-units --type service --state running,failed
systemctl --type service --state running,failed

查看systemd资源使用率

systemd-cgtop

systemctl管理target

target是一个box(盒子),装了很多service(服务),可以理解为一组service(服务).
tartget是由服务组成的一类启动目标,systemd可以设置启动目标.
如果systemd指定了一个target作为启动目标,那么下次启动的时候就会启动target里面的所有服务.

multi-user.target–文本界面的Linux系统

tty0 和 tty1 默认是图形界面,临时切换文本界面后,tty0和tty1变成文本界面了

图形界面临时切换到文本界面

systemctl isolate multi-user.target
# 需要等待几分钟

graphical.target–图形化界面的Linux系统

文本界面临时切换到图形化界面

systemctl isolate graphical.target
# 需要等待几分钟

查看下次启动时加载的默认target

systemctl get-default

永久设置下次启动时加载的默认target

# 永久设置图形化界面启动
systemctl set-default graphical.target
# 永久设置文本界面启动
systemctl set-default multi-user.target

loginctlsystemd登录控制管理器

systemd登录控制管理器

查看当前用户是否拥有执行systemd的权限

# 查看当前用户是否允许执行systemd
[cesu-c8 devops ~]$ loginctl
SESSION  UID USER   SEAT TTY     9    0 root    # 查看哪些用户可以执行systemd
[cesu-c8 devops ~]$ loginctl list-users UID USER  0 root
1001 devops
2 users listed.

查看当前用户的systemd配置信息

[cesu-c8 devops ~]$ loginctl show-user

查看用户的systemd的权限

[cesu-c8 devops ~]$ loginctl user-status devops
devops (1001)Since: Tue 2021-11-02 19:58:07 CST; 1h 37min agoState: activeSessions: *7

开启用户的systemd权限

如果用户没有systemd权限,需要执行这个命令开启systemd权限,
否则做的systemd操作是不会生效的

loginctl enable-linger

以普通用户执行systemd

# 创建普通用户的systemd目录来存放service文件
mkdir ~/.config/systemd/user -p# 将service文件拷贝到~/.config/systemd/user目录# 普通用户执行systemd重新加载systemd配置
systemctl --user daemon-reload# 普通用户设置service文件开机自启
systemctl --user enable --now 文件名.service

systemctl系统服务管理相关推荐

  1. Linux 系统服务管理器(初始化系统/init system) -- systemd 及命令 systemctl 的详细介绍

    文章目录 一.系统服务管理器 systemd (一)systemd 的特性 (二)systemd 与 传统 init 系统的区别 (三)systemd 的目录和文件 (四)systemd 的 Unit ...

  2. Linux 系统服务管理(启动服务/停止服务/重启服务)的命令 - chkconfig/service/systemctl

    文章目录 一.使用命令 chkconfig 管理系统服务 (一)命令介绍 二.使用命令 service 管理系统服务 (一)命令介绍 (二)命令用法 1.启动服务 2.停止服务 3.重启服务 4.查看 ...

  3. Linux日常运维管理技巧(三)iptables规则备份和恢复、firewalld的9个zone、任务计划cron、chkconfig系统服务管理、添加服务命令、systemctl管理服务

    目录 Linux防火墙-netfilter iptables规则备份和恢复 Linux防火墙-firewalled firewalld的9个zone firewalld关于zone的操作 firewa ...

  4. systemd系统服务管理详解

    /lib/systemd/system        系统服务管理,开机启动,无需登录用户 /usr/lib/systemd/system    用户服务管理,用户登录后自动启动 1.systemd的 ...

  5. 【CentOS 7笔记46】,crondtab任务计划和chkconfig系统服务管理#

    2019独角兽企业重金招聘Python工程师标准>>> shallow丿ove Linux任务计划 crontab -u.-e.-l.-r 格式:分 时 日 月 周 user com ...

  6. linux 下的 service 和systemctl 服务管理方式

    linux 下的 service  和systemctl 服务管理方式 man service 得到:执行一个system V 风格的启动脚本 service - run a System V ini ...

  7. 项目管理工程师:第二章信息系统服务管理

    1.需要掌握的知识点 信息系统服务业的内容,主要是有关信息系统集成.工程监理方面的知识 我国的信息系统服务管理体系 IT审计.IT运营与服务的基本概念 信息系统集成资质管理和信息系统工程监理资质管理 ...

  8. 项目管理学习笔记二:信息系统服务管理

    项目管理学习笔记二:信息系统服务管理 2010-10-22 09:56:33 标签:信息系统 笔记 项目管理 服务 学习 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文 ...

  9. 系统集成项目管理工程师笔记(2)信息系统服务管理

    第二课 信息系统服务管理 1.我国现行的集中信息服务管理内容的形成和推进过程     (1)实施计算机信息系统集成资质管理制度     (2)推行项目经理制度     (3)推行信息系统监理制度 2. ...

最新文章

  1. 大量数据转移_大量数据
  2. 程序员面试金典 - 面试题 16.04. 井字游戏(计数)
  3. html1怎样插入视频,HTML视频教程,第1章 HTML初识
  4. 与吴恩达并肩战斗,她是颜值爆表的 AI 科学家!
  5. idea查看多级父类,实现的接口和子类的层次结构图
  6. mysql远程连接出错
  7. Docker for mac安装教程及国内镜像加速器配置
  8. 西边人西说测试,测试蓝本 | 一篇文章看懂什么是测试,测试是干什么的
  9. 文献阅读(167)NoC神经网络加速器
  10. Thunderbird 邮件签名三个实现方式
  11. 很棒的图片浏览器代码,源码研究
  12. 如何修改Linux的锁屏时间,调整Kali Linux的锁屏时间
  13. 【promise】什么是promise?
  14. 阿里云AMD服务器计算型实例规格族c6a实例CPU网络收发包云盘IOPS详解
  15. 【整车静态电流测试解决方案】
  16. 工作流程管理软件的系统架构与功能
  17. 车载导航系统软件测试,详解车载导航常见故障诊断及检测维修方法
  18. 国产3D打印数据准备软件重磅发布新版本,助力2万用户效率提升
  19. https://bbs.csdn.net/topics/60370072
  20. 荣耀猎人游戏本什么时候发布 荣耀猎人游戏本配置曝光

热门文章

  1. 连接Win10 的热点后提示没有网络
  2. 谷歌32位安装包_安卓12欲停止32位支持|瑞幸月内美股退市|一加新机或用挖孔双前摄...
  3. 2021-11-15 数据结构与算法简介
  4. 运营商掀窄带物联网投资热 智慧城市商机涌动
  5. 【数据结构】概述 - 逻辑结构与物理结构 - 附练习题
  6. Home Inventory for Mac(房屋库存信息整理软件)
  7. 小程序开发选择收货地址的交互实现
  8. 解决 Python百度云bypy包 授权失败问题
  9. Por Costel and the Match Gym - 100923H(经典种类并查集)
  10. JAVA错题总结收纳