之前主要是参考https://www.cnblogs.com/chason95/articles/9760291.html 一般使用

python test.py > ./log.txt
或
python test.py | tee ./log.txt

然后就会缓存很多输出后才能在屏幕或log中查到,就很难受。

后来领导给我了一条命令

srun --partition=GTX1080 --mpi=pmi2 --gres=gpu:1 -n1 --ntasks-per-node=1 --job-name=TEST --kill-on-bad-exit=1 python -u  test.py > log.txt 2>&1 &

去掉srun部分,大概是

python -u  test.py > log.txt 2>&1 &

这是啥玩意儿?(ubuntu都是用到了才学的,所以猛地一看有点懵逼)

但是这样就可以在log中实时看到输出信息了(tail -f log.txt)

那么这些乱七八糟的参数是啥意思呢?

首先,python -u

-u     : force the binary I/O layers of stdout and stderr to be unbuffered;
         stdin is always buffered; text I/O layer will be line-buffered;
         also PYTHONUNBUFFERED=x

原来如此!卡我的设置是这个!

然后>,就是简单的重定向。

2>&1,这个又是啥呢?

There are two forms of redirection the standard output and standard error into standard output

2>&1就是其中一个,另一个是&>,那他们有什么区别呢?

Only >& works in csh or tcsh

In ksh only 2>&1 works.

dash use >file 2>&1 redirection only

csh,tcsh,ksh,dash是啥参考https://blog.csdn.net/LEON1741/article/details/77931460

最后的&: the ampersand & at the end makes a command run in the background。这样这条命令就可以在后台跑不用占这一个shell了。(用screen可以达到同样的效果,不过没这个方便。)

做个小笔记,就酱。

 

参考资料:

http://www.eetop.cn/blog/html/03/6503-25123.html

https://blog.csdn.net/LEON1741/article/details/77931460

https://askubuntu.com/questions/635065/what-is-the-differences-between-and-21

https://askubuntu.com/questions/833833/what-does-command-do/833848

版权声明:本文为chason95原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chason95/p/9872985.html