Linux - kill -k switch如何在timeout命令中工作

时间:2015-04-29 07:25:14

标签: linux bash

我有两个衬垫:

首先。我希望在5秒后杀死sh -c "..."命令,但它会一直存在,直到超时退出(持续10秒)

timeout -k 5s 10s sh -c 'sleep 20s && echo "Long running command which is visible under: ps -elf | grep sleep during whole life (10s) time of timeout command"'

第二名。我预计超时将以返回码124退出(因为sh -c "..."命令仍在运行),而命令sh -c "..."将继续运行(因为没有设置超时的kill选项)

timeout 10s sh -c 'sleep 20s && echo "Long running command which is visible under: ps -elf | grep sleep during whole life (10s) time of timeout command"'

似乎传递给超时的参数运行的确切时间为超时命令本身(它没有先前被杀死也不会超时),那么kill选项的目的是什么呢?

1 个答案:

答案 0 :(得分:7)

选项fasta是在指定的秒数后发送-k信号,如果在超时后无法终止该过程。

KILL首先发送timeout信号。如果指定了TERM,那么它还会在实际超时值之后发送-k信号。

例如

KILL

timeout -k 5 10 someCommand 在10秒后发送timeout信号。如果TERM没有回复someCommand(例如,它可能阻止TERM信号),则TERM发送timeout信号之后 5秒(即自执行开始以来的第15秒)。信号KILL无法阻止。