gpt4 book ai didi

javascript - 咕噜任务 : start mongod if not running

转载 作者:可可西里 更新时间:2023-11-01 09:08:58 24 4
gpt4 key购买 nike

如果服务器尚未运行,我想编写一个 grunt 任务来启动进程 mongod。我需要一个正在运行的 mongod 进程,但还需要 grunt-watch 以便稍后在任务流中工作。

This question解释了如何使用 grunt-shell 启动 mongod ...接受的答案是阻塞的,异步版本将生成一个新服务器,即使存在一个。

有没有办法(例如 shell 脚本)仅在 mongod 未运行时启动它,而不会阻塞其余的 grunt 任务流?

谢谢

最佳答案

这是一个更简洁的版本

将其存储为 startMongoIfNotRunning.sh与 Gruntfile 位于同一位置:

# this script checks if the mongod is running, starts it if not

if pgrep -q mongod; then
echo running;
else
mongod;
fi

exit 0;

在你的 Gruntfile 中:

shell: {
mongo: {
command: "sh startMongoIfNotRunning.sh",
options: {
async: true
}
},
}

编辑 - 原始版本如下

好的 - 我认为这工作正常......

创建一个 shell 脚本,如果它没有运行,它将启动 mongod...将它保存在某个地方,可能在您的项目中。我将其命名为 startMongoIfNotRunning.sh :

# this script checks if the mongod is running, starts it if not

`ps -A | grep -q '[m]ongod'`

if [ "$?" -eq "0" ]; then
echo "running"
else
mongod
fi

您可能必须使其可执行:chmod +x path/to/script/startMongoIfNotRunning.sh

安装 grunt-shell-spawn:npm install grunt-shell-spawn --save-dev

然后在你的 Gruntfile 中添加:

shell: {
mongo: {
command: "exec path/to/script/startMongoIfNotRunning.sh",
options: {
async: true
}
},
}

(如果您使用的是 yeoman,则使用 <%= yeoman.app %> 无效,因为这些路径是相对于整个项目的,因此您会得到类似“app”的内容,而不是脚本的整个路径。我敢肯定你可以让它工作,我只是不知道如何获得 )

如果你只是执行任务grunt shell:mongo mongod 将启动,但我无法使用 grunt shell:mongo:kill 关闭它.但是,假设您稍后使用阻塞任务(我使用的是 watch ),那么当您结束该任务时它应该会自动终止。

希望这对某人有帮助!

关于javascript - 咕噜任务 : start mongod if not running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20696457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com