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

断开ssh连接程序继续运行

在使用 SSH 远程连接服务器时,我们常希望在断开连接后仍然让程序继续运行,以下是几种常见的方法:

1. 使用 screen 或 tmux

screen 和 tmux 是两款非常强大的终端复用工具,它们允许你在后台运行会话,即使断开 SSH 连接,程序也会继续运行。
screen
安装 screen

sudo apt-get install screen  # Ubuntu/Debian
sudo yum install screen      # CentOS
sudo pacman -S screen        # Arch 

例如创建一个名为 mysession 的会话

screen -S mysession

在 screen 会话中启动程序,例如

python myscript.py

断开当前会话:
按下 Ctrl+A,然后按 D 键,这将把会话放到后台。

重新连接到会话:

screen -r mysession

tmux
安装 tmux

sudo apt-get install tmux  # Ubuntu/Debian
sudo yum install tmux      # CentOS
sudo pacman -S tmux        # Arch Linux

启动 tmux 会话

tmux new -s mysession

断开当前会话:
按下 Ctrl +B 然后按 D 键,这将把会话放到后台。

重新连接到会话

tmux attach -t mysession

2.使用 nohup

运行程序

nohup python myscript.py &

这将把程序放到后台运行,并将输出重定向到 nohup.out 文件。

查看输出:

cat nohup.out

3.使用 disown

如果你已经启动了一个程序,但忘记使用 screennohup ,可以使用 disown 命令。
启动程序

python myscript.py

将程序放到后台:
按下 Ctrl +Z,然后运行 bg

bg

使用 disown

disown

这将使程序在后台运行,并且不会被终止。

4.使用 systemdsupervisord

systemd 是 Linux 系统的初始化系统,supervisord 是一个用 Python 编写的进程控制工具
systemd
创建服务文件:
/etc/systemd/system/ 目录下创建一个服务文件,例如 myscript.service

[Unit]
Description=My Script Service

[Service]
ExecStart=/usr/bin/python /path/to/myscript.py
Restart=always

[Install]
WantedBy=multi-user.target

启动服务

sudo systemctl start myscript

设置开机启动

sudo systemctl enable myscript

supervisord
安装 supervisord:

sudo apt-get install supervisor

配置程序:
/etc/supervisor/conf.d/ 目录下创建一个配置文件,例如 myscript.conf

[program:myscript]
command=/usr/bin/python /path/to/myscript.py
autostart=true
autorestart=true
stdout_logfile=/var/log/myscript.log
stderr_logfile=/var/log/myscript.err

更新配置并启动:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myscript

总结
• 如果需要简单地让程序在后台运行,推荐使用 screen 或 tmux
• 如果只是临时需要让程序继续运行,可以使用 nohupdisown
• 如果需要更复杂的程序管理,可以使用 systemdsupervisord

相关文章:

  • 【进程 】
  • Windows系统本地部署DeepSeek-R1+本地知识库+联网搜索+Agent功能
  • 每日定投40刀BTC(4)20250218 - 20250222
  • Linux 驱动入门(5)—— DHT11(温湿度传感器)驱动
  • 迎接2025,立个flag
  • uniapp 中使用天地图,安卓端、h5
  • 解析多模态、Agent与Code模型的演进
  • 用Python实现Excel数据同步到飞书文档
  • 如何选择近视泳镜的度数
  • 自制操作系统学习第七天
  • 个人测试面经总结三
  • Spring Boot中如何使用Thymeleaf模板引擎
  • 利用vtkTransform类对模型位置变换、缩放、镜面成像等
  • 医疗报销系统的设计与实现(代码+数据库+LW)
  • 深入HBase——核心组件
  • 球队训练信息管理系统设计与实现(代码+数据库+LW)
  • 分布式事务三阶段协议
  • 【算法与数据结构】单调队列
  • 在PHP Web开发中,实现异步处理有几种常见方式的优缺点,以及最佳实践推荐方法
  • 嵌入式之条件编译
  • 2025五一档电影票房破7亿
  • 马斯克“星舰基地”成为新城镇,首任市长为SpaceX员工
  • 看着不爽就滚蛋!郑州大学第一附属医院一科室公众号被曝运营人员辱骂他人
  • 澳大利亚联邦选举投票正式开始
  • 经济日报社论:书写新征程上奋斗华章
  • 圆桌|如何应对特朗普政府的关税霸凌?一种联合国视角的思考