사용자가 로그인하도록 허용하기 전에 실행되도록 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을 사용하는 시스템에서만 사용할 수 있습니다. 일부 시스템은 명령줄로만 부팅됩니다.

다음 코드를 사용하여 우분투 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

관련 정보