我经常运行命令
squeue -u $USER | tee >(wc -l)
where squeue
is a 泥浆命令 https://slurm.schedmd.com/squeue.html查看您正在运行多少个作业。这给了我两个输出squeue
并自动告诉其中有多少行。
我怎么能够watch
这个命令?
watch -n.1 "squeue -u $USER | tee >(wc -l)"
结果是
Every 0.1s: squeue -u randoms | tee >(wc -l) Wed May 9 14:46:36 2018
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `squeue -u randoms | tee >(wc -l)'
来自watch
手册页:
请注意,命令被赋予“sh -c”,这意味着您可能需要使用额外的引号才能获得所需的效果。
sh -c
也不支持进程替换,您在此处使用的语法为>()
.
幸运的是,您正在做的事情实际上并不需要该语法:
watch -n.1 'out=$(squeue -u "$USER"); echo "$out"; { echo "$out" | wc -l; }'
...或者,如果你really想要使用您的原始代码,即使性能受到严重损失(不仅开始,而且开始two每十分之一秒就有新炮弹——第一次sh
, 进而bash
):
bash_cmd() { squeue -u "$USER" | tee >(wc -l); } # create a function
export -f bash_cmd # export function to the environment
watch -n.1 'bash -c bash_cmd' # call function from bash started from sh started by watch
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)