ruby - 为什么使用和运算符不执行 rake 任务?
问题描述
我有一个 rake 任务:
task :kill_process do
system %q(ps -ef | awk '{if($8~"java" || $8~"glassfish" || $8~"ruby" || $8~"god" || $8~"couch"){printf("Killing : %s \n",$2);{system("kill -9 "$2)};}}')
end
这基本上是杀死进程。这个任务是另一个 rake 任务的一部分:
desc "stop the entire system"
task :stop => [...., :kill_process]
还有一个任务:
desc "start the entire system"
task :start => [....]
当我在做rake stop && rake start
停止任务时成功执行。但 rake start 没有执行。
如果我分别执行这两个任务,那么它工作正常。但不在rake stop && rake start
在这里使用 exec 函数或系统或任何其他会更好,请建议我。
我唯一的要求是在rake stop
. 但它也不应该影响其他事情,比如rake stop && rake start
应该可以正常工作。
解决方案
如评论中所述,退出代码的137
计算结果为 false,因此其他部分&&
不会被执行。这其中的原因大概是kill -9
。
现在有几个选择。
- 从您的 rake 任务中返回 0,例如
exit(0)
- 不要使用
kill -9
- 创建
restart
确实执行但在逻辑上不依赖于彼此的命令stop
(start
)&&
。
推荐阅读
- c# - 当(且仅当)另一个属性为真时,有没有办法告诉 ReSharper 一个属性不为空?
- reactjs - 将状态传递给子组件时未定义状态
- couchdb - 使用 pouchdb 创建新的远程数据库时添加自定义标头
- docker - 如何处理 K8s 中的 STDOUT 日志?
- python - 如何使用 Python 制作具有两个 y 轴(x、y1 和 y2)的散点图
- python - az acr build 找不到 python 包
- javascript - WebRTC - 屏幕录制 | 音频未录制 - 问题
- node.js - 如何解析请求正文?
- apache - 使用 Apache 在 Windows 上通过 CGI 运行 Web 应用程序
- reactjs - 数学图像名称。[hash] 通过与从数据库中获取的纯图像名称反应构建