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
하지만:
- 로그인을 막지는 않습니다
- 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