Linuxの研究はCentos7カスタムsystemctlサービススクリプトノート

0x00の概要

  作業環境がCentos6バージョンを使用されている前に、スクリプトが/etc/init.d/xxxを使用しています。Cento7へのアップグレード後、起動前のスクリプトも使用できますが、systemctlカスタムスクリプトを使用されていません。

この記事では、特定の使用のためのケースをまとめました。完全にsystemdによって置き換え最初のプログラムからCentos7ブートモードを起動INIT、及びにsystemdユニットは、ブートサービス、電力レベル及びその他の機能を制御する方法に依存しています。

 

0x01を設定

  Centos7サービスsystemctlスクリプトは、一般的に格納します。/ usr / lib / systemdに、あるユーザディレクトリとシステムのポイント

    • / usr / libに/にsystemd /システム    #システムサービス、ブートプログラムを実行することができます(カイからのブートに相当する)でログインする必要がありません。
    • / usr / libに/にsystemd /ユーザー        ユーザーの#、プログラムを実行するためにはログインする必要があります

  ディレクトリとファイルの2種類があります。

    • * .Service#ファイルサービスユニット
    • * .TARGETの#ブートレベルユニット

  CentOS7 .serviceを終了する各サービスは、通常、3つの部分に分かれ:[単位]、[サービス]と[インストール]

コードをコピー
Vimのは/ usr / libに/にsystemd /システム/ xxx.service 
[単位]    主にサービスの説明 
説明=テスト    サービスの簡単な説明 
network.target =の後に     説明サービスタイプは、このサービスは、ネットワークサービスが開始後に開始される必要があることを示している 
の前にxxx.service =       #は、特定のサービスを開始するために必要性を表明開始前、後、フィールドが依存関係を伴わない唯一のブートシーケンスを必要とする前に。

[サービス]   #のコア領域 
タイプ=フォーク      #はバックグラウンドモードを表します。
=ユーザーユーザー         #は、ユーザー実行するようにサービスを設定する 
グループは=ユーザー        #のユーザグループが実行するようにサービスを設定 
KillMode =コントロール・グループ    #はsystemdにサービスを停止する方法を定義 
PidFileオプション=は/ usr / local /試験/ test.pid     #のPIDに格納絶対パスを
=再起動NO         、定義されたサービスプロセスと出口にsystemd再始動モード、デフォルトでは再起動していない 
ExecStart =は/ usr / local /テスト/ binに/ startup.sh     #のサービスは、コマンドを起動し、コマンドは絶対パス必要が 
trueにPrivateTmp =を                                サービスの配布に指示独立した一時的なスペース
   
[インストール]    
WantedBy = multi-user.target   マルチユーザ
コードをコピー

 

0x02のフィールド説明

コードをコピー
入力タイプは次のとおりです。
    単純な(デフォルト): プロセスExecStartフィールドベースのプロセスを開始するために 
    フォーク:   #1 、親プロセスが終了、起動する()の方法をフォークするExecStartフィールドを、子プロセスは(バックグラウンドで実行されている)主なプロセスになります。通常、フォークに設定する 
    ワンショット:   シンプルに類似するが、それが起動する他のサービスの前に実行を完了するために一度だけ、systemdには待機します 
    DBUS:    シンプルに似てますが、開始するにはD-バス信号を待ちます 
    通知:    シンプルに類似します、スタート信号が通知され、その後、他のサービスにsystemd再起動されます後に 
    IDLEを:     #はシンプルに似ていますが、他のタスクが実行されるまで待つように、サービスを開始します。
    
EnvironmentFile:
    設定ファイルを指定し、接続詞番号の組み合わせを使用して、異常なコンフィギュレーション・ファイルが存在しない避けること。

環境:
    異なる変数の複数のシェルが続きます。
    たとえば、次のように
    環境 = DATA_DIR = /データ/ エルク
    環境。LOG_DIR = =は/ var / log / elasticsearch 
    環境 = PID_DIR =の/ var / RUN / elasticsearch 
    EnvironmentFile = -の/ etc /のsysconfig / elasticsearch 
    
コネ記号( - ):すべての設定を開始する前に、追加の変数フィールドは、接続詞を追加することができます何の
    表現誤差の抑制は、すなわちエラーが発生した場合、他のコマンドの実行に影響を与えるません。
    EnviromentFileのような` = -の/ etc /のsysconfig / xxx`ファイルが存在しない場合であっても、それは例外をスローしないことを言っ
    
KillModeタイプ:
    コントロール: -基(デフォルト)殺されるすべてのサブプロセスにおける電流制御グループを 
    プロセスを:#は本体のみのプロセスを殺す 
    ミックス:    #のマスター・プロセスはSIGTERMシグナルを受信すると、子は信号SIGKILLを受信していない 
    どれも:     何のプロセスが殺されませんが、サービスの停止コマンドの実行
を再起動タイプ:
    NO(デフォルト): 何も操作を出ない後 
    :オン成功   正常終了(終了ステータス0)、再起動する唯一の 
    ON故障を:   非正常終了、再起動、終了、及びタイムアウト信号を含む 
    オン異常:のみ終了またはタイムアウト信号は、再起動します 
    :ON-ABORTを     、唯一の終了信号の受信時には、キャプチャされません再起動します 
    オンウォッチドッグを:#1 タイムアウト終了、再起動しません 
    常に:       関係なく、終了の理由は、再起動しますどのような
    デーモンの、故障-ONが推奨する
RestartSecフィールド:
    systemdには、サービスを再起動する前に、秒数を待つように表現:RestartSec: 30  
    
様々なExecの * フィールド:
     #1 Execは*コマンドに続いて、唯一の「コマンドパラメータを受け入れるように.. &その他の特殊文字は、bash構文の多くがサポートされていません|「フォーマットは、> <受け入れることはできません。あなたはTyep =ワンショットbashの構文をサポートしたい場合は、設定する必要があり 
    ExecStartの:     #のコマンドをするときに、サービスが開始実行します
    ExecReload:   サービス再起動するときに実行するコマンド 
    ExecStopを:      #のサービスのうち、実行するコマンド 
    ExecStartPre: コマンドサービス開始前に 
    ExecStartPost:後にサービスを開始するには、コマンドを 
    ExecStopPost:#1 ストップサービス後のコマンド

    
WantedByフィールド:
    マルチ - user.target: 、マルチユーザコマンドラインモードを表し、この設定が重要である 
    graphical.target:  は、身体のようなグラフィカル・ユーザを表し、それはmulti-user.targetに依存します
コードをコピー

 

0x03のsystemctlコマンド

デーモン・リロードsystemctl     オーバーロードされたシステムサービス 
* .service有効systemctlをサービスブートを設定を       
開始しますsystemctl * .serviceの   #は、サービス開始   
systemctlの.serviceを* STOPの    #は、サービスが停止します 
* .serviceのリロードsystemctl #は、サービスを再起動します

 

参照

 

0x00の概要

  作業環境がCentos6バージョンを使用されている前に、スクリプトが/etc/init.d/xxxを使用しています。Cento7へのアップグレード後、起動前のスクリプトも使用できますが、systemctlカスタムスクリプトを使用されていません。

この記事では、特定の使用のためのケースをまとめました。完全にsystemdによって置き換え最初のプログラムからCentos7ブートモードを起動INIT、及びにsystemdユニットは、ブートサービス、電力レベル及びその他の機能を制御する方法に依存しています。

 

0x01を設定

  Centos7サービスsystemctlスクリプトは、一般的に格納します。/ usr / lib / systemdに、あるユーザディレクトリとシステムのポイント

    • / usr / libに/にsystemd /システム    #システムサービス、ブートプログラムを実行することができます(カイからのブートに相当する)でログインする必要がありません。
    • / usr / libに/にsystemd /ユーザー        ユーザーの#、プログラムを実行するためにはログインする必要があります

  ディレクトリとファイルの2種類があります。

    • * .Service#ファイルサービスユニット
    • * .TARGETの#ブートレベルユニット

  CentOS7 .serviceを終了する各サービスは、通常、3つの部分に分かれ:[単位]、[サービス]と[インストール]

コードをコピー
Vimのは/ usr / libに/にsystemd /システム/ xxx.service 
[単位]    主にサービスの説明 
説明=テスト    サービスの簡単な説明 
network.target =の後に     説明サービスタイプは、このサービスは、ネットワークサービスが開始後に開始される必要があることを示している 
の前にxxx.service =       #は、特定のサービスを開始するために必要性を表明開始前、後、フィールドが依存関係を伴わない唯一のブートシーケンスを必要とする前に。

[サービス]   #のコア領域 
タイプ=フォーク      #はバックグラウンドモードを表します。
=ユーザーユーザー         #は、ユーザー実行するようにサービスを設定する 
グループは=ユーザー        #のユーザグループが実行するようにサービスを設定 
KillMode =コントロール・グループ    #はsystemdにサービスを停止する方法を定義 
PidFileオプション=は/ usr / local /試験/ test.pid     #のPIDに格納絶対パスを
=再起動NO         、定義されたサービスプロセスと出口にsystemd再始動モード、デフォルトでは再起動していない 
ExecStart =は/ usr / local /テスト/ binに/ startup.sh     #のサービスは、コマンドを起動し、コマンドは絶対パス必要が 
trueにPrivateTmp =を                                サービスの配布に指示独立した一時的なスペース
   
[インストール]    
WantedBy = multi-user.target   マルチユーザ
コードをコピー

 

0x02のフィールド説明

コードをコピー
入力タイプは次のとおりです。
    単純な(デフォルト): プロセスExecStartフィールドベースのプロセスを開始するために 
    フォーク:   #1 、親プロセスが終了、起動する()の方法をフォークするExecStartフィールドを、子プロセスは(バックグラウンドで実行されている)主なプロセスになります。通常、フォークに設定する 
    ワンショット:   シンプルに類似するが、それが起動する他のサービスの前に実行を完了するために一度だけ、systemdには待機します 
    DBUS:    シンプルに似てますが、開始するにはD-バス信号を待ちます 
    通知:    シンプルに類似します、スタート信号が通知され、その後、他のサービスにsystemd再起動されます後に 
    IDLEを:     #はシンプルに似ていますが、他のタスクが実行されるまで待つように、サービスを開始します。
    
EnvironmentFile:
    設定ファイルを指定し、接続詞番号の組み合わせを使用して、異常なコンフィギュレーション・ファイルが存在しない避けること。

環境:
    異なる変数の複数のシェルが続きます。
    たとえば、次のように
    環境 = DATA_DIR = /データ/ エルク
    環境。LOG_DIR = =は/ var / log / elasticsearch 
    環境 = PID_DIR =の/ var / RUN / elasticsearch 
    EnvironmentFile = -の/ etc /のsysconfig / elasticsearch 
    
コネ記号( - ):すべての設定を開始する前に、追加の変数フィールドは、接続詞を追加することができます何の
    表現誤差の抑制は、すなわちエラーが発生した場合、他のコマンドの実行に影響を与えるません。
    EnviromentFileのような` = -の/ etc /のsysconfig / xxx`ファイルが存在しない場合であっても、それは例外をスローしないことを言っ
    
KillModeタイプ:
    コントロール: -基(デフォルト)殺されるすべてのサブプロセスにおける電流制御グループを 
    プロセスを:#は本体のみのプロセスを殺す 
    ミックス:    #のマスター・プロセスはSIGTERMシグナルを受信すると、子は信号SIGKILLを受信していない 
    どれも:     何のプロセスが殺されませんが、サービスの停止コマンドの実行
を再起動タイプ:
    NO(デフォルト): 何も操作を出ない後 
    :オン成功   正常終了(終了ステータス0)、再起動する唯一の 
    ON故障を:   非正常終了、再起動、終了、及びタイムアウト信号を含む 
    オン異常:のみ終了またはタイムアウト信号は、再起動します 
    :ON-ABORTを     、唯一の終了信号の受信時には、キャプチャされません再起動します 
    オンウォッチドッグを:#1 タイムアウト終了、再起動しません 
    常に:       関係なく、終了の理由は、再起動しますどのような
    デーモンの、故障-ONが推奨する
RestartSecフィールド:
    systemdには、サービスを再起動する前に、秒数を待つように表現:RestartSec: 30  
    
様々なExecの * フィールド:
     #1 Execは*コマンドに続いて、唯一の「コマンドパラメータを受け入れるように.. &その他の特殊文字は、bash構文の多くがサポートされていません|「フォーマットは、> <受け入れることはできません。あなたはTyep =ワンショットbashの構文をサポートしたい場合は、設定する必要があり 
    ExecStartの:     #のコマンドをするときに、サービスが開始実行します
    ExecReload:   サービス再起動するときに実行するコマンド 
    ExecStopを:      #のサービスのうち、実行するコマンド 
    ExecStartPre: コマンドサービス開始前に 
    ExecStartPost:後にサービスを開始するには、コマンドを 
    ExecStopPost:#1 ストップサービス後のコマンド

    
WantedByフィールド:
    マルチ - user.target: 、マルチユーザコマンドラインモードを表し、この設定が重要である 
    graphical.target:  は、身体のようなグラフィカル・ユーザを表し、それはmulti-user.targetに依存します
コードをコピー

 

0x03のsystemctlコマンド

デーモン・リロードsystemctl     オーバーロードされたシステムサービス 
* .service有効systemctlをサービスブートを設定を       
開始しますsystemctl * .serviceの   #は、サービス開始   
systemctlの.serviceを* STOPの    #は、サービスが停止します 
* .serviceのリロードsystemctl #は、サービスを再起動します

 

参照

 

おすすめ

転載: www.cnblogs.com/JetpropelledSnake/p/10931323.html