nohup命令: Linux后台运行程序并实时查看输出
nohup python -u train.py > log.file 2>&1 &
注释:
nohup (no hang up),不挂起。
python train.py 是原本运行程序的命令.
-u (unbuffered,不缓存)这个参数加在python的后面,可以实时查看输出,而不用等把一段日志文件写入log.file后才能查看。
>log.file 注意有>号,是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。(文件名可自定义,如output.log等)
2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了log.file文件,即将标准出错也输出到out.file文件中。2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出。
最后一个&, 是让该命令在后台执行。
当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。(ps -ef | grep 进程号 或者 kill -9 进程号)
然后执行:
tail -f log.file
即可实时查看输出的命令。
一些快捷键和指令:
-
Ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态。 -
Ctrl + c
终止前台命令。 -
jobs
查看当前有多少在后台运行的命令。
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。
为避免账户非正常退出或者结束的时候程序终止,在使用nohup命令后台运行命令之后,建议使用exit正常退出当前账户,这样才能保证命令一直在后台运行。
更多推荐
所有评论(0)