Linux的多种init进程实现

这篇具有很好参考价值的文章主要介绍了Linux的多种init进程实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在内核启动时,内核会创建第一个进程(称为init进程,initialization)来启动系统中所有其他进程,它会将init进程载入虚拟内存。init的进程标识符PID通常为1。

在Linux中,有多种init进程实现,目前最流行的是以下两种。

SysVinit

Linux最初使用的是SysVinit(SysV)初始化方法,该方法基于Unix System V初始化方法。SysVinit初始化方法使用运行级(runlevel)的概念来决定启动哪个进程,不同的运行级定义了Linux系统的运行状态以及每种状态下应该运行的进程。

Linux的多种init进程实现

/etc/inittab文件定义了系统的默认运行级。特定运行级下启动的进程是在/etc/rc.d目录下的各个子目录中定义的。可以使用runlevel命令随时查看当前运行级。

(base) yushu@fedora:~$ runlevel 
N 5
(base) yushu@fedora:~$ 

systemd

systemd初始化方法诞生于2010年,现在已经成为Linux发行版中最流行的初始化和进程管理系统,该初始化方法能够根据不同的事件启动进程。

  • 系统启动时

  • 连接到特定的硬件设备时

  • 服务启动时

  • 建立好网络连接时

  • 计时器到期时

systemd这一名字源于Unix中的一个惯例:在Unix中常以“d”作为系统守护进程(英语:daemon,亦称后台进程)的后缀标识。除此以外,systemd亦是借代英文术语D体系,而这一术语即是用于描述一个人具有快速地适应环境并解决困难的能力。

systemd方法通过将事件与单元文件(unit file)链接来决定运行哪些进程。每个单元文件定义了特定事件发生时要启动的程序。systemctl程序允许启动、停止和列出系统中当前运行的单元文件。

systemd方法将单元文件划归为目标(target)。目标定义了Linux系统的特定运行状态,这和SysVinit运行级的概念类似。在系统启动时,default.target单元定义了要启动的所有单元文件。可以使用systemctl命令查看当前默认目标:

(base) yushu@fedora:~$ systemctl get-default 
graphical.target
(base) yushu@fedora:~$ 

target

以下是 systemd 中一些常见的目标:

  1. multi-user.target:

    • 这是默认的系统目标。它定义了多用户模式,用于正常的多用户运行。在这个目标下,会启动一组基本的服务,包括登录服务等。
  2. graphical.target:

    • 这个目标定义了图形用户界面(GUI)模式。在这个目标下,会启动 GUI 相关的服务,通常用于桌面环境。
  3. rescue.target:

    • rescue.target 是单用户模式(救援模式)。在这个目标下,只有最小的服务集会被启动,用于系统故障排除和修复。
  4. emergency.target:

    • emergency.target 是紧急模式。在这个目标下,只有一个最小的 shell 会被启动,用于紧急维护。
  5. poweroff.target, reboot.target, halt.target:

    • 这些目标用于关机、重启和停机。它们分别表示系统将要关机、重启和停机。
  6. network.target:

    • 这个目标表示网络已经启动。在这个目标下,会启动网络相关的服务,确保网络连接已经建立。
  7. default.target:

    • default.target 是一个符号链接,指向默认的目标。在许多系统中,它通常链接到 multi-user.target 或 graphical.target。

示例

在 systemd 中,配置文件是单元文件(unit file),通常存放在 /etc/systemd/system/ 目录下。以下是一个简单的示例:

  1. 创建一个单元文件,例如 /etc/systemd/system/myprocess.service
[Unit]
Description=My Process

[Service]
ExecStart=/path/to/your/process
Restart=always

[Install]
WantedBy=multi-user.target
  1. 使用systemctl命令启用服务:
systemctl enable myprocess.service
  1. 启动服务:
systemctl start myprocess.service
  1. 停止服务:
systemctl stop myprocess.service
  1. 查询服务状态
systemctl status myprocess.service

分享

systemd Unit File Generator LinuxBabe 提供了一个简单的在线模板生成器,可以帮助你生成基本的 systemd 单元文件。文章来源地址https://www.toymoban.com/news/detail-824696.html

到了这里,关于Linux的多种init进程实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 升级Ubuntu Linux内核的多种方法

    Ubuntu是一种流行的Linux操作系统,它定期发布更新的内核版本,以提供性能改进、新功能和安全修复。本文将介绍升级Ubuntu Linux内核的几种不同方法,包括使用命令行和使用图形界面工具。 使用命令行 1.1. 使用apt命令 apt命令是Ubuntu中包管理器的基本工具之一,可以用于安装、

    2024年02月03日
    浏览(51)
  • Linux系统中的bash 进程和init进程还有systemd进程分别有什么作用,他们之间有什么联系?

    Linux系统中的bash进程、init进程和systemd进程都是一种守护进程(daemon),即在后台运行的进程,为系统提供各种服务。 bash 进程是 一种命令行解释器 ,它可以执行用户输入的命令或者脚本文件,提供用户与系统的交互界面。bash进程通常是用户登录后启动的,每个用户可以有

    2024年01月25日
    浏览(43)
  • [Linux]进程控制精讲,简单实现一个shell

    目录 前言 进程创建 fork函数初识 写时拷贝 fork常见用法 fork调用失败的原因 进程终止 进程退出场景 进程退出码 查看进程退出码 退出码的含义 进程常见退出方法 exit VS _exit exit函数 _exit函数 二者的区别 return退出 进程等待 进程等待必要性 进程等待的方法 wait方法 waitpid方法

    2023年04月26日
    浏览(35)
  • 【Linux 内核分析课程作业 1】mmap 实现一个 key-valueMap

    功能要求利用 mmap(虚拟内存映射文件) 机制实现一个带持久化能力的 key-valueMap 系统,至少支持单机单进程访问。(可能用到的 linux API: mmap、msync、mremap、munmap、ftruncate、fallocate 等) 电子版提交方式: 2023 年 11 月 20 日 18:00 前通过西电智课平台提交 提交内容 (1) 源代码,包含必

    2024年02月05日
    浏览(26)
  • VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间

    微软提供了一个非常有用的API函数 GetProcessTimes 用来获取进程创建时间、销毁时间、用户态时间、内核态时间,msdn连接为:GetProcessTimes 函数 (processthreadsapi.h) 其函数原型为: 其参数如下: 其返回值和函数说明如下: 相关示例程序如下所示: 由于GetProcessTimes 函数可以获取某

    2024年02月04日
    浏览(40)
  • 进程切换和是Linux2.6内核中进程调度的算法

    正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能 学习网站, 通俗易懂,风趣幽默 ,忍不住分享一下给大家。点击跳转到网站。 进程并发就需要做到进程切换,一个CPU一套寄存器但是需要运行的进程有很多,CPU内是内置的有时间片的,当时间片到之后,上

    2024年01月16日
    浏览(32)
  • Windows一个进程启动或者激活其他任意一个桌面进程

    先描述本文解决了什么问题:         类似一个辅助进程,可以控制目标进程的启动、如果目标进程已经启动那么激活到桌面最前端的功能。 本文解决的问题: 1、一个进程已当前登录用户启动目标进程,这么做是由于,当辅助进程如果以管理员权限打开,启动另一个进程的

    2024年02月13日
    浏览(36)
  • 深入理解Linux内核网络——内核与用户进程协作之同步阻塞方案(BIO)

    系列文章: 深入理解Linux网络——内核是如何接收到网络包的 深入理解Linux网络——内核与用户进程协作之同步阻塞方案(BIO) 深入理解Linux网络——内核与用户进程协作之多路复用方案(epoll) 深入理解Linux网络——内核是如何发送网络包的 深入理解Linux网络——本机网络

    2024年02月13日
    浏览(36)
  • 《Linux内核源码分析》(2)进程原理及系统调用

    操作系统的作用 :作为硬件的使用层,提供使用硬件资源的能力, 进程的作用 :作为操作系统使用层,提供使用操作系统抽象出的资源层的能力 进程、线程和程序的区别 :进程指计算机中已运行的程序。进程本身不是基本的运行单位,而是线程的容器。 程序本身只是指令

    2024年02月07日
    浏览(40)
  • 【Linux 内核源码分析】进程调度 -CFS 调度器

    Linux内核调度器是负责决定哪个进程在何时执行的组件。它管理着CPU资源的分配和任务的调度,以确保系统资源的合理利用和任务的高效执行。Linux内核中常见的调度器有多种,包括经典的O(1)调度器、CFS(Completely Fair Scheduler)调度器等。这些调度器根据不同的策略和算法来进

    2024年01月17日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包