在银河麒麟系统中使脚本持续运行需避免SIGHUP信号:可用nohup ./myscript.sh &启动并重定向输出;若已后台运行可补用disown %1脱离;也可用setsid创建新会话,或配合screen/tmux实现断开后继续运行。

在银河麒麟操作系统中让脚本持续运行、不因终端关闭或网络断开而终止,核心是切断脚本与终端会话的信号绑定关系,避免收到 SIGHUP(挂断信号)。
使用 nohup 命令启动脚本
在终端中执行:nohup ./myscript.sh &
这会将脚本输出重定向到当前目录下的 nohup.out 文件,并使其脱离终端控制。注意:如果脚本本身有交互式输入需求,需额外配合 避免阻塞。
执行后立即按回车确认提示,终端会返回类似 [1] 12345 的进程号,表示已转入后台运行。
用 disown 脱离已有后台作业
如果你已经用 ./myscript.sh & 启动了脚本,但忘记加 nohup,可补救:
第一步:先按 Ctrl+Z 暂停正在前台运行的脚本(若已在后台则跳过);
第二步:执行 bg 将其切回后台继续运行;
第三步:运行 disown %1(其中 %1 是作业编号,可用 jobs 查看);
【disown 后该作业将不再接收 SIGHUP,但标准输出仍连着当前终端,关闭终端可能导致写入失败或报错】
通过 setsid 创建新会话
方法一:直接启动独立会话
执行 setsid ./myscript.sh > /dev/null 2>&1 ,这会让脚本在全新的会话中运行,完全脱离原终端的控制组和信号链路。
方法二:配合 screen 或 tmux(更便于后续查看日志)
先运行 screen -S myjob,再在 screen 会话中执行脚本,按 Ctrl+A, D 分离,之后即使断开 SSH 也不会中断。
screen 方式适合需要偶尔回来查看输出的场景,而 setsid 更轻量、无依赖,适合部署为服务型长期任务。










