Max*_*tes 4 javascript mongodb gruntjs
mongod如果服务器尚未运行,我想编写一个grunt任务来启动进程.我需要运行一个mongod进程,但是还需要grunt-watch在以后的任务流程中工作.
这个问题解释了如何启动mongod使用grunt-shell...接受的答案是阻止,并且异步版本将生成一个新的服务器,即使存在.
是否有一种方法(例如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:mongomongod将启动但我无法使用它关闭它grunt shell:mongo:kill.但是,假设您稍后使用阻止任务(我正在使用watch),那么当您结束该任务时它应该自动被杀死.
希望这有助于某人!
| 归档时间: | 
 | 
| 查看次数: | 1824 次 | 
| 最近记录: |