crontab脚本持续(24 * 7)

  • 本文关键字:脚本 crontab linux bash
  • 更新时间 :
  • 英文 :


crontab -e内,我添加了此条目

* * * * * /usr/bin/memcached_autostart.sh

和内部/usr/bin I具有名为memcached_autostart.sh

的脚本

/usr/bin memcached_autostart.sh

#!/bin/bash
ps -eaf | grep 11211 | grep memcached
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
memcached -d -m 16 -p 11211 -u nobody
else
echo "eq 0 - memcache running - do nothing"
fi

当我手动测试此方式

启动了memcache

memcached -d -m 16 -p 11211 -u nobody
ps -eaf | grep 11211 | grep memcached
nobody     611     1  0 13:28 ?        00:00:00 memcached -d -m 16 -p 11211 -u nobody

然后杀死了该过程

kill -9 611

我期望crontab如果下降会自动启动memcache,但它没有启动memcache,请告诉我我是否做错了。

查看您的crontab是否在工作

测试后,外壳出口可能大于1,因此请尝试更改:

if [ $? -ge 1 ]

首先您的cron:

在此标题中,您每24小时都在谈论。为此,你有要在两个第一个领域的一天中的哪一刻进行刺激:

1 2 * * * doTheJob

所以每个day of month,每个month和每个day of week,在2小时1分钟,脚本将运行

更好的是将您的脚本放在/etc/cron.daily中。

现在为这份工作,您是否尝试过:

ps -C memcached
ps -C memcached ho pid
echo $?

如果没有memcached PID,(即:没有答案),$?必须不为null。

所以也许:

ps -C memcached >/dev/null || memcached -d -m 16 -p 11211 -u nobody

这可能是一个脚本,只是在您的crontab中:

1 2 * * * ps -C memcached >/dev/null || memcached -d -m 16 -p 11211 -u nobody

(nota:如果您使用系统crontab: /etc/cron.d/myJob/etc/crontab,而不是用户的(root)crontab,则必须将用户列为第六字段:

1 2 * * * root ps -C memcached >/dev/null || memcached -d -m 16 -p 11211 -u nobody

首先,您应该在/usr/local/下添加自己的东西,而不是/usr/(由包装机制管理)。

然后您的crontab条目

  * * * * * /usr/bin/memcached_autostart.sh

每分钟运行。您确定要经常运行吗?我会每5或10分钟运行一次(而且我不确定它真的有用,因为memcached是一个调试良好的守护程序,很少崩溃)。

终于,我建议将使用logger的记录消息添加到您的/usr/local/bin/memcached_autostart.sh脚本中(并确保以chmod a+x /usr/local/bin/memcached_autostart.sh的可执行文件)。

要查询过程表,您可以使用pidofpgrep;如果您只想知道哪个过程正在收听端口11211使用netstat -p

相关内容

  • 没有找到相关文章

最新更新