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