【服务器】服务器进程运行不受本地终端影响的方法总结

服务器进程运行不受本地终端影响的方法总结

  • [1. 使用 nohup](#1. 使用 nohup)
  • [2. 使用 setsid](#2. 使用 setsid)
  • [3. 将命令放入后台 (&)](#3. 将命令放入后台 (&))
  • 总结
  • 参考

为了确保在集群或服务器上运行的长时间作业不受本地计算机网络中断或用户注销的影响,可以使用以下三种方法:nohup、setsid 和将命令放入后台 (&)。

下面是对这三种方法的详细说明:

1. 使用 nohup

nohup(no hang up)命令可以阻止进程接收到 HUP(hangup)信号。这意味着即使用户注销,使用 nohup 启动的进程仍然会继续运行。使用方法如下:

bash 复制代码
nohup your_command &

示例:如果你想在服务器上运行一个 Python 脚本 script.py,可以这样做:

bash 复制代码
nohup python script.py &

输出处理:默认情况下,nohup 会将命令的输出写入到 nohup.out 文件中。如果想指定输出文件,可以使用重定向:

bash 复制代码
nohup python script.py > output.log 2>&1 &
nohup python3 UDI_Beijing.py > UDI_Beijing.log 2>&1 &
nohup python3 UDI_CDMet.py > UDI_CDMet.log 2>&1 &

这里 > output.log 将标准输出重定向到 output.log,而 2>&1 将错误输出也重定向到同一文件。

2. 使用 setsid

setsid 命令用于创建一个新的会话,并将进程的父进程设置为 init 进程,从而使得该进程不再受当前终端的控制。同样,这样的进程也不会接收到 HUP 信号。使用方法如下:

bash 复制代码
setsid your_command &

示例:运行同样的 Python 脚本,可以这样做:

bash 复制代码
setsid python script.py &
setsid python3 UDI_CDMet.py &

注意:与 nohup 相似,你可能需要处理输出:

bash 复制代码
setsid python script.py > output.log 2>&1 &

3. 将命令放入后台 (&)

将命令放入后台并不直接防止 HUP 信号,但它可以在某些情况下实现类似效果。通过在命令后添加 &,程序将在后台运行,用户可以关闭终端窗口而不影响后台进程。但是,仍然建议结合其他方法来确保作业的持久性。例如:

bash 复制代码
(your_command) &

示例:运行后台任务:

bash 复制代码
(python script.py) &
python3 UDI_CDMet.py &
python3 UDI_Beijing.py &

注意:虽然这种方法可以让进程在后台执行,但如果用户注销,进程仍可能受到 HUP 信号的影响。因此,最好与 nohup 或 setsid 配合使用。

总结

  • 推荐方案:通常推荐使用 nohup 或 setsid 来确保长时间运行的作业不受网络或用户注销的影响。
  • 输出管理:确保正确处理输出,以便后续查看日志和结果。

参考

相关推荐
不一样的故事1265 分钟前
学习Python是一个循序渐进的过程,结合系统学习、持续实践和项目驱动,
开发语言·python·学习
@HNUSTer14 分钟前
Python数据可视化科技图表绘制系列教程(七)
python·数据可视化·科技论文·专业制图·科研图表
shizidushu16 分钟前
How to work with merged cells in Excel with `openpyxl` in Python?
python·microsoft·excel·openpyxl
代码炼金术士22 分钟前
服务器更换jar包,重启后端服务
服务器·jar
郝学胜-神的一滴24 分钟前
深入探索 Python 元组:从基础到高级应用
运维·服务器·开发语言·python·程序人生
CheungChunChiu27 分钟前
嵌入式 Linux 启动机制全解析:从 Boot 到 Rootfs
linux·运维·服务器·ubuntu·uboot·boot·extboot
白鹭29 分钟前
nginx(介绍+源码安装+平滑升级和回滚)
linux·运维·服务器·nginx·回滚·平滑升级
技术程序猿华锋32 分钟前
深度解码OpenAI的2025野心:Codex重生与GPT-5 APIKey获取调用示例
人工智能·vscode·python·gpt·深度学习·编辑器
知星小度S4 小时前
系统核心解析:深入操作系统内部机制——进程管理与控制指南(一)【进程/PCB】
linux·运维·服务器·进程
xchenhao4 小时前
SciKit-Learn 全面分析分类任务 breast_cancer 数据集
python·机器学习·分类·数据集·scikit-learn·svm