centos 7カスタムサービス(パラメータ長期更新)

3732 ワード

  • xxxx.サービスは3つの部分[Unit]、[Services]、および[Install]
  • に分かれています.
  • の3つの部分の具体的な内容は以下の
  • である.
  • xxx.サービスは/usr/lib/systemd/
  • に保存されます.
    [Service]
  • WorkingDirectory=/sbin/aio/duplicate_file_pool(この経路が下のExecStartの経路)
  • ExecStart=/root/.pyenv/shims/python3.4 qc_server.py
  • PIDFIle=xxxx(PIDを格納するファイルパス)
  • Environment="GOPATH=/usr/local/go"(環境変数設定、複数設定可能)
  • User=users(サービス実行のユーザを設定)、
  • PrivateTmp=True#独立した一時空間を割り当てるかどうか(デフォルト)
  • DefaultTimeoutStartSec=30#サービス開始許容最大時間、タイムアウト時間(デフォルト:秒)
  • Type=forking#サービス起動のタイプ
  • Type=simple(デフォルト):systemdは、サービスがすぐに開始され、サービスプロセスはforkしないと考えています.サービスが他のサービスを開始する場合は、socketアクティブ
  • でない限り、このタイプを使用して起動しないでください.
  • Type=forking:systemdは、サービスプロセスforkが親プロセスが終了するとサービス起動に成功すると考えている.通常のデーモンプロセス(daemon)では、この起動方法が需要を満たすことができないと判断しない限り、このタイプで起動すればいいです.この起動タイプを使用するには、システムdがサービスのプライマリ・プロセスを追跡できるようにPIDFIle=を同時に指定します.
  • Type=oneshot:このオプションは、1つのタスクのみを実行し、すぐに終了するサービスに適用されます.RemainAfterExit=yesを同時に設定して、システムdがサービスプロセスが終了した後もサービスがアクティブになっていると判断する必要がある場合があります.
  • Type=notify:Type=simpleと同じですが、サービスは準備ができたらsystemdに信号を送信し、この通知の実現はlibsystemd-daemonによって行われます.so提供
  • Type=dbus:このように起動すると、指定したBusNameがDbusシステムバスに表示されると、systemdはサービスが完了したと判断します.

  • Group=usersは、サービス実行を設定ユーザグループ
  • である.
    [Unit]
    Unitは、unitファイルメタデータおよびサービスの依存関係を記述するために一般的に第1の部分である.一般的なコマンドは次のとおりです.
  • Description=:ここでは一般的にサービスの簡単な説明を書きます.Documentation=:ここではサービスドキュメントへのリンクなどが一般的です.
  • Requires=:本サービスに依存する他のサービスはここに記載されており、本サービスを開始すると、一般的にこのサービスと依存するサービスが並列に起動され、依存するサービスの起動に失敗した場合、本サービスは正常に起動できません.
  • Wants=:このコマンドはRequires=と似ていますが、比較的緩やかで、依存するサービスの起動に失敗しても、本サービスは正常に起動し続けることができます.一般的な依存はこのコマンドを推奨します.
  • BindsTo=:Requires=と似ていますが、依存するサービスが停止すると、本サービスも停止します.
  • Before=およびAfter=:依存関係を説明したコマンドとともに使用する必要があります.依存する現在のサービスと依存するサービスの開始の順序を示します.Before=は、現在のサービスの開始が成功した後に依存サービスを開始できることを示します.After=は反対です.
  • Conflicts=:このコマンドの後に続くサービスは、現在のサービスと同時に実行できません.現在のサービスが実行されると、コマンドが列挙したサービスが停止します.
  • Condition...=:このコマンドは、現在のオペレーティングシステムをテストするなど、多くの他のコマンドとともに使用されることが多い.条件が満たされていない場合は、現在のサービスの開始をスキップします.
  • Assert...=:Condition...=と似ていますが、条件検出が満たされないと失敗します.
  • Restart=always
  • NotifyAccess=all
  • KillSignal=SIGINT

  • [Install]
    WantedBy=multi-user.target
  • multi-user.targetは、システムがマルチユーザ方式(デフォルトの実行レベル)で起動されると、このサービスが自動的に実行される必要があることを示しています.
  • 例えば
  • [Unit]
    Description=DuplicateFilePool.service
    After=network.target
    
    [Service]
    Type=simple
    WorkingDirectory=/test/project/test_pool(WorkingDirectory=[WorkingDirectory]     ?)
    ExecStart=/root/python3.4 qc_server.py
    Restart=always
    KillSignal=SIGINT
    
    [Install]
    WantedBy=multi-user.target
    

    serverの一般的な操作
    #    
    systemctl enable nginx.service
    #      
    systemctl disable nginx.service
    #     
    systemctl start nginx.service
    #     
    systemctl stop nginx.service
    #     
    systemctl restart nginx.service
    
    #   Unit    
    systemctl cat nginx.service
    #   Unit    
    systemctl edit nginx.service
    #     Unit    
    systemctl reload nginx.service
    
    #         unit,           
    systemctl list-units
    #            unit,              unit
    systemctl list-unit-files
    
    #        
    journalctl -u nginx.service    #      `-b`    ,               
    
    #     target  unit
    systemctl list-unit-files --type=target
    
    #     target,        。     `runlevel`  
    systemctl get-default
    
    #      target
    systemctl set-default multi-user.target
    
    #     target  unit
    systemctl list-dependencies multi-user.target
    
    #   target,    target unit     
    systemctl isolate multi-user.target
    
    systemctl poweroff    #   
    systemctl reboot       #   
    systemctl rescue    #   rescue  
    

    参考1参考2参考3