1

我在看linuxtimeout命令。

Q1:timeout实用程序是否也发送信号childprocess

Q2:childprocesses如果父进程在超时间隔之前退出,它会杀死吗?

我在文档之间跳转,但我找不到适合这种行为的文档。

我的观察:

我运行以下脚本timeout 2s ./test.sh

测试.sh

 #!/bin/bash
(sleep 5; echo "Hello World") &
(sleep 5; echo "Hello World") &
(sleep 5; echo "Hello World") &
(sleep 5; echo "Hello World") &

这里是test.sh在 2 秒前退出,因此我认为超时实用程序无法终止分叉进程,因此我看到了hello world5 秒后

那么这是否意味着超时不能杀死子进程?

4

1 回答 1

0

问题不是由于单独的进程组,因为这是一个脚本,因此不是交互式外壳,作业控制已关闭。您可以通过将其添加到脚本底部来看到这一点:

ps -o comm,pid,pgrp

问题是您的脚本会触发后台任务(在同一进程组中)但随后退出。timeout(1) 看到出口,然后自行退出。wait您可能想要做的是让脚本通过在末尾添加 a 来等待其后台任务完成。

于 2015-07-24T00:01:15.843 回答