From 5cbbe8213be832468931399aa486f6b45f1eb095 Mon Sep 17 00:00:00 2001 From: Snowflake Date: Sun, 7 Jun 2026 12:20:46 +0800 Subject: [PATCH] Fixed being killed by systemd for not flushing block buffer in time. --- main.rb | 14 ++++++++++++-- method_executor.rb | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/main.rb b/main.rb index 5df405c..6f91729 100644 --- a/main.rb +++ b/main.rb @@ -4,8 +4,18 @@ # time: 2026-06-07 # license: All rights received. -require_relative 'server_status_detector' +# main.rb 顶部添加 +begin + # 原有代码 +rescue => e + # 强制输出到stderr + $stderr.puts "[CRITICAL] Unhandled exception: #{e.message}" + $stderr.puts e.backtrace.join("\n") + exit 1 +end + require_relative 'method_executor' # 日志系统在此时初始化 +require_relative 'server_status_detector' MethodExecutor.record("info", "mainloop", "MineSentinel started, entering mainloop.") @@ -30,6 +40,6 @@ end while true - sleep 10 + sleep 1.5 main end diff --git a/method_executor.rb b/method_executor.rb index c582319..468b67c 100644 --- a/method_executor.rb +++ b/method_executor.rb @@ -16,6 +16,8 @@ class MethodExecutor @@rst_counter = 0 # Initialize the standard log system. @@logger = Logger.new(STDOUT) # This script will be launched as a systemd server. + STDOUT.sync = true + STDERR.sync = true # Fetch the environmental variable and convert it into log level. @@logger.level = case ENV["LOG_LEVEL"] # @为单个实例(半生不熟的概念,貌似是在不同的空间独立创建),@@为共享同一个 when nil # Default config.