首页 > 编程知识 正文

docker守护进程启动(linux系统守护进程有哪些)

时间:2023-05-03 09:41:37 阅读:63958 作者:2617

systemd是Liunx的启动守护程序,大多数Liunx版本都采用。 与以前采用的init流程的串行启动相比,systemd流程采用并行启动,为系统的启动管理提供了一系列方案。

探索启动systemd的问题的背景是,团队使用草莓派zero W制作的产品需要在系统启动后启动声卡并播放音频文件,但声卡驱动相关服务需要20s才能启动,系统的其馀启动项目需要开机45秒,系统没有任何反应,用户无法承受这样长的没有反馈的启动时间。

调整服务启动顺序,最终开机实现22s播放音频文件。

草莓馅饼写入2019-04-08-rasp bian-stretch-lite.img镜像是一个非常简单的系统,因此没有通过内核修整实现快速启动。 (球队里没有人有经验)。

声卡驱动器源: https://github.com/re speaker/seeed-voice card.git

适用于2mic、4mic、6mic草莓派喇叭模块的驱动

解决问题:

1 .有关1.systemd的基础知识,请参考以下博客

33558 www.Ruan Yifeng.com/blog/2016/03/systemd-tutorial-commands.html

3359 www.Jian Shu.com/p/86 ADB 6d 5347 b

2 .分析当前系统各项服务的启动时间和顺序

a .列出每个启动所需的时间,但由于是并行启动,因此启动时间不决定启动完成前后

系统分析板

b .列出启动矢量图,在浏览器中打开boot.svg文件,得到各项服务的启动顺序

系统分析打印boot.SVG

从svg向量图像获得的声音服务seeed-voicecard.service从17s左右开始启动,启动时间约为20s。 (因为与电源接通不同,外部计时时间不包含uboot引导、存储卡程序copy等时间) ) ) ) ) )。

分析seeed-voicecard.service

[单元]

描述=seedvoicecardservice

After=alsa-restore.service

服务

Type=oneshot

RemainAfterExit=yes

ExecStart=/usr/总是迟到的长椅/安全语音卡

用户根

[Install]

WantedBy=sysinit.target

服务在alsa-restore.service之后启动,并且属于sysinit.target组以运行seeed-voicecard文件

systemd的启动顺序保证,如果当前服务满足启动条件,则立即创建并并行启动进程。 启动条件是指服务的依存关系(Requires、Wants )或顺序关键字(After、Before )等

列举c.seed-voicecard.service的所有依赖关系发现依赖关系异常多且复杂。 但是,service文件中没有提到那么多依赖项,怀疑依赖项存在继承关系,删除After alsa-re. /仍然存在很多依赖项。 寻找定义依赖关系的位置需要很长时间,是解决问题的关键。

systemctllist-dependencies seed-voice card.service3.解析的契机是发现keyboard启动服务正在早期运行,而keyboard service文件中的

DefaultDependencies=no,即systemd规定了许多默认依赖关系,一般服务需要等待默认依赖关系服务启动。 这样,问题的大部分就解决了。

剩下的问题是,seeed-voicecard.service启动得太快,程序启动失败(I2C、SPI等硬件初始化,早于boot.mont装载点)。 分析svg图并将seeed-voicecard.service置于以下服务之后,可以确保快速启动并正常启动:

按如下方式修改seeed-voicecard.service文件

[单元]

描述=seedvoicecardservice

DefaultDependencies=no否

After=boot.mount

Before=nfs-config.service

Before=console-setup.service

before=Plymouth-read-write.service

Wants=DRStartSound.service

服务

Type=oneshot

RemainAfterExit=yes

ExecStart=/usr/总是迟到的长椅/安全语音卡

[Install]

WantedBy=sysinit.target

此时,通过分析引导svg图,发现只要seeed-voicecard.service的引导时间提前到9s,且引导时间缩短到8s以内,即缩短到17s,就能够播放音频文件。 启动时间缩短的原因在于启动时间提前了。 此时,并行任务少,声卡服务消耗了足够的cpu资源,实现了快速启动。

探索systemd几天后的总结:

1 .依赖关系由默认依赖关系DefaultDependencies和service中定义的依赖关系组成。 默认依赖项将在内核启动完成、硬件设备驱动程序启动完成、内存管理等启动完成后启动服务。 满足启动条件后,服务将立即启动。

2.systemctl enable xxx.service命令实质上是在target.wants文件中创建指向xxx.service的链接,同样disable实质上是断开链接。 大多数服务文件存储在/lib/systemd/system目录中。 创建的链接在每个目标中属于不同的文件夹。 seeed-voicecard.service包含在sysinit.target中,并且在/etc/systemd/system/sysinit.target.wants文件夹中创建的链接存在。

3.systemctl disable xxx.service命令可能无法删除已创建的链接。 或者,可能在其他部分启用了服务。 服务可以在其他进程或下次通电时启动。 要完全禁止启动某个服务,必须使用systemctl unmask xxx.service才能在systemctl mask xxx.service中解除禁止

修改/lib/systemd/system目录中的服务,并使用sudo systemctl daemon-reload更新链接中的服务内容,或在关闭电源并重新打开电源时自动更新。

5 .分析启动问题,有svg启动矢量图,就能分辨出各个启动顺序和启动时间,是一种实用直观的表达方法

6 .本次处理的只是服务相关内容,不处理systemd的硬件启动设备相关内容。

转自: https://blog.csdn.net/xing _ huo 95/article/details/90246050

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。