linux杂项
linux杂项
我一直都有一个疑惑,windows电脑几乎装很多东西都要求重启生效,为什么linux就不用
这是因为 Windows 和 Linux 在设计理念和实现方式上有很大不同,导致对待运行中程序的处理方式不同。
Windows:
内核模式设计导致很多程序运行在内核态,内核级别的更改需要重启才能生效。
程序和系统服务存在大量相互依赖,更新单个程序可能影响其他正在运行的进程。
注册表等全局系统配置,在运行时很难完全重新加载。
程序文件在运行时被直接锁定,无法被覆盖更新。
因此,Windows 在安装更新后往往需要重启,以关闭所有运行程序,彻底用新程序覆盖老版本,并重建内核、注册表等运行环境。
Linux:
内核采用模块化设计,大部分程序运行在用户态,与内核隔离。
程序间低耦合,依赖通过动态链接来解决,更新影响较小。
配置文件独立,相互之间影响小。
运行程序文件使用写时复制机制,可以直接用新文件覆盖老文件。
因此,Linux 可以在运行时动态更新、加载新程序,无需重启整个系统,提高了可用性。只有在更新内核模块时,才可能需要重启。
总的来说,Linux 模块化、分层的设计理念使得大部分更新无需重启,提高了系统的灵活性和可用性。
pkill -f -9 的每一个选项什么意思?
pkill
命令用于根据进程名或其他属性来杀死进程。该命令的 -f
和 -9
选项具有以下含义:
-f
这个选项使得pkill
命令可以根据完整的命令行来匹配进程。通常情况下,pkill
只会根据进程名来匹配,而加上-f
选项后,它会将整个命令行视为要匹配的字符串。这对于杀死那些进程名相同但命令行参数不同的进程很有用。-9
这个选项表示发送终止信号SIGKILL
给匹配的进程。SIGKILL
是一个强制终止进程的信号,它不能被进程捕获和忽略。当一个进程由于某种原因无法正常终止时,可以使用SIGKILL
来强行结束它。 需要注意的是,使用SIGKILL
来结束进程可能会造成数据丢失或其他不良后果,因为进程没有机会执行任何清理操作。因此,如果可能的话,最好先尝试使用较温和的方式来终止进程,例如发送SIGTERM
信号(默认情况下不加-9
选项就是发送SIGTERM
)。
综上所述,pkill -f -9
命令会根据完整的命令行来匹配进程,并发送 SIGKILL
信号强制终止匹配的进程。这个命令应该只在其他方式无法正常终止进程时使用,而且需要格外小心,以免造成不必要的损失。