Bash:检查,如果没有运行则运行进程
嗨,我的要求是,如果Memcache服务器因生产中的任何原因而关闭,我想立即重新启动它
通常情况下,我将以这种方式启动Memcache服务器,用户无需复制,如下所示
memcached -u nobody -l 192.168.1.1 -m 2076 -x 192.168.1.2 -v
所以为此,我以这种方式在crontab中添加了一个条目
(crontab -e)
*/5 * * * * /home/memcached/memcached_autostart.sh
Run Code Online (Sandbox Code Playgroud)
memcached_autostart.sh
#!/bin/bash
ps -eaf | grep 11211 | grep memcached
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
memcached -u nobody -l 192.168.1.1 -m 2076 -x 192.168.1.2 -v
else
echo "eq 0 - memcache running - do nothing"
fi
Run Code Online (Sandbox Code Playgroud)
我的问题是在memcached_autostart.sh里面,为了自动启动memcached服务器,上面的脚本有什么问题吗?
要么
如果有更好的方法来实现这一目标(而不是使用cron作业) 请分享您的经验.
cron您可能想要创建一个适当的 init 脚本,而不是从它运行它。参见/etc/init.d/示例。此外,如果您这样做,大多数系统已经具有处理大部分工作的功能,例如检查启动、重新启动、停止、检查已经运行的进程等。
大多数守护程序脚本将 pid 保存到一个特殊文件(例如/var/run/foo),然后您可以检查该文件是否存在。
对于 Ubuntu,您可以查看/etc/init.d/skeleton可以复制的示例脚本。
是的,问题是ps -eaf | grep 11211 | grep memcached我假设进程 ID 在每次启动时总是会改变,所以你应该做的是ps -ef | grep memcached
希望有所帮助