我想创建一个bash脚本,并满足以下要求:
要求:
脚本:
- 并行启动多个进程的执行
- 在继续其自身的执行之前等待进程完成执行。
每个过程:
- 需要相对较长的时间才能完成执行
- 应该将其日志输出到子gnome终端窗口和日志文件,该文件应该与其他进程的终端窗口和日志文件以及父脚本使用的终端窗口不同。
- 即使用户关闭了相应的子gnome终端窗口也不会结束。这意味着即使用户关闭了子gnome终端窗口或在子gnome终端窗口上按了ctrl+c,它也会继续运行并将日志输出到相应的日志文件中。
我的尝试:
我尝试用下面的代码来实现这一点:
nohup gnome-terminal --wait -- bash -c "cd /home;find . -name "foo*" | tee /home/$USER/log-home.txt" &
nohup gnome-terminal --wait -- bash -c "cd /home/$USER; find . -name "foo*" | tee /home/$USER/log-$USER.txt" &
wait;
echo "Finished";
代码abgove不符合预期要求,但:
- 如果我关闭了一个子窗口,在它里面运行的进程停止输出日志到相应的日志文件,我猜这个进程刚刚结束运行。
- 如果我关闭从父脚本启动的所有子gnome终端窗口,父脚本将继续运行wait命令之后的脚本行。
1条答案
按热度按时间db2dz4w81#
这是一个尝试去完成你所确定的东西的尝试。逻辑流应该是所需要的,但是当执行时,它表现得“不稳定”,这意味着窗口正在“死亡”,但是仅仅是在最初的持久化之后。我看不出是什么杀死了预期无限期运行的进程。也许更专业的人可以发现我遗漏了什么。
所以,这是脚本: