首页 > 系统相关 >linux systemd启动

linux systemd启动

时间:2023-05-10 22:47:27浏览次数:44  
标签:systemd target service 启动 .. linux wr8 socket

1. 常用基本命令

列出所有正在运行服务
systemctl list-units --type=service
systemctl list-units --type=service --all 可以列出已经loaded但已经不活动的服务

列出所有target
systemctl list-units --type=target

列出所有socket
systemctl list-units --type=socket

列出所有单元文件
systemctl list-unit-files

列出一个unit的依赖
systemctl list-dependencies  xx.service

缺省target的设置和获取
获取
systemctl get-default
设置
systemctl set-default  graphical.target

服务的start/stop操作
systemctl start xx.service  ---> service xx.service start
systemctl stop xx.service
systemctl restart xx.service

2. /etc/systemd 与/lib/systemd的关系

比如在/etc/systemd/system 目录下有multi-user.target.wants,在/lib/systemd/system目录下也有一个multi-user.target.wants

$ pwd
/etc/systemd/system/multi-user.target.wants
$ ls -l
lrwxrwxrwx 1 wr8 wr8 47  2? 26 16:36 remote-fs.target -> ../../../../lib/systemd/system/remote-fs.target
lrwxrwxrwx 1 wr8 wr8 55  2? 26 16:36 systemd-networkd.service -> ../../../../lib/systemd/system/systemd-networkd.service
...
$pwd
/lib/systemd/system/multi-user.target.wants
$ ls -l
total 0
lrwxrwxrwx 1 wr8 wr8 15  2? 26 16:36 dbus.service -> ../dbus.service
lrwxrwxrwx 1 wr8 wr8 15  2? 26 16:36 getty.target -> ../getty.target
lrwxrwxrwx 1 wr8 wr8 33  2? 26 16:36 systemd-ask-password-wall.path -> ../systemd-ask-password-wall.path
lrwxrwxrwx 1 wr8 wr8 25  2? 26 16:36 systemd-logind.service -> ../systemd-logind.service
lrwxrwxrwx 1 wr8 wr8 39  2? 26 16:36 systemd-update-utmp-runlevel.service -> ../systemd-update-utmp-runlevel.service
lrwxrwxrwx 1 wr8 wr8 32  2? 26 16:36 systemd-user-sessions.service -> ../systemd-user-sessions.service

这两个目录是什么关系?

对于multi-user.target来说,需要把/lib/systemd/system/multi-user.target.wants 下面的service和/etc/systemd/system/multi-user.target.wants下面的service都执行了。
这两个目录是叠加的关系。

如果想disable那些位于/etc/systemd/system/multi-user.target.wants下面的服务,只需要执行 systemctl disable xx.service即可,执行的结果是删除xx.service 在/etc/systemd/system/multi-user.target.wants下面的软连接。
disable之后,如果想enable这个服务,需要执行systemctl enable xx.service

如果想disable那些位于/lib/systemd/system/multi-user.target.wants下面的服务,需要执行 systemctl mask yy.service即可,执行的结果是在/etc/systemd/system目录下面创建一个软连接,
yy.service -----> /dev/null

mask之后,如果想重新生成这个服务,需要执行systemctl unmask yy.service

3. target之间的依赖关系
他们之间的依赖关系大致如下:
graphical.target->
multi-user.target->
basic.target->
sysinit.target->
local-fs.target

看一下这些target的定义:
graphical.target
[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes

multi-user.target
[Unit]
Description=Multi-User System
Documentation=man:systemd.special(7)
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes

basic.target
[Unit]
Description=Basic System
Documentation=man:systemd.special(7)
Requires=sysinit.target
Wants=sockets.target timers.target paths.target slices.target
After=sysinit.target sockets.target paths.target slices.target

# We support /var, /tmp, /var/tmp, being on NFS, but we don't pull in
# remote-fs.target by default, hence explicitly pull /var in here.
RequiresMountsFor=/var /tmp /var/tmp

sysinit.target
[Unit]
Description=System Initialization
Documentation=man:systemd.special(7)
Conflicts=emergency.service emergency.target
Wants=local-fs.target swap.target
After=local-fs.target swap.target emergency.service emergency.target

local-fs.target
[Unit]
Description=Local File Systems
Documentation=man:systemd.special(7)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs-pre.target
OnFailure=emergency.target
OnFailureJobMode=replace-irreversibly

我们注意到"basic.target" wants "sockets.target"
看一看sockets.target.wants就知道那些socket是需要的了,如果不想启动某个socket,在sockets.target.wants直接删除软连接就可以了。
当然也可以执行systemctl mask zz.socket

wr8@pek-gwang2-d2:~/workspace/am335x_no_dbg/export/dist/lib/systemd/system$ ls -l sockets.target.wants/
total 0
lrwxrwxrwx 1 wr8 wr8 14  2? 26 16:36 dbus.socket -> ../dbus.socket
lrwxrwxrwx 1 wr8 wr8 16  2? 26 16:36 syslog.socket -> ../syslog.socket
lrwxrwxrwx 1 wr8 wr8 25  2? 26 16:36 systemd-initctl.socket -> ../systemd-initctl.socket
lrwxrwxrwx 1 wr8 wr8 32  2? 26 16:36 systemd-journald-audit.socket -> ../systemd-journald-audit.socket
lrwxrwxrwx 1 wr8 wr8 34  2? 26 16:36 systemd-journald-dev-log.socket -> ../systemd-journald-dev-log.socket
lrwxrwxrwx 1 wr8 wr8 26  2? 26 16:36 systemd-journald.socket -> ../systemd-journald.socket
lrwxrwxrwx 1 wr8 wr8 31  2? 26 16:36 systemd-udevd-control.socket -> ../systemd-udevd-control.socket
lrwxrwxrwx 1 wr8 wr8 30  2? 26 16:36 systemd-udevd-kernel.socket -> ../systemd-udevd-kernel.socket

4. 性能分析
systemd-analyze time 用于显示内核和普通用户空间启动时所花的时间。

systemd-analyze blame 会列出所有正在运行的单元,按从初始化开始到当前所花的时间排序,通过这种方式你就知道哪些服务在引导过程中要花较长时间来启动。

systemd-analyze verify 显示在所有系统单元中是否有语法错误。

systemd-analyze plot 可以用来把整个引导过程写入一个SVG格式文件里。整个引导过程非常长不方便阅读,所以通过这个命令我们可以把输出写入一个文件,之后再查看和分析。下面这个命令就是做这个。

如果发现主机上没有这些命令,那就需要安装systemd-analyze.rpm。

5. 不想使用systemd怎么办?
wrlinux7/8默认使用systemd作为/sbin/init

如果不想使用systemd, 在配置工程时,请使用 --with-init=sysvinit 选项。
比如:
${WindRiver}/wrlinux-8/wrlinux/configure --enable-reconfig --enable-board=ti-am335x --enable-kernel=preempt-rt --enable-rootfs=glibc-small+debug --enable-build=production --with-layer=${SOMEWHERE}/ti-am335x-snd --with-init=sysvinit

如果想显式指明使用systemd, 在配置工程时,需使用 --with-init=systemd 选项。

标签:systemd,target,service,启动,..,linux,wr8,socket
From: https://www.cnblogs.com/dinmin/p/17389562.html

相关文章

  • Linux xfs文件系统stat命令Birth字段为空的原因探究
    在Linux平台找出某个目录下创建时间最早的文件,测试验证脚本结果是否准确的过程中发现一个很有意思的现象,stat命令在一些平台下Birth字段有值,而在一些平台则为空值,如下所示:RHEL8.7下,XFS文件系统[mysql@mysqlu02 ~]$ more /etc/redhat-release Red Hat Enterprise Linux......
  • linux引导过程分析
    1Linux引导过程1.主机加电后,系统首先加载BIOS,这个BIOS是烧录在主板上的ROM芯片上的。2.BIOS启动后,执行了一些例如开机自检,硬件初始化等工作,然后读取硬盘MBR分区的第一个扇区(前512字节),其中前446字节储存了一个小程序叫做bootloader,中间的64字节是磁盘分区表,最后两个字节是......
  • linux 中sed命令实现大小写的转换
     001、大写转换为小写root@DESKTOP-IDT9S0E:/home/test#lsa.txtroot@DESKTOP-IDT9S0E:/home/test#cata.txt##测试数据AWFhhddmehDGEE345efffrrthhkkroot@DESKTOP-IDT9S0E:/home/test#sed's/[a-z]/\U&/g'a.txt##U为大写AWFH......
  • 在Linux 系统中如何复制当前目录和子目录中的 .jpg 文件到当前位置
    在Linux系统中,你可以使用find命令来查找当前目录和子目录中的.mp4和.jpg文件,然后使用cp命令将它们复制到当前位置。下面是一个示例命令:find.-typef\(-name"*.mp4"-o-name"*.jpg"\)-execcp{}.\;这个命令使用了find命令来查找文件。find.表示在当前......
  • Linux网络编程(学习笔记)
    文中python代码来自老师的教学代码,感谢我的老师~~1.linux网络数据处理过程:网卡->协议栈->网络1)应用层输出数据socket层->协议层->接口层2)应用层接收数据内核层(接口层->协议层->插口层)->用户空间的用户应用2.socket是什么socket类似jdbc,是一种接口,每种操作系统有不同的实......
  • Elsa 创建并启动一个工作流
    以前写了一半,Elsa3.0重新进行了设计,又不想写了,唉,2023-04-5已过时,最新版请参考Elsa3.0,3.0中相关重新进行了设计   前言:学习而已,初见Elsa时,感觉很奇妙,到底是什么样的思想才能够设计出这么巧妙的程序...长风破浪会有时,直挂云帆济沧海。 学习过程记录下......
  • 折腾野火linux板子学到的东西
    添加编译器相关添加交叉工具链,需要修改/etc/profile修改完成后,需要立即生效(不需要重启),可以使用如下命令:source/etc/profile 如果遇到环境变量配置以后,能够找到版本(也就是说输入命令的开头按tab以后能够出现补全),如果还有问题,这是因为64位下运行32编译器缺少相应的库文......
  • 广告冷启动建模
    背景在广告系统中存在大量冷启动广告,冷启动广告由于数据比较少模型很估准,下面总结冷启动广告建模的常用思路 建模方法1.采用泛化特征冷启动的广告由于样本比较少,id类的特征得不到充分学习,一般都是一个随机值或0,会导致模型预估不准确。因此可以下掉id类特征,只用泛化特征训练......
  • linux npm 全局安装 command not found
    前言在linux使用npm全局安装一个模块时,会提示命令找不到。例如:npminstall@quasar/cli-g后$quasar-vquasar:commandnotfound原因是npm的环境变量没有添加设置,导致无法正常使用该命令。解决方法将npm加入环境变量中,打印npm安装位置npmprefix-glinux......
  • linux python解决中文字体
    1.异常我的python代码如下importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']#中文字体设置plt.title('中华人民共和国')plt.plot([1,2,3,4],['一','二','三','四'],color="b",l......