• .sh是bash脚本文件,通过./name.sh来运行

    示例:

CUDA_VISIBLE_DEVICES=${gpuid}  python -u test_cylinder_asym.py \
2>&1 | tee logs_dir/${name}_logs_tee.txt
  • python -u开启 unbuffered 模式,这样将标准输出的结果不经缓存直接输出到日志文件(不输出到屏幕)

  • \是脚本的换行符,若语句过长可通过\换行

  • 2>&1

    2>&1应该分成两个部分来看,一个是2>以及另一个是&1

    其中2>就是将标准出错重定向到某个特定的地方;&1是指无论标准输出在哪里。

    所以2>&1的意思就是说无论标准出错在哪里,都将标准出错重定向到标准输出中。

    有时候希望将错误的信息重新定向到输出,就是将2的结果重定向至1中就有了”2>1”这样的思路,如果按照上面的写法,系统会默认将错误的信息(STDERR)2重定向到一个名字为1的文件中,而非所想的(STDOUT)中。因此需要加&进行区分。就有了 2>&1 这样的用法

  • | 管道

    管道的作用是提供一个通道,将上一个程序的标准输出重定向到下一个程序作为下一个程序的标准输入

    这里使用管道的目的是将程序的输出重定向到下一个程序,其最终目的是用来将输出存入txt文件中

  • tee

    tee从标准输入中读取,并将读入的内容写到标准输出以及文件中,所以这里tee命令的作用是将数据读入并写到标准输出以及log.txt中


tmux