ruby-on-rails - 如果使用“rails server”,Mac OS Catalina 无法正确关闭
问题描述
我一直rails server
在 Mac OS Catalina 上使用 Rails 6.0.1。我注意到,如果启动服务器(无论是使用 Puma 还是 unicorn),然后将其关闭,然后尝试关闭计算机,它就会挂起,直到 Apple 的看门狗强制关闭系统。在下一次启动时,我总是得到相同的崩溃报告。
panic(cpu 2 caller 0xffffff7f8ef9daae): watchdog timeout: no checkins from watchdogd in 187 seconds (21 totalcheckins since monitoring last enabled), shutdown in progress
Backtrace (CPU 2), Frame : Return Address
0xffffff83b7473c40 : 0xffffff800e539a3b
0xffffff83b7473c90 : 0xffffff800e670fe5
0xffffff83b7473cd0 : 0xffffff800e662a5e
0xffffff83b7473d20 : 0xffffff800e4e0a40
0xffffff83b7473d40 : 0xffffff800e539127
0xffffff83b7473e40 : 0xffffff800e53950b
0xffffff83b7473e90 : 0xffffff800ecd1875
0xffffff83b7473f00 : 0xffffff7f8ef9daae
0xffffff83b7473f10 : 0xffffff7f8ef9d472
0xffffff83b7473f50 : 0xffffff7f8efb2e76
0xffffff83b7473fa0 : 0xffffff800e4e013e
Kernel Extensions in backtrace:
com.apple.driver.watchdog(1.0)[AA44EEB8-57FA-3CAC-9105-C7AB21900B9A]@0xffffff7f8ef9c000->0xffffff7f8efa4fff
com.apple.driver.AppleSMC(3.1.9)[6DA4BDC6-9C64-34B3-A60E-D345D2DC2D5F]@0xffffff7f8efa5000->0xffffff7f8efc3fff
dependency: com.apple.driver.watchdog(1)[AA44EEB8-57FA-3CAC-9105-C7AB21900B9A]@0xffffff7f8ef9c000
dependency: com.apple.iokit.IOACPIFamily(1.4)[4A40B298-87E0-373E-84A9-9A2227924F8F]@0xffffff7f8ef07000
dependency: com.apple.iokit.IOPCIFamily(2.9)[AA7C7A4F-9F5D-3533-9E78-177C3B6A72BF]@0xffffff7f8ef10000
BSD process name corresponding to current thread: kernel_task
Boot args: chunklist-security-epoch=0 -chunklist-no-rev2-dev
Mac OS version:
19B88
Kernel version:
Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64
有没有其他人看到这个问题,你是如何解决它的?我的猜测是rails server
某些进程即使在通过 Ctrl-C 关闭后仍在运行,这会阻止操作系统正确关闭。
解决方案
不是很专业的方法,但是...
- 打开一个终端(如果可能的话,有特权)
- 使用正在运行的进程的“ps”(我似乎记得“ps awxu”)拍摄快照
- 启动 Rails 服务器
- 修补一下
- 现在停止服务器
- 拍摄另一个快照
我完全希望一些低级后台进程一直在运行并且不听关闭信号。MacOS 的关机过程可能出于自身的利益而过于乖巧和礼貌。
如果是这种情况,请获取进程的 PID 或名称并尝试使用 HUP、TERM 和最后的 KILL 信号将其杀死。您可以通过检查它们的图像路径来很好地了解这些进程的开始位置(注意不要杀死无辜的进程)。
等待一段时间以确保 pkilling 进程不会使系统处于不稳定状态,然后尝试关闭机器并查看情况如何。
推荐阅读
- ruby-on-rails - 请解释has_many,通过:来源:Rails Association
- hibernate - 如何在休眠中为自身实体添加@OneToMany 映射
- javascript - Javascript 新手:弹出菜单
- c - C将其用作函数后写入文件停止工作?
- spring-boot - Spring Boot role validation controller using aspect
- javascript - 比较从 uuid npm 包生成的 ID
- css - 2个具有相同CSS的元素,只修改第一个
- reactjs - React / DRF:如何处理 POST 请求中的多对多关系?
- python - 为什么没有显示我的带有图像的按钮。它只显示图像有什么错误吗?
- c - 很难在 C 中为列表创建函数