当使用ssh进行远程代码运行时,控制端电脑通常不能出现任何意外。然而,运行深度学习程序通常需要数小时或数天的时间,这意味着我们的IDE不能关闭。一旦出现非人为因素(如断电、断网或IDE卡死关闭),远程程序也会中断。因此,将程序灵活地运行在服务器上,不受控制端因素的影响至关重要。
第一种方法: &
第一种方法是在命令行最后加&符号
# 执行文件 ./test.py & # 查看是否在后台运行 ps -ef|grep test # 后台的程序 需要关闭时,需要kill命令停止 killall [程序名]
注意:这种方法,查看运行日志很不方便(不推荐)
第二种方法: nohup
nohup python -u test.py > test.log 2>&1 &
参数说明:
python test.py python 运行test.py文件
-u :表程序不启用缓存,也就是把输出直接放到log中,没这个参数的话,log文件的生成会有延迟
> :test.log 将输出日志保存到这个log中
2>1 :2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
2>&1 :&与1结合就代表标准输出了,就变成错误重定向到标准输出& :代表该命令在后台执行
查看nohup的后台进程:
jobs
第三种方法: screen
Screen,虚拟终端管理器。可以在后台管理终端界面,防止SSH断开以后任务停止运行。
安装screen
yum install -y screen
创建一个新的窗口:执行完命令后会新建一个空白窗口。需要运行的程序在该窗口运行即可
screen -S test
screen -S 为新建指令,test为窗口名称
退出当前窗口
ctrl+a+d (方法1:保留当前窗口) screen -d (方法2:保留当前窗口) exit (方法3:退出程序,并关闭窗口)
回到后台运行程序的子窗口: screen -r id或窗口名称
查看当前所有的screen进程: screen -ls
彻底退出screen进程: exit
Ctrl+a c :创建窗口 Ctrl+a w :窗口列表 Ctrl+a n :下一个窗口 Ctrl+a p :上一个窗口 Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换 Ctrl+a K(大写) :关闭当前窗口,并且切换到下一个窗口 (当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态) exit :关闭当前窗口,并且切换到下一个窗口 (当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态) Ctrl+a d :退出当前终端,返回加载screen前的shell命令状态
标签:总结,窗口,Ctrl,screen,程序,test,Linux,后台 From: https://www.cnblogs.com/LXP-Never/p/17875420.html