我已经创建了一个bash脚本来监控Symantec命令行扫描服务,这是以后脚本的一部分我发送了我创建的日志文件的电子邮件,这是一个每两个小时发送一次电子邮件的cron作业。
现在我的问题是,有时ssecls脚本没有响应而且卡住了。如何对下面的每个4台服务器进行时间检查,以便在ssecls没有响应时,将重新启动Symantec服务。我创建了另一个脚本来重启服务。
我唯一的问题是,如何检查以下进程是否没有响应或挂起.... 2分钟的间隔。
#!/bin/bash
# Symatec Scan Command Line Scanner Options
cd /opt/SYMCScan/ssecls/
echo "Testing servera1 Scan Engine" `./ssecls /home/symtec/ -server Server1 -mode scan -verbose -details -timing -recurse -onerror leave -log /home/symtec/work/ssecls_log_serveraavr01`
echo "Testing server02 Scan Engine" `./ssecls /home/symtec/ -server Server2 -mode scan -verbose -details -timing -recurse -onerror leave -log /home/symtec/work/ssecls_log_serverdavr01`
echo "Testing server03 Scan Engine" `./ssecls /home/symtec/ -server Server3 -mode scan -verbose -details -timing -recurse -onerror leave -log /home/symtec/work/ssecls_log_server1avr01`
echo "Testing server04 Scan Engine" `./ssecls /home/symtec/ -server Server4 -mode scan -verbose -details -timing -recurse -onerror leave -log /home/symtec/work/ssecls_log_server4avr01`
答案 0 :(得分:1)
timeout
是为了这样的用途而编写的。
timeout 120 ./ssecls ...
您甚至可以将其配置为发送除kill之外的信号,并在此之后将其删除一段时间。
因为后退标记在命令行之前执行,所以您需要将timeout
放在其中。
要重新启动,您需要一个循环。
until timeout 120 ./ssecls ...; do
echo Timed out, restarting.
done
答案 1 :(得分:0)
超时:未找到命令。
你可以用这个bash函数实现类似的东西:
timeout()
{
time=$1; shift
"$@"& pid=$!
( sleep $time; kill $! )&
wait $pid && kill $!
}
按照Kevin的回答中所述调用此函数。