让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文件,记录程序运行时在终端产生的输出
- 1
- 2
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环境,环境变量和主界面不一样