实例
需求:因为远程连接会断开,现在有train.py
需要在Ubuntu需要在后台运行,同时需要记录下train.py输出的loss相关的信息。
解决方式:使用命令,nohup python -u train.py > test.log 2>&1 &
- nohup:表示 no hung up, 最后的&表示后台运行
- 2 输出错误信息到提示符窗口
- 1 表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件
- 最后会把日志文件输出到
train.log
文件
查看:
tail -f train.log
如果要实时查看日志文件使用命令
cat train.log
查看全部输出使用命令
扩展
常用命令管理指令:
-
jobs
:查看在后台执行的进程。注意:如果退出当前终端,则无法再次进入终端查看到后台进程。 -
ps -u
查看隶属于自己的进程,比较推荐。 -
fg %n
:将后台执行进程n调到前台执行,n表示jobnumber(通过jobs查看的进程编号,而非pid) -
bg %n
: 将在后台挂起的进程,继续执行 -
ctrl+z
:中断任务执行,类似于暂停执行的意思,执行该操作意味着当前的进程被挂起。
使用:fg %n
命令可以恢复进程的运行,执行bg %n
命令将被中断的任务放到后台执行。
执行ctrl+z操作,可以将当前进程挂起,执行其他操作,执行完后再使用fg %n
命令继续当前操作。 -
ctrl+c
: 前台进程终止 ,直接终止当前正在运行的进程。 -
ps -ef | grep train.py
: 查找所有正在运行包含train.py
的程序 -
kill %n
: 杀掉后台运行的进程,n表示jobnumber(通过jobs查看的进程编号,而非pid)或kill -9 pid
,-9 表示无条件终结。 -
disown -h %n
: 对于已经前端启动的任务,使用disown命令将其转到后端运行,并且忽略HUP信号,这样,断开连接后,程序会继续留在后台执行。
注意: %n 表示进程编号,无%则表示为pid。
Screen进行远程后台管理
简介
Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。
快速上手
- ubuntu下安装:
apt-get install screen
- 创建screen会话 :
screen -S myscreen_name
- 临时离开会话 :
Ctrl+A+D
当需要临时离开时(会话中的程序不会关闭,仍在运行)可以用快捷键 - 恢复会话:
screen -r myscreen_name
- 正在执行会话列表:
screen -ls
- 退出会话:
exit
出现[screen is terminating]
,表示已经成功退出screen会话。