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 指令
start on starting lightdm
但:
- 它不會阻止登錄
- 僅適用於使用 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