21

如何在 Ubuntu 上将 sidekiq 作为守护进程运行?

如果我运行bundle exec sidekiq -D我得到invalid option: -D了,有没有什么方法可以在没有其他控制器的情况下运行它,比如上帝,暴发户......?

4

4 回答 4

30

有一个 Daemonize sidekiq 的选项,只需通过-d选项

犯罪

于 2013-03-20T10:28:47.690 回答
7

从 sidekiq 6.0 开始,守护进程将不起作用,如果您通过 -d,您将收到一条消息:

Sidekiq 6.0 中删除了守护模式,请使用适当的进程管理器来启动和管理您的服务

在此处检查问题#4045

于 2019-10-23T04:48:58.547 回答
6

sidekiq如果意外崩溃,作为守护进程运行不会重新启动。另一种方法是将sidekiq 作为服务运行(一个新贵的工作)。如果系统重新启动,那么新贵作业也将运行 sidekiq。 是将 sidekiq 作为服务运行的完整脚本和方法。

将 sidekiq 作为服务运行后,您可以start/stop/restart通过命令简单地 sidekiq sudo service sidekiq start/stop/restart

于 2016-03-04T07:06:15.637 回答
1

不支持用于 Sidekiq 版本 6 或更高版本的守护进程,将程序作为 Unix 运行。相反,我们必须将进程作为服务运行。

根据您的捆绑器位置编写脚本,或者您可以修改以下代码片段并将片段复制到/usr/lib/systemd/system(CentOS)或/lib/systemd/system(Ubuntu)

[Unit]
Description=sidekiq

After=syslog.target network.target

[Service]

Type=notify
WatchdogSec=10
WorkingDirectory=/home/deploy/apps/project_name

# If you use rbenv:
# ExecStart=/bin/bash -lc 'exec /home/deploy/.rbenv/shims/bundle exec sidekiq -e production'
# If you use the system's ruby:
# ExecStart=/usr/local/bin/bundle exec sidekiq -e production
# If you use rvm in production, don't.

#ExecStart=/home/deploy/.rvm/wrappers/ruby-2.6.5/bundle exec sidekiq -e production

# Use `systemctl kill -s TSTP sidekiq` to quiet the Sidekiq process
# !!! Change this to your deploy user account !!!

User=deploy

Environment=MALLOC_ARENA_MAX=2

# if the script crash, restart
RestartSec=1
Restart=on-failure

# output goes to /var/log/syslog (Ubuntu) or /var/log/messages (CentOS)
StandardOutput=syslog
StandardError=syslog

# This will default to "bundler" if we don't specify it
SyslogIdentifier=sidekiq
[Install]
WantedBy=multi-user.target

确保您提供了正确的捆绑程序路径,ExecStart以便开始该过程。将其另存为sidekiq.service并运行systemctl enable sidekiq. 然后我们可以使用命令systemctl start sidekiqsystemctl stop sidekiq和来管理进程systemctl restart sidekiq

我们可以通过使用查看最后 100 行日志journalctl -u sidekiq -rn 100

于 2020-07-05T09:27:11.710 回答