시작하는 동안 시스템 서비스의 출력을 화면에 어떻게 쓸 수 있나요?

시작하는 동안 시스템 서비스의 출력을 화면에 어떻게 쓸 수 있나요?

처음 부팅하는 동안 실행되는 사용자 정의 systemd 서비스가 있습니다.

사용자가 부팅하지 않고 부팅하면 콘솔에 내용을 기록하고 무슨 일이 일어나고 있는지에 대한 정보를 제공하고 싶습니다. 내 서비스에서 이 작업을 수행할 수 있는 방법이 있나요?

이것은 내 시스템 서비스입니다.

[Unit]
Description=Prepare operator after installation
[email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
Wants=network-online.target
After=network.target network-online.target
OnFailure=emergency.target
OnFailureJobMode=replace-irreversibly

[Service]
Type=oneshot
ExecStart=/usr/bin/provision-operator

[Install]
WantedBy=multi-user.target

답변1

에서 man systemd.directives"output"을 검색하고 StandardOutput=에 문서화된 내용을 찾을 수 있습니다 man systemd.exec. 여기서는 journal+consolesystemd 로그 및 시스템 콘솔로 출력을 보내는 것을 포함한 옵션을 찾을 수 있습니다 . 당신은 또한 그것을 시도할 수 있습니다 kmsg+console. kmsg"dmesg(1)을 통해 액세스할 수 있는 커널 로그 버퍼와 표준 출력 연결" 문서에 따르면

답변2

그게 내가하는 일이야. tty1에는 로그인 프롬프트가 없습니다. 따라서 기본적으로 MOTD가 표시되지 않습니다.

[Service]
Type=oneshot
Restart=no
ExecStartPre=/bin/sleep 10
[email protected] 
ExecStart=
ExecStart=-/bin/cat /etc/motd
StandardOutput=tty
TTYPath=/dev/tty1

oneshot, 한 번만 실행하십시오. Restart=no요구 사항 oneshot. 왜 두 개가 있는지 ExecStart, 왜 "-"가 복사되어 붙여넣어졌는지 알 수 없습니다. 추가했습니다 After=/ ExecStartPre=메시지가 표시되지 않기 때문에 다른 사람이 화면을 지웠을 수도 있습니다. 따라서 대상 "로그인 프롬프트" 뒤에 있어야 합니다.

면책 조항: 이 답변은 아이디어 모음으로 작성되었습니다. 나는 그들이 길을 잃는 것을 원하지 않습니다. 질문이 있으시면 직접 조사해 보시고 결과를 자유롭게 기여해 주시기 바랍니다.

이것은 X 없이 Debian Stretch에서 수행되었습니다.

관련 정보