超时linux命令行为



我正在查看linux timeout命令。

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

Q2:如果父进程在超时时间前退出,是否会杀死childprocesses ?

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

我的观察:

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

test.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在2s之前退出,因此我认为超时实用程序无法杀死分叉进程,因此我在5秒后看到hello world

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

这个问题不是由于单独的进程组,因为这是一个脚本,所以不是交互式shell,作业控制是关闭的。您可以通过在脚本底部添加以下内容来查看:

ps -o comm,pid,pgrp

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

相关内容

  • 没有找到相关文章

最新更新