详解systemd、sysctl、system v以及最佳实践

systemd、sysctl 和 system v 的 /etc/rc.d/boot.local 都是 Linux 系统的组成部分,它们各自有不同的用途:

systemd

这是 Linux 发行版中用于引导用户空间并随后管理所有进程的 init 系统。当 Linux 系统启动时,它是第一个启动的进程(PID 为 1),负责启动、停止和管理系统上运行的所有其他进程。它还管理系统资源、挂载点、系统日志等。

最佳实践

systemd 是 Linux 的系统和服务管理器。它已成为许多 Linux 发行版的默认 init 系统。以下是使用 systemd 的一些最佳实践:

  • 使用服务文件:不要手动启动和停止服务,而是在服务文件中定义它们。这允许 systemd 管理它们,确保它们在启动时启动,并在崩溃时重新启动。

  • 使用目标单元:systemd 使用目标,这是 SysV init 中运行级别的更灵活的替代品。使用这些目标来控制何时启动服务。

  • 使用 Journalctl 查看日志:systemd 包含一个强大的日志系统,称为 journal。使用 journalctl 命令查询日志。

  • 隔离服务:出于安全考虑,使用 systemd 的功能将服务彼此隔离,与系统的其余部分隔离。这可能包括以特定用户身份运行服务,或在特定目录中,或具有特定功能。

  • 使用 systemctl 进行服务管理:systemctl 命令是与 systemd 交互的主要工具。使用它来启动、停止、启用和禁用服务,等等。

  • 理解依赖管理:systemd 有一个复杂的依赖系统。服务可以设置为在其他服务之后启动,或者在特定设备或挂载点可用时启动。

  • 使用定时器进行调度:systemd 有一个内置的基于时间的作业调度系统,类似于 cron。然而,systemd 的定时器更灵活,更好地集成到系统的其余部分。

  • 保持单元文件简单:systemd 单元文件应尽可能简单。如果服务需要复杂的设置,考虑将该设置放在单元文件可以调用的单独脚本中。

使用 systemd-analyze 进行启动分析:如果系统启动慢,使用 systemd-analyze 命令查看哪些服务启动最慢。

sysctl

sysctl 是 Linux 中的一个实用程序,允许你在运行时读取和修改内核参数。可用的参数是列在 /proc/sys/ 下的。

sysctl 的目的是管理这些内核参数。它既可以读取当前的内核参数值,也可以设置新的值。使用 sysctl 做出的更改是立即的,不需要重新启动系统就会生效。

这可以用来微调操作系统的各种方面,包括安全性、性能和网络参数。例如,你可以调整系统的交换性,控制 IP 数据包转发,修改最大文件句柄等。

然而,除非将它们保存在 /etc/sysctl.conf 文件或 /etc/sysctl.d/ 目录中的文件中,否则使用 sysctl 做出的更改在重启后不会保持。

最佳实践

在 Linux 中使用 sysctl 修改内核参数应谨慎进行,因为这些参数控制了系统行为的低级别。以下是一些最佳实践:

  • 理解参数:在修改任何参数之前,确保你理解它的作用。sysctl -a 命令可以用来列出所有参数,这些参数的文档通常可以在网上或内核文档中找到。

  • 临时测试更改:你可以使用 sysctl 命令设置参数的新值来测试它。这种更改在重启后会丢失,如果有任何问题,你可以轻松地恢复。

  • 做出永久性的更改:如果你已经测试了一个更改,并想使它永久生效,你可以将它添加到 /etc/sysctl.conf 文件或 /etc/sysctl.d/ 目录中的新文件中。这将在每次启动时应用更改。

  • 使用注释:在向 sysctl.conf 文件添加参数时,最好添加一个注释,解释参数的作用以及你为什么要更改它。这对于查看文件的其他人(或未来的你)可能会有帮助。

  • 备份:在做任何更改之前,备份你当前的 sysctl.conf 文件。如果出现任何问题,这可以帮助你恢复到之前的状态。

  • 增量更改:如果你正在调整性能参数,做出增量更改而不是大的更改,并监视每次更改的效果。

  • 监视系统:在做出更改后,监视你的系统以确保它的行为符合预期。关注相关的日志和系统指标。

记住,错误的设置可能导致系统不稳定或出现意外行为,因此在修改内核参数时总是要谨慎行事。

/etc/rc.d/boot.local

Linux 系统中的 /etc/rc.d/boot.local 脚本在系统启动过程的最后执行。这个脚本是传统的 System V init 系统的一部分,用于执行你希望在所有标准系统服务启动后运行的命令或脚本。

通常,你可能会使用 boot.local 来启动自定义服务,运行清理任务,设置特殊的网络配置,或者任何其他需要在每次系统启动时发生的事情。

然而,需要注意的是,许多现代的 Linux 发行版已经转向使用 systemd init 系统,而不是 System V。在基于 systemd 的系统中,启动时运行命令的推荐方式是创建一个 systemd 服务。boot.local 脚本在一些 systemd 系统上仍然得到支持,以实现向后兼容,但不鼓励使用。

总结

总的来说,systemd 是关于管理和控制系统服务的,sysctl 是关于调整和配置底层内核参数的,而 /etc/rc.d/boot.local 是在启动过程结束时运行命令的脚本。

相关推荐
HLC++15 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室16 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy19 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕19 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫21 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生21 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.111 天前
linux基础IO
linux·运维·服务器
BelongPanda1 天前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯1 天前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_777998341 天前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器