サーバーの1つが毎週日曜日と月曜日の朝に再起動します。サーバーが稼働しているときはいつでも、サービスを再起動する必要があります。実際、私はスクリプトを呼び出してそれ自体を実行します(毎回手動で)。私が達成したいのは、サーバーが起動するたびにこのスクリプトを呼び出して実行できるようにすることです。これは可能ですか?
毎回実行するスクリプトは次のようなものです。
cd /var/www/activefolder/current && Rails_ENV=production script/delayed_job start
ご覧のとおり、このスクリプトは2つのタスクを組み合わせてこれを完了しています。
サーバーのOSはRedhat EL 7です。6までは、OSがinit.dを使用しているのに対し、RHEL7ではsystemdと呼ばれるより柔軟なオプションが導入されています。しかし、私が述べたように設定することが可能かどうかはわかりません。どんな助けでも本当にいただければ幸いです。
この質問に答えるためのすべての要件を私があなたに与えたかどうかはわかりません。そうでない場合は、遠慮なく質問してください。関連する情報で質問を更新します。
Redhatのドキュメント Creating Custom Unit Files および systemd.exec —実行環境構成 に基づく:
未テスト™
ファイルを作成します(touch> chmod> editが推奨されるようですが、理由はわかりません)。
touch /etc/systemd/system/activefolder.service
chmod 664 /etc/systemd/system/activefolder.service
vim /etc/systemd/system/activefolder.service
/etc/systemd/system/activefolder.service
の例:
[Unit]
Description=activefolder
After=network.target
[Service]
WorkingDirectory=/var/www/activefolder/current
ExecStart=/var/www/activefolder/current/script/delayed_job start
Type=forking
PIDFile=/run/activefolder.pid
Environment="Rails_ENV=production"
#User=httpd
#Group=httpd
[Install]
WantedBy=default.target
次に:
systemctl daemon-reload
systemctl start name.service
ブート時にコマンドを実行するためにsystemdサービスを作成する必要はありません。crontab
で実行できます。
@reboot <user_name>
接頭辞を付けて実行する必要があるコマンドを/etc/crontab
に追加するだけです
あなたの場合は次のようになります:
@reboot root cd /var/www/activefolder/current && Rails_ENV=production script/delayed_job start
CentOS 6/7で動作することをテスト済み(vixie-cron
が必要、cronie
では動作しない場合があります)
/etc/rc.local
の最後にコマンドを追加しても、同様に機能するようです。
(ただし、実行可能であることを確認してください。)