C 是否使用nohup或setsid退出报警()进程超时?
我有一个监控应用程序Zabbix agent,它允许我运行任意命令/脚本并获取返回值。代理配置了超时,任何超过超时的命令都将被终止 对于运行的每个命令,它首先通过设置超时时间,然后在通过C 是否使用nohup或setsid退出报警()进程超时?,c,linux,shell,unix,system,C,Linux,Shell,Unix,System,我有一个监控应用程序Zabbix agent,它允许我运行任意命令/脚本并获取返回值。代理配置了超时,任何超过超时的命令都将被终止 对于运行的每个命令,它首先通过设置超时时间,然后在通过execl(“/bin/sh”、“sh”、“-c”,command,NULL)”在新的shell中运行命令之前分叉 我有一个尴尬的场景,我无法将代理配置超时调整为大于2秒,但我需要运行的命令将需要10-30秒 所以我想知道是否有人知道我可以指定一个命令,在运行时可以跳过超时并运行到完成。我试图nohup或sets
execl(“/bin/sh”、“sh”、“-c”,command,NULL)”在新的shell中运行命令之前分叉
我有一个尴尬的场景,我无法将代理配置超时调整为大于2秒,但我需要运行的命令将需要10-30秒
所以我想知道是否有人知道我可以指定一个命令,在运行时可以跳过超时并运行到完成。我试图nohup
或setsid
认为它不会继承父级中设置的超时,但由于某种原因它仍然被杀死
这是我的例子。。代理希望在超时时间内返回1
,因此我在subshell中启动长时间运行的命令,并立即回显1
,以平息它。但是,/opt/scripts/test/long_running.sh
仍然会被杀死。我希望和诺胡普一起在一个地下室里跑步,它能逃过暂停时间
UserParameter=my.test.cmd,nohup sh-c“(/opt/scripts/test/long_running.sh$1&);echo 1”
谢谢你的阅读
fLonohup
通常会压制输出并打印其他内容,因此服务器可能会看到将输出重定向到nohup.out
,而不是预期的1
试试像这样的东西
echo 1; nohup sh -c "/opt/scripts/test/long_running.sh $1" >& /dev/null
不确定这是否是问题所在,但nohup
通常会抑制输出,因此echo 1
可能无法到达其目标。试试像echo 1这样的东西;nohup sh-c“/opt/scripts/test/long_running.sh$1”
。我也不认为有必要使用&
,因为这里没有并行性。谢谢。。已确认使用此命令echo 1;nohup sh-c“睡眠10;触摸/tmp/10sec_定时器”>&/dev/null&
。/tmp/
文件在10秒后创建,即使超时设置为3秒。