我正在查看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
来让脚本等待其后台任务完成。