Linux Centos 7は起動スクリプトをシステムサービスに変換します。

Linux Centos 7は起動スクリプトをシステムサービスに変換します。

次の起動スクリプトがあります。これをシステムサービスに変換するにはどうすればよいですか?

description "x11vnc"

start on runlevel [2345]
stop on runlevel [^2345]

#console log

respawn
respawn limit 20 5

exec /usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /root/.vnc/passwd -rfbport 5900 -shared

答え1

upstart構成の一部の構成オプションは、systemdユニットディレクティブに直接変換できます。こんなことが起こるdescription(これになるDescription=)そしてexec(なるExecStart=.)

expect fork起動設定にはdaemonセクションまたは(変換された)セクションがないため、systemdデバイスをType=forking使用する必要があります。Type=simple

残りのセクションを見てみましょう。

start on runlevel [2345]
stop on runlevel [^2345]

これは、本質的にシステムが起動したときにサービスが開始され、システムがシャットダウンしたときに停止する必要があることを意味します。 systemdでは、それをインストールし、エンドデバイスのセクションをmulti-user.target参照して実行されます。[Install]

#console log

これはコメントアウトされていますが、以下を使用してシステムデバイスで同様の設定を制御できます。StandardOutput=そして関連オプション。

upstartでは、console loggedログに出力を送信するシステムのデフォルト値とある程度一致するデフォルト値です(ログはシステムの世界の主要なロガーであるため)。

respawn
respawn limit 20 5

したがって、最初の行はサービスの再起動を要求します。予期せず終了した場合、私はこれが次のように解釈されると信じています。Restart=on-failure(ただし、常に再起動する)は、おそらくRestart=yesここでupstartが実行する作業に近づくでしょう(正確に何をしているのかを言うほどupstartを知りません)。

2行目は、5秒以内に最大20回再生する制限を示しています。この制限はsystemdで設定できます。StartLimitBurst=20そしてStartLimitIntervalSec=5

最後に、すべてを1つにまとめると、/etc/systemd/system/x11vnc.serviceファイルには次のものが含まれます。

[Unit]
Description=x11vnc
StartLimitBurst=20
StartLimitIntervalSec=5

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /root/.vnc/passwd -rfbport 5900 -shared
Restart=on-failure

[Install]
WantedBy=multi-user.target

ファイル作成後、systemctl daemon-reloadsystemdを実行してユニットファイルをロードします。次にsystemctl start x11vnc.service実行を開始し、systemctl enable x11vnc.service起動時に開始します。

関連情報