私は現在、プロジェクトで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
。