我写了一个小脚本来使用q检查端口状态。如果连接被拒绝,它将检查端口并运行电子邮件,这可以正常工作。然后,我为端口使用了可选的超时,因此它不会挂在那里等待。如果端口超时,则返回注释“超时”,但这似乎也将我踢出了功能,并且没有进入sendemail []部分。
ProcessChecks:{[port]
V:{@[value;("hopen (`::",(string x),";5000)");enlist]} [port];
.keh.V:V; :
mail_body:(string V)," at .z.T time: ",(string .z.T);
.keh.mail:mail_body;
$[-6h=type V;"port accepted";SendEmail2[mail_body;"connection refused port: ",(string port)]];
名称空间.keh.mail
不会更改,SendEmail2 []也不会发送,这只是unix mailx
命令。
我会得到.keh.V = "timeout"
.keh.mail = " at .z.T time whatever the time is"
5000是5秒的等待时间,它的引入导致了问题。
答案 0 :(得分:3)
您的问题是由脚本第三行中的:
流浪引起的。这导致您的函数提前返回。请尝试以下操作:
ProcessChecks:{[port]
V:{@[value;("hopen (`::",(string x),";5000)");enlist]} [port];
.keh.V:V;
mail_body:(string V)," at .z.T time: ",(string .z.T);
.keh.mail:mail_body;
$[-6h=type V;"port accepted";SendEmail2[mail_body;"connection refused port: ",(string port)]];
}