我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux的systemd怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux的systemd怎么使用

今天小编给大家分享一下Linux的systemd怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

systemd 是 Linux 系统的一组基本构建块。它提供了一个以 PID 1 运行的系统和服务管理器,并启动了系统的其余部分。 提供了积极的并行化功能,使用套接字和 D-Bus 激活来启动服务,按需启动守护程序,使用Linux控制组跟踪进程。

Linux的systemd怎么使用

使用控制组管理进程

systemd 和 SystemV 之间的一个主要差异是管理进程的方式。SystemV 将每个进程视作一个独立的实体。systemd 将相关的进程集中到一个控制组,简写做 cgroup,并将控制组作为一个整体管理系统资源。这意味着资源能够基于应用管理,而不是由组成应用的各个进程来管理。

控制组的控制单元称作切片单元slice unit。切片是允许 systemd 以树状格式控制程序次序,从而简化管理的概念化。

查看控制组

我将从一些允许你查看不同类型控制组信息的命令开始。 systemctl status 命令显示一个特定服务的切片信息,包括服务的切片。这个例子展示了 at 守护进程:

[root@testvm1 ~]# systemctl status atd.service● atd.service - Deferred execution scheduler    Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)    Active: active (running) since Wed 2020-09-23 12:18:24 EDT; 1 day 3h ago      Docs: man:atd(8)  Main PID: 1010 (atd)     Tasks: 1 (limit: 14760)    Memory: 440.0K       CPU: 5ms    CGroup: /system.slice/atd.service            └─1010 /usr/sbin/atd -fSep 23 12:18:24 testvm1.both.org systemd[1]: Started Deferred execution scheduler.[root@testvm1 ~]#

这是一个我感到 systemd 比 SystemV 和旧的初始化程序更好用的原因的绝佳示例。这里的信息远比 SystemV 能够提供的丰富。CGroup 项包括的层级结构中,system.slice 是 systemd(PID 1),atd.service 在下一层,是 system.slice 的一部分。CGroup 项的第二行还显示了进程 ID(PID)和启动守护进程使用的命令。

systemctl 命令可以列出多个控制组项,--all 参数列出所有的切片,包括当前没有激活的切片:

[root@testvm1 ~]# ps xawf -eo pid,user,cgroup,args   PID USER     CGROUP                      COMMAND     2 root     -                           [kthreadd]     3 root     -                            \_ [rcu_gp]     4 root     -                            \_ [rcu_par_gp]     6 root     -                            \_ [kworker/0:0H-kblockd]     9 root     -                            \_ [mm_percpu_wq]    10 root     -                            \_ [ksoftirqd/0]    11 root     -                            \_ [rcu_sched]    12 root     -                            \_ [migration/0]    13 root     -                            \_ [cpuhp/0]    14 root     -                            \_ [cpuhp/1]625406 root     -                            \_ [kworker/3:0-ata_sff]625409 root     -                            \_ [kworker/u8:0-events_unbound]     1 root     0::/init.scope              /usr/lib/systemd/systemd --switched-root --system --deserialize 30   588 root     0::/system.slice/systemd-jo /usr/lib/systemd/systemd-journald   599 root     0::/system.slice/systemd-ud /usr/lib/systemd/systemd-udevd   741 root     0::/system.slice/auditd.ser /sbin/auditd   743 root     0::/system.slice/auditd.ser  \_ /usr/sbin/sedispatch   764 root     0::/system.slice/ModemManag /usr/sbin/ModemManager   765 root     0::/system.slice/NetworkMan /usr/sbin/NetworkManager --no-daemon   767 root     0::/system.slice/irqbalance /usr/sbin/irqbalance --foreground   779 root     0::/system.slice/mcelog.ser /usr/sbin/mcelog --ignorenodev --daemon --foreground   781 root     0::/system.slice/rngd.servi /sbin/rngd -f   782 root     0::/system.slice/rsyslog.se /usr/sbin/rsyslogd -n   893 root     0::/system.slice/sshd.servi sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups  1130 root     0::/user.slice/user-0.slice  \_ sshd: root [priv]  1147 root     0::/user.slice/user-0.slice  |   \_ sshd: root@pts/0  1148 root     0::/user.slice/user-0.slice  |       \_ -bash  1321 root     0::/user.slice/user-0.slice  |           \_ screen  1322 root     0::/user.slice/user-0.slice  |               \_ SCREEN  1323 root     0::/user.slice/user-0.slice  |                   \_ /bin/bash498801 root     0::/user.slice/user-0.slice  |                   |   \_ man systemd.resource-control498813 root     0::/user.slice/user-0.slice  |                   |       \_ less  1351 root     0::/user.slice/user-0.slice  |                   \_ /bin/bash123293 root     0::/user.slice/user-0.slice  |                   |   \_ man systemd.slice123305 root     0::/user.slice/user-0.slice  |                   |       \_ less  1380 root     0::/user.slice/user-0.slice  |                   \_ /bin/bash625412 root     0::/user.slice/user-0.slice  |                   |   \_ ps xawf -eo pid,user,cgroup,args625413 root     0::/user.slice/user-0.slice  |                   |   \_ less246795 root     0::/user.slice/user-0.slice  |                   \_ /bin/bash625338 root     0::/user.slice/user-0.slice  |                       \_ /usr/bin/mc -P /var/tmp/mc-root/mc.pwd.246795625340 root     0::/user.slice/user-0.slice  |                           \_ bash -rcfile .bashrc  1218 root     0::/user.slice/user-1000.sl  \_ sshd: dboth [priv]  1233 dboth    0::/user.slice/user-1000.sl      \_ sshd: dboth@pts/1  1235 dboth    0::/user.slice/user-1000.sl          \_ -bash  1010 root     0::/system.slice/atd.servic /usr/sbin/atd -f  1011 root     0::/system.slice/crond.serv /usr/sbin/crond -n  1098 root     0::/system.slice/lxdm.servi /usr/sbin/lxdm-binary  1106 root     0::/system.slice/lxdm.servi  \_ /usr/libexec/Xorg -background none :0 vt01 -nolisten tcp -novtswitch -auth /var/run/lxdm/lxdm-:0.auth370621 root     0::/user.slice/user-1000.sl  \_ /usr/libexec/lxdm-session370631 dboth    0::/user.slice/user-1000.sl      \_ xfce4-session370841 dboth    0::/user.slice/user-1000.sl          \_ /usr/bin/ssh-agent /bin/sh -c exec -l bash -c "/usr/bin/startxfce4"370911 dboth    0::/user.slice/user-1000.sl          \_ xfwm4 --display :0.0 --sm-client-id 2dead44ab-0b4d-4101-bca4-e6771f4a8ac2370930 dboth    0::/user.slice/user-1000.sl          \_ xfce4-panel --display :0.0 --sm-client-id 2ce38b8ef-86fd-4189-ace5-deec1d0e0952370942 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libsystray.so 6 23068680 systray Notification Area Area where notification icons appear370943 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libpulseaudio-plugin.so 8 23068681 pulseaudio PulseAudio Plugin Adjust the audio volume of the PulseAudio sound system370944 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libxfce4powermanager.so 9 23068682 power-manager-plugin Power Manager Plugin Display the battery levels of your devices and control the brightness of your display370945 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libnotification-plugin.so 10 23068683 notification-plugin Notification Plugin Notification plugin for the Xfce panel370948 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libactions.so 14 23068684 actions Action Buttons Log out, lock or other system actions370934 dboth    0::/user.slice/user-1000.sl          \_ Thunar --sm-client-id 2cfc809d8-4e1d-497a-a5c5-6e4fa509c3fb --daemon370939 dboth    0::/user.slice/user-1000.sl          \_ xfdesktop --display :0.0 --sm-client-id 299be0608-4dca-4055-b4d6-55ec6e73a324370962 dboth    0::/user.slice/user-1000.sl          \_ nm-applet

关于这个数据,第一个需要注意的是数据显示了 UID 0(root)和 UID 1000 的用户切片,UID 1000 是我登录的用户。这里列出了组成每个切片的切片部分,而不是服务。还说明了每个用户登录时都会为其创建一个切片,这为将一个用户的所有任务作为单个控制组项进行管理提供了一种方式。

探索控制组的层次结构

目前为止一切顺利,但是控制组是分层的,所有的服务单元作为其中一个控制组的成员运行。要查看这个层次结构很简单,使用一个旧命令和 systemd 的一个新命令即可。

ps 命令可以用于映射进程的和其所处的控制组层次。注意使用 ps 命令时需要指明想要的数据列。我大幅削减了下面命令的输出数量,但是试图保留足够的数据,以便你能够对自己系统上的输出有所感受:

[root@testvm1 ~]# systemctl -t slice --all UNIT                             LOAD   ACTIVE   SUB    DESCRIPTION                     -.slice                          loaded active   active Root Slice                       system-getty.slice               loaded active   active system-getty.slice               system-lvm2\x2dpvscan.slice      loaded active   active system-lvm2\x2dpvscan.slice     system-modprobe.slice            loaded active   active system-modprobe.slice           system-sshd\x2dkeygen.slice      loaded active   active system-sshd\x2dkeygen.slice     system-systemd\x2dcoredump.slice loaded inactive dead   system-systemd\x2dcoredump.slice system-systemd\x2dfsck.slice     loaded active   active system-systemd\x2dfsck.slice     system.slice                     loaded active   active System Slice                     user-0.slice                     loaded active   active User Slice of UID 0             user-1000.slice                  loaded active   active User Slice of UID 1000           user.slice                       loaded active   active User and Session Slice          LOAD   = Reflects whether the unit definition was properly loaded.ACTIVE = The high-level unit activation state, i.e. generalization of SUB.SUB    = The low-level unit activation state, values depend on unit type.11 loaded units listed.To show all installed unit files use 'systemctl list-unit-files'.[root@testvm1 ~]#

你可以使用 systemd-cgls 命令查看整个层次结构,这个命令不需要任何的复杂参数,更加简单。

我也大幅缩短了这个树状结构,但是保留了足够多的输出,以便你能够了解在自己的系统上执行这个命令时应该看到的数据总量和条目类型。我在我的一个虚拟机上执行了这个命令,输出大概有 200 行;我的主要工作站的输出大概有 250 行。

[root@testvm1 ~]# systemd-cglsControl group /:-.slice├─user.slice│ ├─user-0.slice│ │ ├─session-1.scope│ │ │ ├─  1130 sshd: root [priv]│ │ │ ├─  1147 sshd: root@pts/0│ │ │ ├─  1148 -bash│ │ │ ├─  1321 screen│ │ │ ├─  1322 SCREEN│ │ │ ├─  1323 /bin/bash│ │ │ ├─  1351 /bin/bash│ │ │ ├─  1380 /bin/bash│ │ │ ├─123293 man systemd.slice│ │ │ ├─123305 less│ │ │ ├─246795 /bin/bash│ │ │ ├─371371 man systemd-cgls│ │ │ ├─371383 less│ │ │ ├─371469 systemd-cgls│ │ │ └─371470 less│ │ └─user@0.service …│ │   ├─dbus-broker.service│ │   │ ├─1170 /usr/bin/dbus-broker-launch --scope user│ │   │ └─1171 dbus-broker --log 4 --controller 12 --machine-id 3bccd1140fca488187f8a1439c832f07 --max-bytes 100000000000000 --max-fds 25000000000000 --max->│ │   ├─gvfs-daemon.service│ │   │ └─1173 /usr/libexec/gvfsd│ │   └─init.scope│ │     ├─1137 /usr/lib/systemd/systemd --user│ │     └─1138 (sd-pam)│ └─user-1000.slice│   ├─user@1000.service …│   │ ├─dbus\x2d:1.2\x2dorg.xfce.Xfconf.slice│   │ │ └─dbus-:1.2-org.xfce.Xfconf@0.service│   │ │   └─370748 /usr/lib64/xfce4/xfconf/xfconfd│   │ ├─dbus\x2d:1.2\x2dca.desrt.dconf.slice│   │ │ └─dbus-:1.2-ca.desrt.dconf@0.service│   │ │   └─371262 /usr/libexec/dconf-service│   │ ├─dbus-broker.service│   │ │ ├─1260 /usr/bin/dbus-broker-launch --scope user│   │ │ └─1261 dbus-broker --log 4 --controller 11 --machine-id│   │ └─gvfs-mtp-volume-monitor.service│   │   └─370987 /usr/libexec/gvfs-mtp-volume-monitor│   ├─session-3.scope│   │ ├─1218 sshd: dboth [priv]│   │ ├─1233 sshd: dboth@pts/1│   │ └─1235 -bash│   └─session-7.scope│     ├─370621 /usr/libexec/lxdm-session│     ├─370631 xfce4-session│     ├─370805 /usr/bin/VBoxClient --clipboard│     ├─370806 /usr/bin/VBoxClient --clipboard│     ├─370817 /usr/bin/VBoxClient --seamless│     ├─370818 /usr/bin/VBoxClient --seamless│     ├─370824 /usr/bin/VBoxClient --draganddrop│     ├─370825 /usr/bin/VBoxClient --draganddrop│     ├─370841 /usr/bin/ssh-agent /bin/sh -c exec -l bash -c "/usr/bin/startxfce4"│     ├─370910 /bin/gpg-agent --sh --daemon --write-env-file /home/dboth/.cache/gpg-agent-info│     ├─370911 xfwm4 --display :0.0 --sm-client-id 2dead44ab-0b4d-4101-bca4-e6771f4a8ac2│     ├─370923 xfsettingsd --display :0.0 --sm-client-id 261b4a437-3029-461c-9551-68c2c42f4fef│     ├─370930 xfce4-panel --display :0.0 --sm-client-id 2ce38b8ef-86fd-4189-ace5-deec1d0e0952│     ├─370934 Thunar --sm-client-id 2cfc809d8-4e1d-497a-a5c5-6e4fa509c3fb --daemon│     ├─370939 xfdesktop --display :0.0 --sm-client-id 299be0608-4dca-4055-b4d6-55ec6e73a324└─system.slice ├─rngd.service │ └─1650 /sbin/rngd -f ├─irqbalance.service │ └─1631 /usr/sbin/irqbalance --foreground ├─fprintd.service │ └─303383 /usr/libexec/fprintd ├─systemd-udevd.service │ └─956 /usr/lib/systemd/systemd-udevd ├─systemd-journald.service │ └─588 /usr/lib/systemd/systemd-journald ├─atd.service │ └─1010 /usr/sbin/atd -f ├─system-dbus\x2d:1.10\x2dorg.freedesktop.problems.slice │ └─dbus-:1.10-org.freedesktop.problems@0.service │   └─371197 /usr/sbin/abrt-dbus -t133 ├─sshd.service │ └─893 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups ├─vboxservice.service │ └─802 /usr/sbin/VBoxService -f ├─crond.service │ └─1011 /usr/sbin/crond -n ├─NetworkManager.service │ └─765 /usr/sbin/NetworkManager --no-daemon ├─switcheroo-control.service │ └─787 /usr/libexec/switcheroo-control

这个树状视图显示了所有的用户和系统切片,以及每个控制组内正在运行的服务和程序。注意叫作 scope(范围)的单元,它将相关的程序组成一个管理单元,在上面列出的结果中就是 user-1000.sliceuser-1000.slice/session-7.scope 控制组包含了 GUI 桌面程序层次结构,以 LXDM 显示管理器会话和其所有的子任务开始,包括像 Bash 命令行解释器和 Thunar GUI 文件管理器之类的程序。

配置文件中不定义范围单元,而是作为启动相关程序组的结果程序化生成的。范围单元不创建或启动作为控制组的组成部分运行的进程。范围内的所有进程都是平等的,没有内部的层次结构。一个范围的生命周期在第一个进程创建时开始,在最后一个进程销毁时结束。

在你的桌面打开多个窗口,比如终端模拟器、LibreOffice、或者任何你想打开的,然后切换到一个可用的虚拟控制台,启动类似 top 或 Midnight Commander 的程序。在主机运行 systemd-cgls 命令,留意整体的层次结构和范围单元。

systemd-cgls 命令提供的控制组层次结构表示(以及组成控制组单元的细节),比我见过的其他任何指令都要完整。和 ps 命令提供的输出相比,我喜欢 systemd-cgls 命令更简洁的树形表示。

以上就是“Linux的systemd怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux的systemd怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux的systemd怎么使用

今天小编给大家分享一下Linux的systemd怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。systemd 是 L
2023-06-27

systemd中的命令怎么使用

这篇文章主要介绍“systemd中的命令怎么使用”,在日常操作中,相信很多人在systemd中的命令怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”systemd中的命令怎么使用”的疑惑有所帮助!接下来
2023-06-04

Linux系统工具Systemd怎么用

小编给大家分享一下Linux系统工具Systemd怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程
2023-06-27

怎么使用Linux终端管理systemd单元的工具chkservice

今天就跟大家聊聊有关怎么使用Linux终端管理systemd单元的工具chkservice,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。systemd 意即系统守护进程system
2023-06-16

Linux中systemd target命令的使用方法

这篇文章主要讲解了“Linux中systemd target命令的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中systemd target命令的使用方法”吧!(1)怎样
2023-06-12

怎么使用systemd timer替代cronjob

今天小编给大家分享一下怎么使用systemd timer替代cronjob的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概述
2023-07-05

Linux下如何使用Systemd编译Mysql5.7.11

这篇文章将为大家详细讲解有关Linux下如何使用Systemd编译Mysql5.7.11,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多
2023-06-27

Linux Systemd Crontab之间的区别和使用场景

Linux系统中有两个常用的任务调度工具,分别是Systemd和Crontab。它们之间有以下区别和使用场景:1. Systemd:Systemd是Linux系统的初始化系统,负责启动和管理系统上的所有进程。它可以使用timer来调度任务,
2023-10-09

linux如何使用restic和systemd自动备份

小编给大家分享一下linux如何使用restic和systemd自动备份,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如果你还没有安装 restic,请注意它在官
2023-06-16

在Linux系统下使用Systemd定时器的基础是什么

这篇文章的内容主要围绕在Linux系统下使用Systemd定时器的基础是什么进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!下面介绍用于调度任务的Sy
2023-06-26

怎么在Linux上从NetworkManager切换为systemd-network

这篇文章主要讲解了“怎么在Linux上从NetworkManager切换为systemd-network”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Linux上从NetworkMan
2023-06-16

Linux学习之Ubuntu 20使用systemd管理OpenResty服务

sudo cat /etc/issue可以看到操作系统的版本是Ubuntu 20.04.4 LTS,sudo lsb_release -r可以看到版本是20.04,sudo uname -r可以看到内核版本是5.5.19,sudo make
2023-08-30

systemd进程管理工具怎么用

systemd进程管理工具怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 1. systemd介绍systemd是目前Linux系统上主要的系统守护进程管
2023-06-15

如何在Linux系统中使用Systemd管理Crontab任务

要在Linux系统中使用Systemd管理Crontab任务,需要执行以下步骤:1. 创建一个新的Systemd服务单元文件,可以使用任何文本编辑器来创建一个以.service为后缀的文件,比如mycron.service。```sudo
2023-10-09

怎么用systemd来管理启动项

这篇文章主要讲解了“怎么用systemd来管理启动项”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用systemd来管理启动项”吧!了解 systemd 是怎样决定服务启动顺序,即使它本
2023-06-15

Linux中使用Systemd和Crontab实现日志轮转的方法和步骤

在Linux中,可以使用Systemd和Crontab来实现日志轮转。下面是使用这两个工具来实现日志轮转的方法和步骤:使用Systemd实现日志轮转的步骤:1. 创建一个Systemd服务单元文件,例如`/etc/systemd/syste
2023-10-09

如何使用Systemd和Crontab在Linux系统中定时执行脚本

在Linux系统中,可以使用Systemd和Crontab来定时执行脚本。以下是使用这两种方法的步骤:1. 使用Systemd定时执行脚本:- 创建一个.service文件,比如my_script.service:```[Unit]Desc
2023-10-09

编程热搜

目录