
刚接触Linux时,我经常把进程和服务当成一回事。看到服务异常,就直接查进程;发现CPU占用高,也只盯着top里排在前面的PID。后来排查的问题多了才发现,这几个概念虽然有关联,但并不在同一个层级。
程序是磁盘上的代码文件,运行后才会成为进程;一个进程内部可以包含多个线程,真正占用CPU执行任务的,往往是其中某个线程;而服务更像一个被统一管理的功能单元,通常由systemd负责启动、停止、监控和异常重启,背后可能对应一个进程,也可能是一组主进程和Worker进程。
例如Nginx通常由Master进程管理多个Worker进程,Java应用常见的是一个JVM进程内部运行大量业务、网络和GC线程。因此,服务显示正常,不代表每个进程和线程都正常;看到进程CPU高,也要继续深入到线程级别定位。
下面就从定义、运行模型、常用命令和排障流程几个方面,把它们之间的关系讲清楚。
运维积累的Linux、进程和日志基础并不会浪费。把故障排查再往异常行为分析、主机安全和应急响应延伸,就是一条很自然的网安学习路线。