讲师中心 微信公众号
AI工具推荐 视频效率加速

麒麟系统如何管理多线程程序的后台执行

大瑶君_2688

大瑶君_2688

发布时间:2026-09-12 11:26:46

|

942人浏览过

|

来源于php中文网

原创

麒麟系统多线程程序意外退出是因UKUI电源管理、systemd会话超时和OOM Killer共同导致;需关闭UKUI节电、禁用ukui-power-manager、调整logind.conf空闲策略、降低oom_score_adj并用systemd用户服务托管。

麒麟系统如何管理多线程程序的后台执行

麒麟系统中运行Python多线程采集脚本、Java多线程服务或自研C++并发程序时,常出现进程意外退出、线程被静默终止、CPU占用率骤降却无日志报错——这是因默认的UKUI电源管理、systemd会话生命周期及内核调度策略共同干预了多线程程序的后台驻留能力。

防止多线程程序被UKUI自动节流

UKUI桌面环境在检测到“用户空闲”后,会向所有非前台进程发送SIGSTOP信号,导致你的多线程任务突然冻结,且不写入任何日志。

第一步:关闭图形界面层的节电开关
执行命令:gsettings set org.ukui.power-manager sleep-computer-ac 0
执行命令:gsettings set org.ukui.power-manager sleep-computer-battery 0

第二步:彻底禁用ukui-power-manager服务
执行:sudo systemctl stop ukui-power-manager && sudo systemctl mask ukui-power-manager
【mask操作不可逆,需手动unmask才能恢复,但这是阻止后台多线程被冻结的必要步骤】

第三步:验证是否生效
运行 systemctl status ukui-power-manager,输出中必须同时包含 masked 和 inactive (dead) 字样。

绕过systemd用户会话超时限制

麒麟V10/V11默认启用logind.conf中的IdleAction=lock与IdleActionSec=300,用户终端闲置5分钟后,整个user session会被systemd标记为stale并逐步kill其下所有进程——包括你用nohup启动的多线程Python主进程及其子线程。

方法一:临时解除当前会话超时(立即生效)
执行:systemd-inhibit --what=handle-lid-switch:suspend --who="multi-thread app" --why="prevent thread kill" bash -c 'sleep infinity'
该命令会向logind注册一个抑制锁,只要此bash进程存活,就不会触发IdleAction。

方法二:永久禁用用户会话空闲管理(推荐用于服务器型桌面)
编辑 /etc/systemd/logind.conf,将以下三行取消注释并修改为:
IdleAction=ignore
IdleActionSec=0
UserStopDelaySec=0
保存后执行 sudo systemctl restart systemd-logind。

确保多线程进程不被OOM Killer误杀

多线程程序往往申请大量虚拟内存(如Java堆+线程栈),但实际物理内存占用不高。当系统内存紧张时,内核OOM Killer可能依据错误的oom_score评估值将其选为牺牲者。

第一步:确认你的多线程主进程PID(例如Java服务):
pgrep -f "java.*-jar.*app.jar"

第二步:降低其被OOM选中的优先级:
echo -100 | sudo tee /proc/$(pgrep -f "java.*-jar.*app.jar")/oom_score_adj
数值范围为-1000(最不易被杀)到1000(最优先被杀),-100是安全保守值。

第三步:验证设置是否写入成功:
cat /proc/$(pgrep -f "java.*-jar.*app.jar")/oom_score_adj 应返回 -100。

用systemd用户服务托管多线程程序

这是最规范、可持久、可监控的托管方式,避免nohup/screen等临时方案在登出后失效。

① 创建用户级service文件:
mkdir -p ~/.config/systemd/user
vim ~/.config/systemd/user/multi-thread-app.service

② 写入以下内容(以Python多线程脚本为例):
[Unit]
Description=My Multi-thread Data Collector
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=5
User=$USER
WorkingDirectory=/home/$USER/app
ExecStart=/usr/bin/python3 /home/$USER/app/collector.py
Environment=PYTHONUNBUFFERED=1
LimitNPROC=65535
LimitSTACK=67108864
[Install]
WantedBy=default.target

③ 启用并启动服务:
systemctl --user daemon-reload
systemctl --user enable multi-thread-app.service
systemctl --user start multi-thread-app.service

④ 验证状态:
systemctl --user status multi-thread-app.service
观察Active状态为active (running),且Main PID对应的进程确实存在多个线程(可用 ps -T -p PID 查看)。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

1149

2025.12.24

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

383

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

559

2026.01.21

C# 多线程与异步编程
C# 多线程与异步编程

本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

389

2026.02.06

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

233

2026.03.16

Java 多线程与并发编程实战
Java 多线程与并发编程实战

深入讲解 Java 并发编程体系,涵盖 Thread / Runnable / Callable 线程创建方式、线程生命周期与状态转换、synchronized 同步锁与 Lock/ReentrantLock 显式锁、volatile 可见性保证、ThreadPool 线程池配置与调优(核心参数/拒绝策略)、JUC 并发工具类(CountDownLatch/CyclicBarrier/Semaphore/ConcurrentHashMa

349

2026.04.17

C++ 多线程使用教程大全
C++ 多线程使用教程大全

系统讲解 C++11 及后续标准引入的多线程编程能力,涵盖 std::thread 线程创建与生命周期管理、std::mutex / shared_mutex 互斥锁与读写锁、std::condition_variable 条件变量同步、std::atomic 原子操作与内存序(memory_order)、std::future / promise / async 异步任务、线程池的设计与实现、死锁检测与避免策略,帮助开发者编写正确高效

216

2026.04.28

Python多线程、多进程与并发编程教程大全
Python多线程、多进程与并发编程教程大全

系统讲解 Python 的并发与并行编程体系,涵盖 GIL 全局解释器锁的原理与影响分析、threading 模块的线程创建/锁/事件/信号量、multiprocessing 模块的进程创建/进程间通信(Queue/Pipe/共享内存)、concurrent.futures 线程池与进程池的统一接口、I/O 密集型与 CPU 密集型任务的方案选择、多线程竞态条件排查与线程安全数据结构、subprocess 子进程管理,帮助开发者根据任务

194

2026.05.08

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

0

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn