$command 2>&1|tee log/$job_name-$now.log &
$command
表示要跑的命令,比如 python train.py
2>&1
参考
https://www.runoob.com/linux/linux-shell-io-redirections.html
https://www.jb51.net/article/169778.htm
其中 2
表示标准错误输出; 1
表示标准输出;>&
将两侧的标准输出合并;|
管道,将 |
前面的输送到 |
后面
tee
命令
从标准输入中复制到每一个文件,并输出到标准输出。
也就是说 tee
命令将管道送来的输入 一方面输出到标准输出
屏幕,一方面输出到后面的文件 log/log/$job_name-$now.log
最后面的 &
表示将这个任务放到后台执行,这个命名可以用于大文件复制终端卡死的情况,这样就能放到后台复制,就可以立即继续在同一个终端上工作了,甚至关闭终端也不影响这个任务的正常执行。
参考: https://linux.cn/article-10587-1.html?pr
这样就可以将 标准错误输出 和 标准输出 都进行记录,而普通的记录log的方法在程序运行正常时是能记录的,但是当程序报错时出错的原因则不能记录