Windows:所见即所得
例如你打开:
你看到的是当前状态。
比如 Apache 运行中 或者 CPU 20%
或者 磁盘 剩余 100GB
这些都是 GUI 告诉你的。
Linux:默认相信日志
Linux 则是:
nginx 为什么没启动↓systemctl status nginx↓journalctl -u nginx↓日志告诉你为什么
它不会主动弹窗:配置文件第 15 行有语法错误。
而是让你去查看:
/var/log/...journalctldmesg
为什么 Linux 要这么设计?
因为 Linux 最初不是给桌面用户设计的。
而是:
管理员通过 ssh 远程连接。
那时候 GUI 根本不存在。
所以 Linux 形成了一个传统:任何事情,都应该能在终端完成。
包括:
启动服务停止服务查看日志查看网络查看CPU查看磁盘
全部都是命令。
Windows 为什么喜欢 GUI?
因为 Windows 最开始就是桌面系统。
微软假设:
所以:
Linux 像乐高
Linux 把所有东西拆开。
例如:
systemd │ ├── journal ├── timer ├── network ├── login ├── mount └── service
每一个都是独立模块。
你想看哪个:
journalctlnetworkctlloginctlhostnamectltimedatectl
全部都是单独命令。
但 Linux 不是黑盒
很多新人觉得 Linux 是黑盒
但学久了会发现,它比 Windows 更透明。
举个例子:
Windows
为什么程序启动失败?
很多时候只能看到应用程序错误
然后去事件查看器翻半天。
Linux
直接:
看到:
再:
马上看到:
甚至:
直接告诉你:
真正的区别其实是:
Windows 先告诉你结果,再让你找原因。
Linux 直接把原因告诉你,只不过是在日志里。
我最近的思维已经开始发生变化。
前几天我会问:这个命令怎么用?
现在我问:systemd、systemctl、cron.service、timer 是什么关系?
我已经不是在背命令了,而是在试图理解 Linux 的架构。
一旦把 Linux 看成一群守护进程(daemon)互相协作:
systemdjournaldcronsshdnginxdockerd
那么很多命令就不再是零散的工具,而是这些守护进程的控制面板。
这也是很多资深 Linux 管理员看待系统的方式。