プログラムが完全なサービス/デーモンになるためには、適切に作成する必要があること( link1 、 link2 )をすぐに注意する価値があります。 ただし、これは常に行われるとは限りませんが、おそらく完全に正しいとは限りません。
Linuxでプログラムを自動起動するには、いくつかの方法があります。
- /のリダイレクトされた入力/出力ストリームを使用して、プログラム/起動スクリプトの呼び出しをバックグラウンド(/)で/etc/rc.localに書き込みます(異なるディストリビューションでは、たとえば/etc/rc.d/rc.local)。 dev / null。 たとえば、「/ home / user / my_prog 1> / dev / null 2> / dev / null&」。 nohupコマンドを使用することもできます。
- 設計の規則に従って、/ etc / inittabを呼び出します。 最初の方法とは異なり、ここではプログラムの実行レベルを指定できます。
- デーモンとしてプログラムを起動/停止/再起動し、そのステータスに関する情報を受け取ることができるスクリプトを記述します。
最初の方法は最も簡単ですが、最も問題があります。 rc.localファイルはすべてのディストリビューションに含まれているわけではありません。 トリガーレベルを設定することはできません。 複数のプログラムがそこに記録されている場合、それらをサービスとして管理することは困難です(すべてを同時に開始または停止しない限り)。 そして、最終的には、そこから起動すると、システムの安定性がハッキングから損なわれます(例は検索エンジンで簡単に見つけることができます)。
2番目の方法は非常にエキゾチックです。彼自身が最近それについて知ったのですが、多くの管理者が使用していると書いています。 それでも、この方法で起動したデーモンなどのプログラムを操作することはできませんが、これはかなり不便です。 はい。inittabが乱雑になるのは見苦しいです。
後者の方法は現在最も「コーシャ」ですが、以前の方法よりも少し複雑です(おそらく一見)。 すべてのシステムデーモンを提示するのは彼であり、それはそれ自体を語っています。 したがって、以下で検討します。
グラフィカルプログラムを開始する方法もありますが、最後に、残りとは別に説明します。 彼は非悪魔的な存在です。
すぐに、Debian 6を持っていると言います。他のディストリビューションでは、パスがわずかに異なる場合があります。
デーモンとしての自動起動プログラム
通常、システムにはこれを行うための多くのヒントが既にありますが、それでもさまざまなファイルを登り、インターネットで追加情報を探す必要があります。 これは、ここで各文字を説明することを意味するものではありませんが、検索する必要が少なくなることを願っています。
始めるには、/ etc / init.dディレクトリを調べる価値があります。 すべてのサービス用の起動スクリプトと、自分で同じものを書きたい人のための2つのファイルが含まれています。
READMEとスケルトン
スケルトンには、かなり詳細なコメント付きのスタートアップスクリプトの空白が含まれており、READMEは、サイズが小さいにも関わらず、かなりうまく補完します。 また、他のファイルを調べて、理解できない状況を明確にする何かを見つけることもできます。
6番目のdebianは、スタートアップデーモンスクリプトにLSB(Linux Script Base)Init Standartを使用します。 詳細はこちらをご覧ください 。 LSBが使用されていないシステムについては、 こちらをご覧ください 。
スケルトンファイルを詳しく見てみましょう。 まず最初にすべきことは、もちろん「#!/ Bin / sh」です。 initスクリプトは起動ファイルです。 次に、コメントの見出しがあります。
###開始情報の開始 #提供:スケルトン #必須開始:$ remote_fs $ syslog #必須:$ remote_fs $ syslog #デフォルト開始:2 3 4 5 #デフォルト停止:0 1 6 #簡単な説明:initscriptの例 #説明:このファイルは、スクリプトを構築するために使用する必要があります #/etc/init.dに配置されます。 ###終了情報の終了
これは著者からの不必要な情報にすぎないように思えるかもしれませんが、そうではありません。 ここに示されていることは、スクリプトをシステムに書き込むときに使用されます。 これはREADMEファイルが便利な場所です。これは、すべての可能なパラメーターがスケルトンヘッダーにリストされていないことを示しています。 少なくとも次のものがあります。
#Should-Start:$ portmap #Should-Stop:$ portmap #X-Start-Before:nis #X-Stop-After:nis #X-Interactive:true
すべてのパラメーターとその完全な説明(英語)はここで、ロシア語ではこことここで見ることができます (新しいリンクについてはawzrnoに感謝します^ _ ^)。 Required-Startにロシア語版を追加します。$ allと書くと、現在のスクリプトが他のすべてのスクリプトの後に実行されます(必要な場合もあります)。 また、X-Interactive:trueは、このスクリプトがユーザーと対話して、パスワードなどの何かを入力するようユーザーに要求できることを示します。
スケルトンの次は、スクリプト自体で使用される変数の初期化です。 それらの一部は、ニーズに合わせてカスタマイズする必要があります。 次に、デーモン自体が存在することを確認し、構成ファイル(上記の変数で名前を指定する必要があります)を読み取ってから、rcS変数をロードしてから、initファイルの最も興味深い部分の1つを取得します。
。 / lib / lsb / init-functions
これは、ログの操作、サービスのLSBステータス、プロセスの操作のためのLSB関数の定義です。 一部のディストリビューションでは、このファイルは/etc/init.dディレクトリにある場合があります。 名前と詳細の一部は、このファイル内の関数に関するコメント、およびこちらから直接見つけることができます 。
次の部分は、スクリプト自体の本体です。 本体は、デーモンのコマンドである条件付き部分で構成されています:開始、停止、再起動/リロード/強制リロード、ステータス。 誰かが別々の機能でそれらを選択しますが、誰かはそうしません。 私の意見では、それらは関数でより美的に見え、コードはより理解しやすいです。 これらすべてのコマンドは、initスクリプトの実行に使用したコマンド(パラメーター)に応じて、実行するコードの一部を選択するcase selectステートメントによって結合されます。
したがって、通常のスクリプトを作成するには、ファイルの先頭にある変数に必要な値を代入し、場合によっては開始/停止関数にいくつかのコードを追加するだけで十分です(たとえば、ドライバーのロード/アンロード)。
ファイルの準備ができたら、それを/etc/init.dにコピーし、スタートアップに追加する必要があります。
update-rc.d <スクリプト名>デフォルト
(Debian 6安定版以降の場合はinsserv <スクリプト名>)
次のようにして、スタートアップから削除できます。
update-rc.d -f <スクリプト名>削除
(または、Debian 6安定版以降の場合はinsserv -r <スクリプト名>)
さらに、debianのsysv-rc-confコマンドまたはfedoraコアのサービスを使用して、サービスの起動を有効/無効にすることもできます。
パスワードを入力せずにグラフィックソフトウェアを自動実行
この機能を単独で実装すると、OSのセキュリティレベルが低下します。 誰でも入ることができます。 ただし、必要な場合があります。 ここでは、2つの主要なグラフィックマネージャーのオプションのみを検討します。 他にインストールされているものはありません。
KDE:
コントロールセンター(kcontrol)->システム管理->ログインマネージャー->便利でログインパスワード要求を削除できます。 そこで、ログインするユーザー(ルートを除く)を選択し、必要なチェックマークを付けます(パスワードを入力せずに自動ログインとログインを許可します)。
プログラムを自動実行するには、必要なソフトウェアのスタートアップファイル/スクリプトへのリンクを/home/<user>/.kde/Autostartディレクトリに追加する必要があります。
ノーム:
ここで、コントロールセンター(gnome-control-center)->ログイン画面でログインパスワードリクエストを削除することもできます。 そこで、ルート(ロックを突く、パスワードを入力)の下で、ログインするユーザーを選択します(スーパーユーザーを除く)。
プログラムを再起動するには、コントロールセンターで[スタートアップアプリケーション]-> [追加]を選択し、小さなフォームに入力します。
両方のグラフィックマネージャーの場合:
通常のユーザーとして実行する必要があるが、rootから実行する場合は、スーパーユーザーに代わって特定のプログラム/プログラムセットを実行するように、/ etc / sudoersでルールを構成する必要があります(セキュリティ上の理由から、visudoを使用することをお勧めします)。 これを行う方法を教えません 男性の場合、すべてがうまく書かれています。
今のところすべてです。