【发布时间】:2020-11-26 04:04:20
【问题描述】:
总的来说,我对 Bash、redis 和 linux 还很陌生,我在创建脚本时遇到了麻烦。这也是我的第一个问题,希望不要重复。
所以问题来了,我在 ruby 中创建一个简单的应用程序用于教育目的,但我尝试实现的功能使用 redis 和 sidekiq。我要做的是创建一个可执行脚本(我将其命名为服务器)启动redis服务器,启动redis,但它也应该在用户完成sidekiq后关闭redis。
这是我想出的:
#!/usr/bin/env sh
set -e
redis-server --daemonize yes
bundle exec sidekiq -r ./a/sample/path/worker.rb
redis-cli shutdown # this is not working, I want to execute this after shutting sidekiq down...
当我运行第四行时,它会启动小的 Sidekiq“欢迎页面”,直到我用 Control + C 关闭它之前我什么都做不了。我假设在用这个命令关闭它之后,它会继续我写的脚本,这将是redis-cli shutdown 命令。
但事实并非如此。当我Control + Csidekiq 时,它只是回到命令行。
有熟悉这些概念的人可以帮助我吗?我想要一个脚本,在我使用完 sidekiq 后也会关闭 redis。
谢谢!
【问题讨论】:
-
我会为此研究 docker 和 docker-compose
-
在 sidekiq 行末尾添加
&有帮助吗?另外,set -e可能是一个过早的优化,你知道它是做什么的吗?如果遇到错误,您真的希望脚本停止处理吗?如果你只是从命令行运行它,那可能没问题,但如果你把它变成一个自动过程,你需要更好地处理错误(为了你未来的学习;-))。祝你好运。