사용자 입력을 기다리는 동안 시스템 서비스를 일시 중지하는 방법은 무엇입니까? [폐쇄]

사용자 입력을 기다리는 동안 시스템 서비스를 일시 중지하는 방법은 무엇입니까? [폐쇄]

읽기 및 휴면( 사용 openvt -w)이 모두 수행되지만( read -p메시지가 표시됨) 시작을 일시 중지할 수는 없습니다.

나는 옵션 조합을 시도했습니다 /etc/systemd/system/<service>.

Type=oneshot
TimeoutSec=5000
StandardInput=tty

이 사용 사례는 서비스 스크립트 실행이 중지된 후에만 GUI를 로드합니다. GUI가 로드되기 전에 sshfs(여러 사용자 및 호스트 이름 옵션과 함께)를 /home으로 마운트하고 /home을 로컬 파티션(기본값)으로 "고정"해야 합니다.

답변1

"일시 중지 후 시작"은 systemd에서 정확하게 작동하지 않습니다. systemd는 여러 서비스를 병렬로 실행합니다.

그러나 서비스에 "종속성"을 추가하면 기본적으로 "시작이 일시 중지되어야 하는" 지점을 지정하고 서비스를 기다려야 합니다.

위 사용 사례의 경우 다음을 추가하세요 /etc/systemd/system/<service>.

[Unit]
Description=commands to run before GUI loads
Before=display-manager.service

이렇게 하면 강제 display-manager.service로 대기 하게 됩니다 <service>. 내 <service>경우 에는사용자 입력(연결되지 않은 독자의 경우) 효과적으로 "시작을 일시 중지"합니다.

다음은 회의적인 의견을 표현한 다른 논평자의 의견입니다.

이런 종류의 사용 사례가 있습니다. 즉, 암호화된 파티션을 잠금 해제하는 것입니다. systemd의 버그(bugs.freedesktop.org/show_bug.cgi?id=88483)로 인해 기본 systemd 메커니즘을 사용하여 부팅하는 동안 암호화된 다중 장치 Btrfs 배열을 잠금 해제할 수 없습니다. 몇 시간 동안 이 답변을 시도한 후에는 내 서비스 파일에 필요한 부분이 누락되어 자신만의 시스템 서비스 파일을 만들어야 합니다. 감사합니다.

관련 정보