如何在Shell被强制关闭时执行脚本?Steam非Steam游戏云存档需求
非Steam游戏自定义云存档系统:Steam停止按钮触发备份方案
我正在为非Steam游戏搭建自定义云存档系统,需要实现按下Steam的「停止」按钮时自动备份游戏文件(该操作会直接关闭启动游戏的可执行文件)。
尝试过的无效方案
cd "/location_of_backups/" py savemanager.py --load --auto-override --force Ryujinx.exe "path/to/game.nsp" # 按下Steam的关闭按钮后,下面的代码永远不会执行 py savemanager.py --backup # Ryujinx.exe "path/to/game.nsp" && py savemanager.py --backup 同样无效 # 任何在独立shell中启动的方式也不行
核心问题:Shell脚本本身会被Steam强制关闭,能否在Shell关闭时执行指定的备份代码?
补充说明与最终解决方案
- 编辑1:该Shell脚本通过Steam启动,是用于启动模拟器游戏、加载/备份存档的包装脚本。必须让模拟器作为主进程运行,因为Steam会将覆盖层附加到这个原始实例上。
- 编辑2:最初尝试
kill、term、quit、int等信号处理,在Python和Bash中均未生效。 - 编辑3:后续确认信号实际有效,Steam会向进程发送HUP信号。最终实现的工作脚本如下:
#!/bin/bash handle_HUP() { python3 savemanager.py --backup exit } trap 'handle_HUP' HUP python3 savemanager.py --load $1 "$2"
额外信息:该脚本用于同步主PC与Steam Deck的存档文件。
内容的提问来源于stack exchange,提问作者Tima_ben




