如何Xshell退出服务器,服务器里的程序仍可以运行,,和如何通过终端关闭程序

本文介绍了如何在Xshell中通过nohup命令让程序在后台持续运行,即使退出Xshell也不会影响程序的执行。同时,讲解了如何查看所有进程并依据PID使用kill命令关闭特定进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们租了远程服务器后,需要通过终端对服务器进行访问,个人喜欢使用Xshell,方便一些。

当你运行一个深度学习代码,需要训练很长时间,但是又没办法关闭程序,这时候你可以通过命令行输入:nohup 运行代码 &

比如你终端需要输入python train.py进行代码的运行,

你可以输入nohup python train.py & 表示代码不挂起,就不会关闭了

同时,可以看到在代码文件夹里面多了一个nohup.out这样一个文件夹

又有一个问题来了,当你Xshell重新使用的时候,是看不到正在运行的程序的,这时候需要kill掉进程,我们可以输入ps aux 所有进程情况

ps aux

USER:进程拥有者   

PID:进程号 

### 如何配置 Xshell退出时自动停止运行中的容器 为了实现当关闭 Xshell 会话时能够同时停止 Docker 容器的功能,可以通过设置 Xshell 的 `logout` 脚本或者利用 SSH 登录后的挂起命令来触发容器的停止操作。以下是具体的解决方案: #### 方法一:通过 SSH 配置文件设置 logout 命令 可以在远程服务器上的 `.bash_logout` 文件中添加一条用于停止容器的脚本命令。这样,在用户退出终端会话时,该命令会被执行。 ```bash #!/bin/bash # 获取所有正在运行的容器 ID 并停止它们 docker stop $(docker ps -q) ``` 上述脚本的作用是从当前运行的所有容器中获取其 ID 列表并逐一调用 `docker stop` 来优雅地终止这些容器[^1]。 如果仅希望针对特定名称或标签的容器,则可以修改此脚本如下所示: ```bash #!/bin/bash # 使用过滤条件指定要停止的目标容器 docker stop $(docker ps --filter name=your_container_name_prefix* -q) ``` #### 方法二:借助 nohup 或 screen 工具保持后台进程独立性 另一种方法是在启动容器时将其作为守护程序运行,并确保即使父 shell 关闭也不会影响到它。然而,这种方法本身并不能满足题目需求——即在断开连接的同时销毁容器实例;因此需要额外编写清理逻辑配合使用。 例如,创建一个新的 Bash 函数定义于用户的环境变量加载路径下(如 ~/.profile 或者 ~/.bashrc 中): ```bash function start_and_auto_stop() { CONTAINER_NAME=$1 trap 'echo Stopping container... && docker stop $CONTAINER_NAME' EXIT docker run -d --name "$CONTAINER_NAME" your_image_command_here } ``` 这我们引入了一个名为 `trap` 的内置 Shell 功能,用来监听特殊信号事件的发生时刻,比如这的 `EXIT` 表示的是当前脚本即将结束前一刻的动作处理函数注册过程[^3]。 #### 注意事项 需要注意的是,以上两种方案各有优缺点。前者简单直接但可能误杀其他无关的服务型长期存活类容器;后者更加灵活可控却增加了复杂度以及潜在风险隐患。实际应用过程中应当权衡利弊做出合理选择。 ```python import os os.system('docker stop $(docker ps -q)') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug生成中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值