当前位置: 首页 > article >正文

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

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

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

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

1. 使用 nohup

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

nohup your_command &

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

nohup python script.py &

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

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 信号。使用方法如下:

setsid your_command &

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

setsid python script.py &
setsid python3 UDI_CDMet.py &

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

setsid python script.py > output.log 2>&1 &

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

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

(your_command) &

示例:运行后台任务:

(python script.py) &
python3 UDI_CDMet.py &
python3 UDI_Beijing.py &

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

总结

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

参考


http://www.kler.cn/a/442171.html

相关文章:

  • 深入内核讲明白Android Binder【二】
  • Linux使用SSH连接GitHub指南
  • [0242].第4-3章:SpringBoot2核心技术笔记
  • java spring,uName,kValue,前端传值后端接不到
  • MySQL(七)MySQL和Oracle、PostgreSQL的区别
  • 28:CAN总线入门一:CAN的基本介绍
  • 【AIGC安全】CCF-CV企业交流会直播回顾:探寻AI安全治理,共筑可信AI未来
  • MySQL 实战:小型项目中的数据库应用(一)
  • springcloud-gateway获取应用响应信息乱码
  • CSS系列(14)--后处理器详解
  • 数据仓库工具箱—读书笔记02(Kimball维度建模技术概述02、事实表技术基础)
  • OpenGL —— 2.6.1、绘制一个正方体并贴图渲染颜色(附源码,glfw+glad)
  • 【VSCode插件开发】集成 React 18(十)
  • MySQL基础 -----MySQL数据类型
  • fiddler设置抓取https,还抓取不到https如何解决?
  • Scala的泛型界限
  • 【漏洞分析】DDOS攻防分析(四)——TCP篇
  • 用机器学习和深度学习分别实现鸢尾花分类
  • H3C MPLS跨域optionA
  • 并发测试Java(spring boot) VS C#(ASP.NET CORE)
  • SpringAI人工智能开发框架002---SpringAI项目搭建_依赖导入_maven仓库引入_接口中转
  • 力扣-图论-16【算法学习day.66】
  • 调用钉钉接口发送消息
  • Dcoker Redis哨兵模式集群介绍与搭建 故障转移 分布式 Java客户端连接
  • arm Rk3588 更新固件
  • nodepad之正则表达式删除无关键字符串的行