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

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

参考2,linux后台执行命令:&和nohup:https://blog.csdn.net/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环境,环境变量和主界面不一样。

猜你喜欢

转载自blog.csdn.net/tsq292978891/article/details/80457522