如何连锁nohup命令以连续运行



我想连续运行一堆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所做的是捕获挂断信号,并确保记录了所有输出,因此应该没有什么不同。

相关内容

  • 没有找到相关文章

最新更新