详解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 是在启动过程结束时运行命令的脚本。

相关推荐
量子网络2 分钟前
debian 如何进入root
linux·服务器·debian
我们的五年9 分钟前
【Linux课程学习】:进程描述---PCB(Process Control Block)
linux·运维·c++
我言秋日胜春朝★1 小时前
【Linux】进程地址空间
linux·运维·服务器
C-cat.1 小时前
Linux|环境变量
linux·运维·服务器
yunfanleo2 小时前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker
糖豆豆今天也要努力鸭2 小时前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
烦躁的大鼻嘎2 小时前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
ac.char2 小时前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu
敲上瘾2 小时前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
长弓聊编程3 小时前
Linux系统使用valgrind分析C++程序内存资源使用情况
linux·c++