起動時にアプリケーションを起動する

起動時にアプリケーションを起動する

私は現在、プロジェクトでRHEL 7.0を使用しています。組み込みアプリケーションがあり、起動時にこれを実行したいと思います。同じexeファイルがあります。 systemctlコマンドを試してみましたが、役に立ちませんでした。また、inittabファイルを編集してみましたが、それも役に立ちませんでした。また、rc.localファイルを追加し、rc.dを編集してrc.local実行を追加しようとしましたが、ファイルを変更することはできません。 (これを試したとき、私はsudoモードにありました)。

ユーザーにログインを要求せずに起動時にアプリケーションを実行したいと思います。また、起動時に検出できるようにexeをファイルシステムのどこに保存する必要がありますか?誰でもこれを達成する方法を案内できますか?

答え1

次の単位ファイルをテンプレートとして使用できます。

[Unit]
Description=A Test Service That Prints the date
After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/myservice
ExecStart=/usr/bin/bash -c "/usr/bin/date >> /now.txt" $MYSERVICE_ARGS
[Install]
WantedBy=multi-user.target

/etc/systemd/system/ファイル拡張子として保存します.service(例 /etc/systemd/system/myservice.service:)

/etc/sysconfig/myserviceコマンドラインオプションを保持するための変数の作成など、アプリケーションに必要なすべての環境変数をに配置できます。

MYSERVICE_ARGS=--posix

ExecStart(変数をコマンドラインオプションとして使用する場合は、次のようにコマンドに変数を追加してくださいExecStart=/usr/local/bin/myservice $MYSERVICE_ARGS。)

テストしてみてください:

# systemctl start myservice

/now.txtこれで、実行するたびに日付/時刻が追加されたファイルが必要です。

起動時に起動するように設定します。

# systemctl enable myservice

これでネットワークがアクティブになると自動的に起動します。

ExecStartアプリケーションを実行するには、この行を変更してください。シェルでは実行さsystemdれないため、リダイレクトが必要な場合は例に従う必要がExecStartあります。bash -cまた、変数がないため、フルパスが$PATH使用されます。アプリケーションはユーザーとして実行されますroot

より多くのオプションがあります - 読むマニュアルページ。また、システムのユニットファイルを参照してください/usr/lib/systemd/system

関連情報