feat(dtic-BKPs): auto-relaunch inside GNU screen
This commit is contained in:
@@ -213,7 +213,27 @@ end
|
||||
|
||||
# --- Inicio del Script ---
|
||||
Signal.trap("INT") { puts "\n#{ROJO}Ctrl+C detectado. Saliendo...#{RESET}"; log :warn, "Script interrumpido (Ctrl+C)."; exit 130; }
|
||||
log :info, "===== Inicio script #{APP_NOM} #{APP_VER} ====="
|
||||
|
||||
# === AUTO-SCREEN WRAPPER ===
|
||||
# Verificamos si ya estamos dentro de una sesión de GNU Screen
|
||||
unless ENV['TERM'] == 'screen' || ENV['TERM'] =~ /^screen/ || ENV['STY']
|
||||
puts "\n#{CIAN}ℹ Relanzando dtic-BKPs en una sesión separada (screen) para permitir desatención...#{RESET}"
|
||||
|
||||
# Construimos el comando original con sus argumentos
|
||||
comando_original = [$PROGRAM_NAME] + ARGV
|
||||
comando_escapado = comando_original.map { |arg| Shellwords.escape(arg) }.join(' ')
|
||||
|
||||
# Nombre de sesión dinámico
|
||||
nombre_sesion = "dticBKPs_#{Time.now.strftime('%H%M%S')}"
|
||||
|
||||
puts "Para reconectarte luego, usa: #{AMARILLO}screen -r #{nombre_sesion}#{RESET}"
|
||||
sleep 2
|
||||
|
||||
# Reemplaza el proceso actual por screen ejecutando este mismo script
|
||||
exec('screen', '-S', nombre_sesion, 'bash', '-c', "#{comando_escapado}; echo ''; read -p 'Presiona Enter para cerrar la sesión...'")
|
||||
end
|
||||
|
||||
log :info, "===== Inicio script #{APP_NOM} #{APP_VER} (en Screen) ====="
|
||||
|
||||
tareas_config, comandos_config, auto_avanzar = cargar_configuracion
|
||||
|
||||
|
||||
Reference in New Issue
Block a user