ユーザーがログインを許可する前に実行するようにUpstartスクリプトをどのように設定しますか?

ユーザーがログインを許可する前に実行するようにUpstartスクリプトをどのように設定しますか?

Ubuntu 14.04システム構成プロセスの一環として、スクリプトが完了するまでユーザーがログインできないようにしたいと思います。私は次のようなスタートアップの仕事をしています。

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

script
    #launch the bash script that does install
    /bin/bash /path/to/provisioning-script.sh
end script

スクリプトは起動時に実行されますが、ユーザーがログインするのを防ぎません。私もスタートコマンドを試しました

start on starting lightdm

しかし:

  1. ログインを妨げない
  2. lightdm を使用するシステムでのみ使用できます。一部のシステムはコマンドラインでのみ起動します。

次のコードを使用して、Ubuntu 16.04(systemd)で目的を達成しました。

[Unit]
DefaultDependencies=no
After=network.target
Before=systemd-user-sessions.service

[Service]
Type=oneshot
ExecStart=/bin/bash /path/to/provisioning-script.sh
StandardOutput=journal+console
StandardError=journal+console

[Install]
RequiredBy=systemd-user-sessions.service

ありがとうございます!

答え1

私は質問の最初の部分に答えました。サービスフェーズでスクリプトを実行するのではなく、ステップで実行したいとstarted思います。prestartこれを行うには、prestartスクリプトタグの前に追加する必要があります。

本質的に、結果としてコマンドが完了するstartedまでサービスは考慮されず、prestartサービスが開始されるまでlightdmサービスは開始されませんstarted

start on starting lightdm
stop on [!12345]

prestart script
    #launch the bash script that does install
    /bin/bash /path/to/provisioning-script.sh
end script

関連情報