news 2026/5/30 23:55:49

后台运行程序:让程序不受终端影响

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
后台运行程序:让程序不受终端影响

后台运行程序:让程序不受终端影响

SSH断开,程序就停了?

今天聊聊怎么让程序在后台持续运行。

问题原因

当你SSH登录服务器运行程序,断开SSH后程序会收到SIGHUP信号然后退出。

方法一:nohup命令

最简单的方法:

nohup命令&

例子:

nohupjava-jarapp.jar&
  • nohup:忽略SIGHUP信号
  • &:后台运行

输出会保存到nohup.out文件。

指定输出文件:

nohupjava-jarapp.jar>app.log2>&1&

查看后台进程:

jobspsaux|grepapp.jar

方法二:screen命令

screen可以创建一个"虚拟终端",断开后程序继续运行。

安装:

aptinstallscreen# Ubuntuyuminstallscreen# CentOS

基本用法:

# 创建新会话screen-Smyapp# 在会话里运行程序java-jarapp.jar# 按Ctrl+A然后按D,脱离会话(程序继续运行)# 查看会话列表screen-ls# 重新连接会话screen-rmyapp

常用快捷键(先按Ctrl+A):

  • d:脱离会话
  • k:关闭当前窗口
  • ?:帮助

方法三:tmux命令(推荐)

tmux比screen功能更强,是现代化的选择。

安装:

aptinstalltmux# Ubuntuyuminstalltmux# CentOS

基本用法:

# 创建新会话tmux new-smyapp# 运行程序java-jarapp.jar# 按Ctrl+B然后按D,脱离会话# 查看会话tmuxls# 重新连接tmux attach-tmyapp# 关闭会话tmux kill-session-tmyapp

常用快捷键(先按Ctrl+B):

  • d:脱离
  • c:新建窗口
  • n:下一个窗口
  • p:上一个窗口
  • %:左右分屏
  • ":上下分屏

方法四:systemd服务(生产推荐)

正式环境推荐把程序注册成systemd服务。

创建服务文件:

sudovim/etc/systemd/system/myapp.service
[Unit] Description=My Application After=network.target [Service] Type=simple User=app WorkingDirectory=/opt/app ExecStart=/usr/bin/java -jar /opt/app/myapp.jar Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

启用服务:

sudosystemctl daemon-reloadsudosystemctlenablemyappsudosystemctl start myapp

管理服务:

systemctl start myapp systemctl stop myapp systemctl restart myapp systemctl status myapp# 查看日志journalctl-umyapp-f

选择建议

场景推荐方法
临时运行脚本nohup
调试开发tmux/screen
正式生产systemd

查看后台进程

# 查看所有进程psaux# 查找特定进程psaux|grepjavapgrep-fmyapp# 结束进程kill进程IDkill-9进程ID# 强制

远程管理

我用星空组网管理多台服务器,经常需要远程查看后台进程:

# 查看各服务器Java进程foripin10.26.1.{10..15};doecho"===$ip==="sshroot@$ip"ps aux | grep java | grep -v grep"done

小结

后台运行程序的方法:

  1. 临时用nohup 命令 &
  2. 调试用:tmux或screen
  3. 生产用:systemd服务

记住:生产环境一定要用systemd,可以开机自启、崩溃自动重启。

有问题评论区交流~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 1:20:42

打造个人云端图书馆:Docker-Calibre-Web终极部署指南

打造个人云端图书馆:Docker-Calibre-Web终极部署指南 【免费下载链接】docker-calibre-web 项目地址: https://gitcode.com/gh_mirrors/do/docker-calibre-web 想要随时随地阅读你的电子书收藏吗?Docker-Calibre-Web项目为你提供了一个完美的解决…

作者头像 李华
网站建设 2026/5/29 14:05:47

零基础搭建个人移动端有声图书馆:从入门到精通完整指南

零基础搭建个人移动端有声图书馆:从入门到精通完整指南 【免费下载链接】audiobookshelf-app Mobile application for Audiobookshelf 项目地址: https://gitcode.com/gh_mirrors/au/audiobookshelf-app 你是否经常遇到这样的困扰?通勤路上想听有…

作者头像 李华
网站建设 2026/5/29 11:10:21

如何快速配置Locale Remulator:新手完整指南

Locale Remulator是一款强大的系统区域和语言环境设置工具,专门用于解决多语言软件和游戏的语言环境兼容问题。无论你是游戏爱好者还是软件开发者,这款工具都能帮助你轻松应对各种语言环境挑战。 【免费下载链接】Locale_Remulator System Region and La…

作者头像 李华
网站建设 2026/5/30 10:23:34

西门子PLC做的电池焊接程序,电池包里面有n*m行列个电池,主要功能: 1.每个电池的焊点坐标...

西门子PLC做的电池焊接程序,电池包里面有n*m行列个电池,主要功能: 1.每个电池的焊点坐标能够独立调整 2.每个电池的焊接能量可独立选择 3.任意一个或者多个电池可以随机选择不焊接 4.可以选择某一边电池焊接 5.可以灵活选择焊接方式 6.可存储…

作者头像 李华
网站建设 2026/5/28 21:41:16

【紧急避坑指南】:Dify环境下DOCX外部图片丢失的预防与补救措施

第一章:Dify环境下DOCX外部图片丢失问题概述 在使用 Dify 平台处理 DOCX 文档时,一个常见但容易被忽视的问题是外部引用图片的丢失。由于 DOCX 文件本质上是一个 ZIP 压缩包,内部包含 XML 结构与资源文件夹(如 word/media/&#x…

作者头像 李华
网站建设 2026/5/28 20:16:20

2026趋势:AI在性能测试中的突破:从自动化到智能化演进

性能测试的十字路口与AI的契机 性能测试,作为保障软件系统稳定性、可扩展性和用户体验的关键环节,长期以来面临着测试场景复杂度剧增、资源消耗巨大、结果分析耗时、瓶颈定位困难等严峻挑战。传统的基于脚本录制回放、预定义场景和人工经验分析的测试方…

作者头像 李华