确定在后台运行的哪个线程进程在AIX上最后完成

时间:2014-04-09 18:30:19

标签: multithreading scripting signals aix pid

如果我有一个父进程在后台分配5个子进程并等待,即

job1.sh& job2.sh& job3.sh& job4.sh& job5.sh& wait

是否有可能找出我最后一次完成的工作?我想通过脚本完全自动化。日志文件会给我答案,但要求是它应该是自动化的。

我目前正在从事AIX工作。我想可能有可能使用信号来做到这一点,但我没有足够的曝光知道这是否有效。

非常感谢任何帮助!

非常感谢和快乐的编码

1 个答案:

答案 0 :(得分:1)

这个怎么样:

( job1.sh ; echo 1 > /tmp/HAPPY )&
( job2.sh ; echo 2 > /tmp/HAPPY )&
( job3.sh ; echo 3 > /tmp/HAPPY )&
( job4.sh ; echo 4 > /tmp/HAPPY )&
( job5.sh ; echo 5 > /tmp/HAPPY )&
wait
read last_child < /tmp/HAPPY

请注意,这是 1000000%防弹,因为两个作业可以完全靠近,以便回声交织在一起。你可以通过添加旧的文件锁定来解决这个问题,如果你真的需要它可以通过shell脚本编写,或者你可以在读取last_child之后添加一些智能来解析它,如果它不是你正在寻找的范围内的简单整数。我想我会选择上述内容,直到它被证明太粗糙......案件很容易就不会出现了。