如果另一个实例未运行,则仅运行脚本

时间:2014-10-03 16:27:56

标签: linux bash shell scripting

我有这个脚本,我在网上找到了从fifo读取并将其导入mysql:

#
# Created by Tadghe Patrick Danu 
#
#!/bin/bash


if [ -e /tmp/mysql.pipe ]; then
while [ -e /tmp/mysql.pipe ]
do
mysql -u syslog --password=mypassword syslogdb < /tmp/mysql.pipe
done
else
mkfifo /tmp/mysql.pipe
fi

我已经安排将此脚本作为cron作业运行,但是,每次运行时,它都会生成一个新实例,因此当我查看这些进程时,我看到一堆处理过的运行脚本。如果它还没有运行,我怎么能让它运行?我想一次只运行一个这样的实例。

谢谢,

1 个答案:

答案 0 :(得分:1)

至少有两个选项:

  1. 检查脚本是否已在开头运行,如果是,则退出并不执行。
  2. 使用monit实用程序
  3. https://mmonit.com/monit/documentation

    检查脚本是否正常工作,如果没有则启动进程。但如果它应该一直工作,那么只需将其作为守护进程运行。