C
私は電源イベントを監視しudev
、ノートパソコンのバックライトの明るさを自動的に調整する小さなユーティリティを作成しました。 (私はUbuntu 15.04を使用しています)
次のコマンドを実行しましたが、起動時に正常に実行されました。
$ sudo cp powermonitor /etc/init.d/powermonitor
$ sudo chmod +x /etc/init.d/powermonitor
$ sudo update-rc.d powermonitor defaults
しかし、CPU使用量をhtop
しばらく監視した結果、今は消えたことがわかりました。このプログラムはコマンドライン引数を受け入れませんが、Linuxは次のようにプログラムを実行しようとしているようです。
/etc/init.d/powermonitor start
プロセスを実行し続けるにはどうすればよいですか?
編集:明確にするためにpowermonitor
スクリプトではなく実行可能ファイルです。
答え1
のファイルは/etc/init.d
実行可能ファイルにコンパイルしてはいけません。コンパイルされた実行可能ファイルを別の場所に置き、次のものを作成することも/usr/local/bin
できます。初期化スクリプトでは、/etc/init.d
コンパイルされたプログラムを起動および停止する方法を知っています。通常、これは起動するためにバックグラウンドで実行し、PID(または使用されている実行可能ファイル名killall
)を終了して停止するのと同じくらい簡単です。 initスクリプトは、、&cinit
という単語という単一の引数を使用して呼び出されます。サービス自体を実行する方法を知ることはスクリプトの責任です。start
stop
restart
簡単な紹介が必要な場合は、以下を試してください。ここ。/etc/init.d
状況に応じて変更できるサンプルスケルトンスクリプトがディレクトリにある可能性があります。
ところで、どのディストリビューションを実行していますか?現在、多くの最新のディストリビューションは、デフォルトでIMOユニットファイルの代わりに宣言的なユニットファイルを使用して実行されますsystemd
。sysvinit
systemd は sysvinit 互換モードを提供するので、直接実行できます。その場合は、スクリプトではなくユニットファイルを作成することをお勧めします。