Linux 服务管理入门:systemctl 管好常驻服务,重启服务器也不怕
先分清两个容易混的概念。Cron 定时任务是“到点跑一次就退出”,比如每天凌晨备份一次数据库;而服务是“一直在后台跑着等请求”,比如 Nginx 一直在等浏览器访问、MySQL 一直在等程序查数据。定时任务停了只是某次没跑,服务停了网站直接就打不开了,所以服务管理是运维里最常用的一组操作。
现在主流 Linux 发行版都用 systemd 管服务,命令统一叫 systemctl,格式都是 systemctl 动作 服务名。先学会看状态:systemctl status nginx,输出里 active (running) 就是在跑,inactive (dead) 就是停了,failed 就是启动失败——先看状态再动手,别上来就重启。服务在跑却改了配置怎么办?改 Nginx 配置、改 MySQL 配置后,配置不会自己生效,必须 systemctl reload nginx 或者 systemctl restart nginx:reload 是平滑重载、不中断已有连接,restart 是彻底停掉再起,改配置一般先用 reload,不行再 restart。
再分清另一对概念:启动和开机自启。systemctl start nginx 是现在立刻启动,服务器一重启它就没了;systemctl enable nginx 是设成开机自动启动,但当下并不启动它。新装的服务最稳妥的做法是两条都跑:start 先让它现在跑起来,enable 保证下次重启后它自己回来。反过来,临时不想让某个服务跑了,用 systemctl stop 停掉它,再用 systemctl disable 取消开机自启,只停不停用、只禁不停止,都是新手常踩的半截操作。
服务起不来时,别反复 restart 碰运气,先查日志。journalctl -u nginx 能看到这个服务的系统日志,-f 可以实时滚动,--since "10 minutes ago" 只看最近十分钟。日志里写着端口被占用、配置文件语法错、权限不够,都是能直接对症下药的线索。Nginx 还有个专用检查:nginx -t 先测配置语法,通过了再 reload,语法错了直接 reload 只会让服务停在错误状态。查端口占用也别忘了老办法:ss -tlnp 看看 80、443、3306 这些端口到底被谁占着。
最后说三条避坑经验。第一,改配置前先备份原文件,cp nginx.conf nginx.conf.bak 一行命令,改坏了能立刻拷回来。第二,重启服务前先确认自己在改哪台机器、哪个服务,生产站上 restart MySQL 会断掉正在跑的查询,能 reload 就别 restart,能深夜操作就别在白天高峰动手。第三,装完新服务就顺手做一次“重启验证”:systemctl status 看一眼、浏览器打开网站看一眼、再确认 enable 已经设好——这三步做完,半夜服务器重启你也不用爬起来救站。
总结一下:服务管理就记住一句话,status 先看状态,start 管现在、enable 管下次重启,reload 改配置、restart 真出问题,journalctl 查原因。今天动手把自己站上的 Nginx 和 MySQL 各跑一遍 status 和 enable,确认它们都是 running 且开机自启,你的站就比昨天稳一分。
- 点赞
- 收藏
- 关注作者
评论(0)