2016-11-21 11 views
2

にコマンド:これは私を使用して、私は別のカスタムコマンドを作成したいにsystemdのカスタムは、私がこのようにsystemdサービススクリプトを持っているサービス

sudo systemctl enable sidekiq 

sudo systemctl start sidekiq 

# 
# systemd unit file for Debian 
# 
# Put this in /lib/systemd/system 
# Run: 
# - systemctl enable sidekiq 
# - systemctl {start,stop,restart} sidekiq 
# 
# This file corresponds to a single Sidekiq process. Add multiple copies 
# to run multiple processes (sidekiq-1, sidekiq-2, etc). 
# 
[Unit] 
Description=sidekiq 
# start sidekiq only once the network, logging subsystems are available 
After=syslog.target network.target 

[Service] 
Type=simple 
WorkingDirectory=/home/deploy/app 
User=deploy 
Group=deploy 
UMask=0002 
ExecStart=/bin/bash -lc "bundle exec sidekiq -e ${environment} -C config/sidekiq.yml -L log/sidekiq.log -P /tmp/sidekiq.pid" 
ExecStop=/bin/bash -lc "bundle exec sidekiqctl stop /tmp/sidekiq.pid" 

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

# output goes to /var/log/syslog 
StandardOutput=syslog 
StandardError=syslog 

# This will default to "bundler" if we don't specify it 
SyslogIdentifier=sidekiq 

[Install] 
WantedBy=multi-user.target 

今、私は次のようにコマンドを発行することができます私は、このようなプロセスにUSR1シグナルを送信する必要がある静かなsidekiqに、このような何か:かなりのsidekiqの労働者ができますか?このようなもの:

sudo kill -s USR1 `cat #{sidekiq_pid}` 

私はsystemdにサービスを使用してこれを実行したいので、基本的に

sudo systemctl queit sidekiq 

のようなコマンドはにsystemdサービスファイルにカスタムコマンドを作成する方法はありますか?はいの場合、これを行うにはどうすればいいですか?

答えて

1

あなたがExecReloadここに文書化され使用することができます。

https://www.freedesktop.org/software/systemd/man/systemd.service.html

Sidekiq < 5:

ExecReload=/bin/kill -USR1 $MAINPID

Sidekiq> = 5(USR1はTSTPを使用した、5で廃止されました):

ExecReload=/bin/kill -TSTP $MAINPID

を実行し、systemctl reload sidekiqを実行して静かな信号を送信します。

+0

マイクとsidekiqを作成してくれてありがとう、私たちは数日前にプロ版を買ったばかりです。代わりにカスタムコマンドを作成する方法はありますか?複数の人がプロジェクトに取り組んでいる場合、execのリロードは混乱します – rajat

+0

これはsystemdの質問です - 私はsystemdが 'systemctl quiet sidekiq'のようなカスタム動詞を許可しているとは思っていませんが、もっと研究し、私の言葉。 –

3

それは、 "カスタム" コマンドではありませんが、あなたは

Sidekiq> = 5を使用することができます: "静かな" 信号を送信するために

systemctl kill -s USR1 --kill-who=main example.service 

systemctl kill -s TSTP --kill-who=main example.service 

Sidekiq < 5 。詳細については、http://0pointer.de/blog/projects/systemd-for-admins-4.htmlを参照してください。

関連する問題