systemd:nginxを起動する前に、カスタムシェルスクリプトの実行を完了してください。

systemd:nginxを起動する前に、カスタムシェルスクリプトの実行を完了してください。

Debian 9 stableを使用してNGINXプロセスと海岸壁ファイアウォールを起動する前に、カスタムシェルスクリプトを起動したいと思います。

  • 初期化タスクの実行
  • /etcNGINX構成、海岸壁構成、およびオーバーレイをオーバーレイするためにディレクトリ(overlayfs)をマウントします。/etc/hosts
  • スクリプトもで終わりますsync。良い考えなのかはわかりません。

systemctl リスト依存関係
default.target
● ├─display-manager.service
● ├─systemd-update-utmp-runlevel.service
● └─multi-user.target
● ├─console-setup.service
● ├─cron.service
● ├ ─dbus.service
● ├─dropbear.service
● ├─myservice.service ​..] ● ├─basic.target ● │ ├─-.mount ● │ ├─myservice.service <-- マイサービス実行後







myservice.service 試す 1

[単位]
説明=私の開始 serviceRequires
=shorewall.service nginx.service
Before=shorewall.service nginx.service

[サービス]
RemainAfterExit=yes
ExecStart=/usr/local/bin/myservice start
ExecStop=/usr/local/bin /myservice停止

[インストール]
WantedBy=multi-user.target
WantedBy=basic.target

丸太:

Journalctl [...]
10月12日 11:31:43 server-dev nginx[448]: nginx: /etc/nginx/sites-enabled/defaultのアップストリーム "server-dev.com"の[emerg]ホストが見つかりません: 10月12日 33
11:31:43 server-dev nginx[448]: nginx: 構成ファイル /etc/nginx/nginx.conf テストに失敗しました <== NGINX: BAD
10月12日 11:31 :43 server-dev systemd[1] : nginx.service: 制御プロセスが終了しました。 code=exited status=1
Oct 12 11:31:43 server-dev systemd[1]: 高性能 Web サーバーとリバースプロキシサーバーを起動できません。
10月12日 11:31:43 server-dev systemd[1]: nginx.service: デバイスが障害状態に移行しました。
10月12日 11:31:43 server-dev systemd[1]: nginx.service: '終了コード'のため失敗しました。
Oct 12 11:31:43 server-dev systemd[1]: ターゲットマルチユーザーシステムに到達しました。
10月12日 11:31:43 server-dev systemd[1]: ターゲットグラフィックインターフェイスに到達しました。 10月12日 11:31:43 server-dev systemd
[1]: システム実行レベルの変更に対する UTMP アップデートを開始します。
のシステムUTMPアップデートを開始します。
10月12日 11:31:43 server-dev server[423]: DO: サーバー開始 DONE <== スクリプト終了 myservice 10月12日
11:31:43 server-devshorewall[449]: Shorewall 5.0.15.6 コンパイル中.. < == SHOREWALL: 確認
10月12日 11:31:44 server-devshorewall[449]: /etc/shorewall/shorewall.conf 処理中...
10月12日 11:31:44 server -devshorewall[ 449]: モジュールをロードしています。 ..

myserviceを実行した後、Shorewallシステムが正しく起動します。 Nginxはmyserviceの実行中に適切に上書き(上書き?)される前にほとんど起動されるため、/etc正しく初期化されません。

myservice.service 2回試行

私も変えようとしていました。

[インストール]
WantedBy=default.target

そして変化

[単位]
before=multiuser.target

それも動作しません。

myserviceが実行された後にnginxとshorewallが起動することを確認する方法は?

ベストアンサー1

systemdサービスタイプを指定しない場合、デフォルト値はですType=simple。これは、基本サービスプロセスが分岐したとき(まだコマンドを実行していないときExecStart)、サービスが開始されたと見なされることを意味します。代わりに、サービスの開始を考慮する前にコマンドが終了するのを待つType=oneshotこの方法を使用できます。詳細はExecStart参照してください。man systemd.service

おすすめ記事