Bash:检查,如果没有运行则运行一个进程

标签 bash

<分区>

Bash:检查,如果没有运行就运行一个进程

嗨, 我的要求是,如果 Memcache 服务器在生产中因任何原因宕机,我想立即重新启动它

通常我会以这种方式启动 Memcache 服务器,用户为 nobody 并进行复制,如下所示

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

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

我的问题是在 memcached_autostart.sh 里面,为了自动重启 memcached 服务器,上面的脚本有什么问题吗??

或者

如果有任何更好的方法来实现这一点(而不是使用 cron 作业) 请分享您的经验。

最佳答案

是的,问题是 ps -eaf | grep 11211 | grep memcached 我假设是每次启动时总是更改的进程 ID,所以您应该做的是 ps -ef | grep 内存缓存

希望对你有帮助

关于Bash:检查,如果没有运行则运行一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319716/

相关文章:

regex - 如何将一个字符串附加到文件中所有出现的另一个字符串

linux - 如何使目录下的所有文件在 linux 上都可读?

linux - 复制包含单词但不包含其他单词的文件。/grep 不使用 for 循环

mysql - 如何在 bash 脚本中捕获 mysqldump 错误?

linux - $@ 在 shell 脚本中是什么意思?

bash - 在 bash 中将 **heredoc** 添加到文件中

bash - 如何将某些命令永久添加到 .bash_history?

linux - Bash 循环不工作

Linux bash - eval 与 sh -c

Linux:如何在运行脚本时自动打开终端