让Linux关闭终端(关闭SSH等)后,程序继续运行

本文探讨了当终端关闭时程序为什么会随之终止,并提供了两种解决方案:使用nohup命令和screen命令。nohup命令可以将程序的输出重定向到文件中,而screen命令则能在后台持续运行程序,即使终端被关闭。

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

关于为什么关闭终端后,程序会终止,可以查看这篇博文:https://blog.youkuaiyun.com/gatieme/article/details/52777721

参考2,linux后台执行命令:&和nohup:https://blog.youkuaiyun.com/liuyanfeier/article/details/62422742

大概就是,终端关闭后,系统会发送一个SIGHUP(挂断信号),自动地终止在当前会话中运行的程序。

解决方法:

1 . 使用nohup命令

nohup command > myout.file 2>&1 &  # 将日志输出到myout.file文件中
nohup command & # 会在当前目录下创建一个nohup.out文件,记录程序运行时在终端产生的输出

2 . 使用 screen命令

step1:按screen,回车进入子界面
step2:./single_model_train_val.sh  运行程序
step3:按ctrl+a再按d,程序会在关闭终端后继续运行
这样暂停了子界面,会显示[detached]的字样,这时候 我回到了父界面;
[detached from 26454.pts-1.A01-R04-I231-16-7280278]
step4:screen -ls  查看子页面信息,.pts前面数字为子页面序号。

(pytorch-v0.3) [root@A01-R04-I231-16-7280278 Consumer]# screen -ls
There are screens on:
        26454.pts-1.A01-R04-I231-16-7280278     (Detached)
        769.pts-1.A01-R04-I231-16-7280278       (Detached)
2 Sockets in /var/run/screen/S-root.
26454是主界面的序号,769是子界面的序号。

step5:screen –r 子页面序号,这时候就回到之前程序运行的序号。

# 但是实际中我遇到一个问题,在子界面中激活我自己创建的conda环境,环境变量和主界面不一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值