콘솔에 메시지가 표시되지 않도록 systemd에 신호 보내기

콘솔에 메시지가 표시되지 않도록 systemd에 신호 보내기

시스템 매뉴얼 페이지https://www.freedesktop.org/software/systemd/man/systemd.html콘솔에 표시되는 SIGRTMIN+21상태 메시지(예: 등)를 비활성화하기 위해 systemd 프로세스로 보낼 수 있음을 나타냅니다 . Started Login service.매뉴얼 페이지의 관련 스니펫은 다음과 같습니다.

SIGRTMIN+21
Disables display of status messages on the console, as controlled via 
systemd.show_status=0 on the kernel command line.

프로세스 테이블을 보면 systemd와 관련된 프로세스가 최소 4개 이상 있습니다. 맨 페이지에는 다음 중 어떤 것이 언급되어 있습니까?

~# ps -ef |grep [s]ystemd
root       448     1  0 18:47 ?        00:00:01 /lib/systemd/systemd-journald
root       450     1  0 18:47 ?        00:00:00 /lib/systemd/systemd-udevd
root       722     1  0 18:47 ?        00:00:00 /sbin/cgmanager -m name=systemd
root       723     1  0 18:47 ?        00:00:00 /lib/systemd/systemd-logind
message+   742     1  0 18:47 ?        00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation

나는 10초 동안 계속 잠을 자고 부팅 시 시작되는지 확인하는 것 외에는 아무것도 하지 않는 간단한 데몬을 작성했습니다.

나는 대략적으로 추측하여 다음과 같이 cgmanager프로세스(pid 722)에 신호를 보냈습니다.

# kill -SIGRTMIN+21 722

Cgroup 데몬을 다시 시작하는 것에 대한 여러 메시지가 콘솔에 있지만 "Start job...." 메시지가 콘솔에 계속 나타납니다.

[  OK  ] Stopped Cgroup management daemon.
[  OK  ] Started Cgroup management daemon.

Server lin1 ttyS0

[   ***] A start job is running for Sleep te... initialization (51s / no lim

위에서 시도한 것처럼 콘솔 로깅을 비활성화할 수 있는 사람이 있습니까? 그렇다면 어떨까요?

답변1

systemd를 init 시스템으로 실행 중인 경우 이러한 신호를 보내야 하는 프로세스는 PID 1이 있는 프로세스입니다( init대신 시스템에서 호출될 수 있음 systemd).

프로세스가 SIGRTMIN+21을 수신하면 아무 것도 기록하지 않지만 SIGUSR1(이로 인해 systemd가 D-Bus 버스에 다시 연결됨)을 수신하면 아무것도 기록하지 않는 것 같습니다.

kill -SIGUSR1 1

journalctl -e그러면 다음이 표시됩니다:

Dez 30 20:34:25 mineo-foobar systemd[1]: Trying to reconnect to bus...

위의 내용은 PID 1이 신호를 보내는 올바른 대상이지만 상태 메시지를 중지하려면 을 사용해야 함을 보여줍니다 kill -SIGRTMIN+21 1.

관련 정보