Ruby Sidekiq不';不要创建PID文件

Ruby Sidekiq不';不要创建PID文件,ruby,config,pid,sidekiq,Ruby,Config,Pid,Sidekiq,为了停止Sidekiq,我需要使用: $bundle exec sidekiqctl stop/Users/me/Documents/sites/some_site/tmp/pid/sidekiq.pid 20 我告诉Sidekiq在config.yml文件中创建一个pid文件: #/Users/me/Documents/sites/some_site/config.yml :pidfile: /Users/me/Documents/sites/some_site/tmp/pids/sideki

为了停止Sidekiq,我需要使用:

$bundle exec sidekiqctl stop/Users/me/Documents/sites/some_site/tmp/pid/sidekiq.pid 20

我告诉Sidekiq在config.yml文件中创建一个pid文件:

#/Users/me/Documents/sites/some_site/config.yml
:pidfile: /Users/me/Documents/sites/some_site/tmp/pids/sidekiq.pid
:concurrency: 25
并告诉Sidekiq此配置文件使用的位置:

$bundle exec sidekiq-C/Users/me/Documents/sites/some_site/config.yml


但是,当我运行Sidekiq时,它不会创建一个.pid文件,所以我无法停止它。那么为什么不创建一个.pid文件呢?

尝试用以下内容替换该绝对路径:

:pidfile: ./tmp/pids/sidekiq.pid
其次,确保运行sidekiq的用户具有写入该目录的正确写入权限。您可以临时使用chmod 777进行测试,以查看是否存在权限问题


下面是Sidekiq的一个示例配置yml文件。确保您也指定了一个队列

要使用pidfile,您应该将sidekiq作为守护进程启动。在rails根目录上使用以下命令启动sidekiq:

bundle exec sidekiq -d -e development
您可以用适当的rails环境代替开发

您还应该在sikekiq configure(config/sidekiq.yml)中指定一个日志文件。例如:

concurrency: 5
development:
  pidfile: tmp/pids/sidekiq_development.pid
  logfile: log/sidekiq_development.log
beta:
  pidfile: /var/run/sidekiq_beta.log
  logfile: log/sidekiq_beta.pid
staging:
  pidfile: /var/run/sidekiq_stating.pid
  logfile: log/sidekiq_staging.log
production:
  pidfile: /var/run/sidekiq_production.pid
  logfile: log/sidekiq_production.log
  concurrency: 50

如果您使用的是Debian,并且需要一个启动脚本,那么可以在Github上使用以下要点:

谢谢您的建议。正如我在问题中提到的,我已经在使用config.yml文件。但是,我已经按照您的建议更改了pid文件的路径,并添加了一个默认队列。我还修改了dir以允许对所有对象进行读/写。然而,尽管如此,没有写pid文件。我完全误解了这一点吗?Sidekiq是应该编写pid文件,还是应该创建它并将其放置在Sidekiq要使用的位置?我的问题与Pedr@emerakpid文件由system创建。仅供参考:
-d
(守护进程)在Sidekiq 6.0中被删除