web-dev-qa-db-ja.com

RHEL7で起動中にスクリプトを実行する

サーバーの1つが毎週日曜日と月曜日の朝に再起動します。サーバーが稼働しているときはいつでも、サービスを再起動する必要があります。実際、私はスクリプトを呼び出してそれ自体を実行します(毎回手動で)。私が達成したいのは、サーバーが起動するたびにこのスクリプトを呼び出して実行できるようにすることです。これは可能ですか?

毎回実行するスクリプトは次のようなものです。

cd /var/www/activefolder/current && Rails_ENV=production script/delayed_job start

ご覧のとおり、このスクリプトは2つのタスクを組み合わせてこれを完了しています。

サーバーのOSはRedhat EL 7です。6までは、OSがinit.dを使用しているのに対し、RHEL7ではsystemdと呼ばれるより柔軟なオプションが導入されています。しかし、私が述べたように設定することが可能かどうかはわかりません。どんな助けでも本当にいただければ幸いです。

この質問に答えるためのすべての要件を私があなたに与えたかどうかはわかりません。そうでない場合は、遠慮なく質問してください。関連する情報で質問を更新します。

3
serverstackqns

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
4
Franklin Piat

ブート時にコマンドを実行するために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では動作しない場合があります)

1
Anubioz

/etc/rc.localの最後にコマンドを追加しても、同様に機能するようです。

(ただし、実行可能であることを確認してください。)

0
MattBianco