Linux命令-setsid(运行程序于新的会话)
Linux命令-setsid运行程序于新的会话快速参考基本语法安装 setsid常用选项实际应用场景setsid 与 nohup/ disown 对比在脚本中使用 setsid停止由 setsid 启动的进程故障排查总结快速参考setsid用于在新会话session中运行程序使程序脱离当前终端成为守护进程daemon。setsid通过调用setsid()系统调用使程序脱离当前终端的控制即使终端关闭程序也会继续运行。核心场景将前台程序转为后台守护进程脱离终端控制。基本语法# 基本语法setsid[选项]程序[参数...]# 在新会话中运行程序setsidsleep3600# 运行程序并输出到日志setsid myserver/var/log/myserver.log21安装 setsid# setsid 是 util-linux 包的一部分通常已预装# 如果未安装可以手动安装# Debian/Ubuntusudoaptupdatesudoaptinstallutil-linux# RHEL/CentOSsudoyuminstallutil-linux# Arch Linuxsudopacman-Sutil-linux# 验证安装whichsetsid setsid--version常用选项# -c, --close-all-files 关闭所有文件描述符setsid-cmyprogram# -f, --no-fork 不 fork直接替换当前进程不常用setsid-fmyprogram# -w, --wait 等待程序退出返回退出码setsid-wmyprogram# --help 显示帮助setsid--help# --version 显示版本setsid--version实际应用场景# 场景1手动将程序转为守护进程 # 问题运行前台程序关闭终端后程序退出# 解决使用 setsid# 错误做法sleep3600# 虽然后台运行但终端关闭后仍然会收到 SIGHUP# 正确做法setsidsleep3600# 现在即使关闭终端sleep 也会继续运行# 场景2启动服务器程序 # 启动一个简单的 HTTP 服务器Pythonsetsid python3-mhttp.server8080/var/log/py_http.log21# 验证psaux|grephttp.server# 场景3在脚本中创建守护进程 #!/bin/bash# 守护进程脚本示例LOG_FILE/var/log/mydaemon.log# 使用 setsid 启动守护进程setsid ./mydaemon$LOG_FILE21DAEMON_PID$!echo守护进程已启动PID:$DAEMON_PIDecho日志文件:$LOG_FILE# 场景4配合 nohup 使用 # nohup 也可以实现类似功能但 setsid 更彻底创建新会话# 使用 nohupnohupsleep3600# 使用 setsid更推荐setsidsleep3600setsid 与 nohup/ disown 对比# nohup忽略 SIGHUP 信号 # 优点简单# 缺点仍然在同一个会话中不是真正的守护进程nohupmyprogram# disown从 Shell 的作业表中移除 # 优点可以事后将程序转为后台# 缺点依赖于 Shell不适合脚本sleep3600disown# setsid创建新会话真正的守护进程# 优点彻底脱离终端适合脚本# 缺点命令稍复杂setsid myprogram# 总结 # 交互式使用 nohup 或 disown# 脚本中使用 setsid推荐# 需要输出日志setsid配合重定向在脚本中使用 setsid#!/bin/bash# 使用 setsid 创建守护进程的完整脚本DAEMRON_NAMEmydaemonDAEMRON_BIN/usr/local/bin/$DAEMRON_NAMEPID_FILE/var/run/$DAEMRON_NAME.pidLOG_FILE/var/log/$DAEMRON_NAME.log# 检查是否已在运行if[-f$PID_FILE];thenOLD_PID$(cat$PID_FILE)ifps-p$OLD_PID/dev/null21;thenecho错误$DAEMRON_NAME已在运行 (PID:$OLD_PID)exit1elseecho警告PID 文件存在但进程不存在清理...rm-f$PID_FILEfifi# 使用 setsid 启动守护进程echo正在启动$DAEMRON_NAME...setsid$DAEMRON_BIN$LOG_FILE21DAEMRON_PID$!echo$DAEMRON_PID$PID_FILEecho守护进程已启动PID:$DAEMRON_PIDecho日志文件:$LOG_FILEecho使用 kill$DAEMRON_PID停止守护进程停止由 setsid 启动的进程# 1. 查看进程psaux|grepmyprogram# 2. 获取 PIDPID$(pgrep myprogram)# 3. 停止进程kill$PID# 4. 如果无法停止强制终止kill-9$PID故障排查# 问题1setsid 后程序仍然退出# 原因程序自身有退出逻辑如配置文件错误# 解决查看程序日志tail-f/var/log/myprogram.log# 问题2setsid 后无法停止进程# 原因没有记录 PID# 解决使用 PID 文件记录setsid myprogramecho$!/var/run/myprogram.pid# 停止时kill$(cat/var/run/myprogram.pid)# 问题3setsid 不生效# 原因程序主动退出新会话# 解决检查程序是否调用了 setsid() 自身总结核心价值setsid是将程序转为守护进程的基础工具通过创建新会话使程序彻底脱离终端。最佳实践使用setsid program 启动守护进程配合日志重定向 log 21记录 PID 到文件echo $! pid.file在脚本中使用setsid而非nohup常用组合setsid program 启动守护进程setsid -w program等待程序退出setsid program log 21 重定向日志注意setsid仅是创建守护进程的第一步完整的守护进程还需要处理信号、关闭文件描述符、切换工作目录等。

相关新闻

AI智能体自主进化:从理论到电商客服实践

AI智能体自主进化:从理论到电商客服实践

1. 项目概述:AI智能体的自主进化与落地实践 去年我在开发一个智能客服系统时,发现现有AI助手只能按预设流程工作。当用户问出训练集之外的问题时,系统就会陷入"抱歉,我不明白"的死循环。这让我开始思考:什么…

2026/7/26 10:03:53 阅读更多 →
倒数的金融应用

倒数的金融应用

这是一个非常务实且有深度的问题。很多时候,我们在数学书上看到的“极限”、“倒数”和“不等式”看起来很抽象,但它们在金融股票市场和日常生活中,其实有着极其广泛且本质的应用。 以下为您梳理这些数学思想是如何落地的:一、 在…

2026/7/26 10:03:53 阅读更多 →
只有当 
a和 b同为正数(或者同为负数)时,取倒数才一定会让不等号的方向发生改变。

只有当 a和 b同为正数(或者同为负数)时,取倒数才一定会让不等号的方向发生改变。

这个规律初看确实会让人转不过弯来,但它的推导过程其实非常漂亮且易懂。 为了帮您彻底理解它,我们可以从生活直觉、严格代数推导以及快速变形三个角度来看:角度一:生活直觉 —— 分蛋糕法 假设我们有 1 个蛋糕,我们要把…

2026/7/26 10:03:53 阅读更多 →

最新新闻

如何在Linux系统快速部署exfat-nofuse驱动?3种安装方式完整指南

如何在Linux系统快速部署exfat-nofuse驱动?3种安装方式完整指南

如何在Linux系统快速部署exfat-nofuse驱动?3种安装方式完整指南 【免费下载链接】exfat-nofuse Android ARM Linux non-fuse read/write kernel driver for exFat and VFat Android file systems 项目地址: https://gitcode.com/gh_mirrors/ex/exfat-nofuse …

2026/7/26 10:09:55 阅读更多 →
嵌入式视频编码:XDAIS标准接口与MPEG4运动矢量访问实战

嵌入式视频编码:XDAIS标准接口与MPEG4运动矢量访问实战

1. 项目概述:从标准接口到编码细节的深度探索在嵌入式多媒体开发,尤其是基于DSP(数字信号处理器)的视频编码领域,效率和标准化是永恒的主题。当你面对一块像TI DM6446这样的异构多核处理器,需要在ARM端进行…

2026/7/26 10:09:55 阅读更多 →
TMS320DM35x音频串行端口(ASP)配置详解:从时钟到数据流的嵌入式音频开发实践

TMS320DM35x音频串行端口(ASP)配置详解:从时钟到数据流的嵌入式音频开发实践

1. 项目概述:深入理解TMS320DM35x的音频串行端口在嵌入式音频系统开发中,如何高效、可靠地在处理器与外部音频编解码器之间传输PCM数据流,是一个既基础又关键的问题。如果你正在基于TI的TMS320DM35x系列芯片设计语音对讲设备、便携式播放器或…

2026/7/26 10:09:55 阅读更多 →
如何在Android 9+设备上安装NPatch?3分钟快速上手教程

如何在Android 9+设备上安装NPatch?3分钟快速上手教程

如何在Android 9设备上安装NPatch?3分钟快速上手教程 【免费下载链接】NPatch NPatch是一个复刻自LSPatch,以LSPosed为基础的免root的Xposed框架 项目地址: https://gitcode.com/gh_mirrors/npa/NPatch NPatch是一款基于LSPosed的免rootXposed框架…

2026/7/26 10:09:55 阅读更多 →
如何快速掌握LosslessCut:无损视频剪辑完整实践指南

如何快速掌握LosslessCut:无损视频剪辑完整实践指南

如何快速掌握LosslessCut:无损视频剪辑完整实践指南 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut LosslessCut是一款革命性的无损视频编辑工具&#xff…

2026/7/26 10:09:55 阅读更多 →
Django毕设项目:基于 Python 的美容门店客户数据统计与分层筛选系统 (源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于 Python 的美容门店客户数据统计与分层筛选系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/26 10:08:55 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻