【问题标题】:Determine which threaded process running in the background finished last on AIX确定在 AIX 上最后完成的后台运行的线程进程
【发布时间】:2014-05-23 03:45:53
【问题描述】:

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

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

是否有可能找出我运行的哪些工作最后完成了?我希望这可以通过脚本完全自动化。日志文件会给我答案,但要求是自动化。

我目前正在研究 AIX。我在想也许可以使用信号来做到这一点,但我没有足够的机会知道这是否有效。

非常感谢任何帮助!

非常感谢,编码愉快

【问题讨论】:

  • 没有带时间戳的日志文件? traps 可能有效,但这需要研究和测试。祝你好运。
  • 嗯,我不够清楚。去编辑我的问题,看看我是否能得到更多的结果。谢谢:)

标签: multithreading scripting signals aix pid


【解决方案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 后添加一些智能来解析它。我想我会继续使用上述方法,直到它被证明太粗暴......这个案子很容易永远不会出现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多