Upstart

如何在允許使用者登錄之前配置 Upstart 腳本以執行?

  • March 6, 2018

作為 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 指令

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

謝謝!

我回答了問題的第一部分。我不想在服務階段執行腳本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

引用自:https://unix.stackexchange.com/questions/427742