linux杂项

我一直都有一个疑惑,windows电脑几乎装很多东西都要求重启生效,为什么linux就不用

这是因为 Windows 和 Linux 在设计理念和实现方式上有很大不同,导致对待运行中程序的处理方式不同。

Windows:

  1. 内核模式设计导致很多程序运行在内核态,内核级别的更改需要重启才能生效。

  2. 程序和系统服务存在大量相互依赖,更新单个程序可能影响其他正在运行的进程。

  3. 注册表等全局系统配置,在运行时很难完全重新加载。

  4. 程序文件在运行时被直接锁定,无法被覆盖更新。

因此,Windows 在安装更新后往往需要重启,以关闭所有运行程序,彻底用新程序覆盖老版本,并重建内核、注册表等运行环境。

Linux:

  1. 内核采用模块化设计,大部分程序运行在用户态,与内核隔离。

  2. 程序间低耦合,依赖通过动态链接来解决,更新影响较小。

  3. 配置文件独立,相互之间影响小。

  4. 运行程序文件使用写时复制机制,可以直接用新文件覆盖老文件。

因此,Linux 可以在运行时动态更新、加载新程序,无需重启整个系统,提高了可用性。只有在更新内核模块时,才可能需要重启。

总的来说,Linux 模块化、分层的设计理念使得大部分更新无需重启,提高了系统的灵活性和可用性。

pkill -f -9 的每一个选项什么意思?

pkill 命令用于根据进程名或其他属性来杀死进程。该命令的 -f-9 选项具有以下含义:

  1. -f 这个选项使得 pkill 命令可以根据完整的命令行来匹配进程。通常情况下, pkill 只会根据进程名来匹配,而加上 -f 选项后,它会将整个命令行视为要匹配的字符串。这对于杀死那些进程名相同但命令行参数不同的进程很有用。

  2. -9 这个选项表示发送终止信号 SIGKILL 给匹配的进程。SIGKILL 是一个强制终止进程的信号,它不能被进程捕获和忽略。当一个进程由于某种原因无法正常终止时,可以使用 SIGKILL 来强行结束它。 需要注意的是,使用 SIGKILL 来结束进程可能会造成数据丢失或其他不良后果,因为进程没有机会执行任何清理操作。因此,如果可能的话,最好先尝试使用较温和的方式来终止进程,例如发送 SIGTERM 信号(默认情况下不加 -9 选项就是发送 SIGTERM)。

综上所述,pkill -f -9 命令会根据完整的命令行来匹配进程,并发送 SIGKILL 信号强制终止匹配的进程。这个命令应该只在其他方式无法正常终止进程时使用,而且需要格外小心,以免造成不必要的损失。