Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
C 是否使用nohup或setsid退出报警()进程超时?_C_Linux_Shell_Unix_System - Fatal编程技术网

C 是否使用nohup或setsid退出报警()进程超时?

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

我有一个监控应用程序Zabbix agent,它允许我运行任意命令/脚本并获取返回值。代理配置了超时,任何超过超时的命令都将被终止

对于运行的每个命令,它首先通过设置超时时间,然后在通过
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”

谢谢你的阅读


fLo

nohup
通常会压制输出并打印其他内容,因此服务器可能会看到
将输出重定向到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秒。