我想连续运行一堆nohup命令,并将输出存储在不同的文件中。
我想出了这个:
$ nohup python3 foo.py 0 &> nohup-0-foo.out &&
nohup python3 foo.py 1 &> nohup-1-foo.out &&
nohup python3 foo.py 2 &> nohup-2-foo.out &&
nohup python3 foo.py 3 &> nohup-3-foo.out &&
nohup python3 foo.py 4 &> nohup-4-foo.out &
但这似乎不起作用(python3 foo.py 0
被执行,但在此之后停止(。
Q: 如何使命令连续运行?
耦合方式。
第一,把它们都放在一个文件里-
$: cat script
#!/bin/bash
for i in {0..4}; do python3 foo.py $i &> $i.out || break; done
然后运行它。
nohup ./script > script.out &
第二,如果你只是想让在命令行上访问它:
{ trap '' HUP; for i in {0..4}; do python3 foo.py $i &> 0.out || break; done; } &
或
{ trap '' HUP;
python3 foo.py 0 &> 0.out &&
python3 foo.py 1 &> 1.out &&
python3 foo.py 2 &> 2.out &&
python3 foo.py 3 &> 3.out &&
python3 foo.py 4 &> 4.out & # why running *this one* in background?
}
基本上nohup
所做的是捕获挂断信号,并确保记录了所有输出,因此应该没有什么不同。