Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux-kill-k开关如何在timeout命令中工作_Linux_Bash - Fatal编程技术网

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

Linux-kill-k开关如何在timeout命令中工作,linux,bash,Linux,Bash,我有两个一行: 首先。我希望在5秒后杀死sh-c“…”命令,但它会一直存在,直到超时退出(持续10秒) 第二。我预计超时将以返回代码124退出(因为sh-c“…”命令仍在运行),而sh-c“…”命令将继续运行(因为没有设置超时的kill选项) 传递给timeout的参数运行的时间似乎与timeout命令本身一样精确(它不会在timeout命令之前被终止,也不会在timeout命令之后生存)。那么kill选项的目的是什么?选项-k是在超时后无法终止进程的情况下,在指定的秒后发送kill信号 超时首

我有两个一行:

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

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


传递给timeout的参数运行的时间似乎与timeout命令本身一样精确(它不会在timeout命令之前被终止,也不会在timeout命令之后生存)。那么kill选项的目的是什么?

选项
-k
是在超时后无法终止进程的情况下,在指定的秒后发送
kill
信号

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

比如说

timeout -k 5 10 someCommand

超时
在10秒后发送
术语
信号。如果
someCommand
没有响应
TERM
(例如,它可能会阻止
TERM
信号),则
超时
在5秒后(即开始执行后的第15秒)发送
终止
信号。信号
KILL
无法被阻止。

因此,我的单行程序的全部问题是,它们没有在术语信号之后终止?通过超时启动的进程也有可能在超时后继续运行?您的oneliner将在10秒后终止(我没有看到任何会阻止
术语的内容)。这是您指定的超时时间。是的,有可能。e、 g.若
TERM
被阻止,那个么进程将继续运行。你好,蓝月亮,我已经尝试了以下命令
timetimetimeout-k510sh-c'sleep 20s&&sighand(){true;};陷阱和术语;echo“RUNNING COMMAND”
忽略了术语信号,但命令运行了10秒,而不是15秒,似乎sigtrap的参数必须是独立脚本才能测试我的上述示例。
-k 5 10
我认为这意味着它会在5秒后尝试杀死它,并在强制杀死它之前再等待10秒,但是从上面的答案我知道情况正好相反。是哪一个?
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"'
timeout -k 5 10 someCommand