扫码关注官方订阅号
举个例子:service mysql restart 和 service mysql reload。这两者的区别是什么?
service mysql restart
service mysql reload
标题问的是 Linux,但问题描述讲 MySQL,考虑到大同小异我就讲讲 MySQL 吧。
reload 会给MySQL进程发送一个 SIGHUP 信号,MySQL 接下来会重新加载权限表、配置文件,重新打开日志文件,重新打开host解析缓存和连接池(thread cache)。
SIGHUP
restart 则会发送 SIGTERM,使MySQL关闭。关闭后,重新启动 MySQL。
SIGTERM
两者的区别相信题主也看出来了,reload 可以在不中断服务的情况下重读配置,切换(切割)日志文件等工作,常常引起混淆的是:这些feature并非由操作系统带来,而是应用程序根据不同的信号做出的设计。所以并不是每一个应用程序都有所谓的 reload 和 restart,其实现当然也不尽相同。
@vvtommy 回答的挺好。
然后我想补充下,这种问题其实理解下service的原理自己就很容易弄明白,service mysql 其实执行的就是/etc/init.d/mysql 命令,所以不存在reload和restart是service的问题,而仅仅是mysql的service脚本实现的问题,你想弄明白只需要去看看/etc/init.d/mysql这个shell脚本就可以了。
@vvtommy
综合如上几位, 是不是可以理解为 ,reloade 和 restart 相较而言,后者更彻底一些?
restart 可以做到 reload 的所有, 反之 reload 却不行?
在不考虑服务中断的情况下,优选 restart ,
restart 的效果会更彻底一些。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
标题问的是 Linux,但问题描述讲 MySQL,考虑到大同小异我就讲讲 MySQL 吧。
reload 会给MySQL进程发送一个
SIGHUP信号,MySQL 接下来会重新加载权限表、配置文件,重新打开日志文件,重新打开host解析缓存和连接池(thread cache)。restart 则会发送
SIGTERM,使MySQL关闭。关闭后,重新启动 MySQL。两者的区别相信题主也看出来了,reload 可以在不中断服务的情况下重读配置,切换(切割)日志文件等工作,常常引起混淆的是:这些feature并非由操作系统带来,而是应用程序根据不同的信号做出的设计。所以并不是每一个应用程序都有所谓的 reload 和 restart,其实现当然也不尽相同。
@vvtommy 回答的挺好。
然后我想补充下,这种问题其实理解下service的原理自己就很容易弄明白,service mysql 其实执行的就是/etc/init.d/mysql 命令,所以不存在reload和restart是service的问题,而仅仅是mysql的service脚本实现的问题,你想弄明白只需要去看看/etc/init.d/mysql这个shell脚本就可以了。
@vvtommy
综合如上几位, 是不是可以理解为 ,reloade 和 restart 相较而言,后者更彻底一些?
restart 可以做到 reload 的所有, 反之 reload 却不行?
在不考虑服务中断的情况下,优选 restart ,
restart 的效果会更彻底一些。