我有一个中央服务器,在其中定期启动一个脚本(来自cron),用于检查远程服务器。检查是串行进行的,所以先是一个服务器,然后是另一个...。
这个脚本(来自中央服务器)在远程机器上启动另一个脚本(我们称之为update.sh),而那个脚本(在远程机器上)正在执行以下操作:
processID=`pgrep "processName"`
kill $processID
startProcess.sh
进程被杀死,然后在脚本startProcess.sh中启动,如下所示:
pidof "processName"
if [ ! $? -eq 0 ]; then
nohup "processName" "processArgs" >> "processLog" &
pidof "processName"
if [! $? -eq 0]; then
echo "Error: failed to start process"
...
update.sh、startprocess.sh以及启动进程的实际二进制文件都是从中央服务器挂载的NFS。
现在,有时候我尝试在startprocess.sh中启动的进程没有启动,并出现错误。奇怪的是,这是随机的,有时候同一台机器上的进程会启动,而另一次不会启动。我正在检查大约300个服务器,错误总是随机发生。
还有一件事,远程服务器位于3个不同的地理位置(2个在美国,1个在欧洲),中央服务器在欧洲。目前我发现的情况是,美国的服务器比欧洲的服务器有更多的错误。
起初我以为错误肯定与kill有关,所以我在kill和startprocess.sh之间加了一个休眠时间,但这没有任何效果。
另外,似乎startprocess.sh中的进程根本没有启动,或者在启动时发生了什么问题,因为日志文件中没有输出,而日志文件中应该有输出。
所以,我在这里请求帮助。
有人遇到过这种问题吗,或者知道可能出了什么问题?
感谢任何帮助