저는 Arch Linux 설치를 실행 중이고 systemd 서비스가 실행 중입니다 /etc/rc.local
. 에는 macOS 에서 rc.local
.dmesg -D
/Volumes
스크립트의 각 명령에 대해 rc.local
스크립트가 실패하는지 테스트한 다음 명령줄에 해당하는 숫자로 종료됩니다. 따라서 파일 조각(내 형식을 기억하도록 조정됨)은 다음과 같습니다.
#!/bin/bash
dmesg -D || exit 1
i=2
for name in usb sd
do
mkdir -p /mnt/${name} || exit ${i}
i=$((i+1))
done
sysctl -w kernel.kptr_restrict=2 || exit 4
exit 0
이것은 약간 투박하고 종료 코드가 스크립트 할당으로 제한되어야 한다는 인상을 받았지만 종료 값이 인쇄되므로 rc-local.service
systemd 서비스가 실패한 이유를 확인하는 방법을 아는 유일한 방법 입니다. systemd/가 문자열 등을 전달하는 등 실패한 이유에 대한 정보를 받을 수 있도록 systemctl status rc-local.service
코딩하는 다른 방법이 있습니까 ? 그런 다음 입력할 때 문자열이 다음과 같이 나타나는 것을 볼 수 있습니다 .rc.local
rc-local.service
rc.local
systemctl status rc-local.service
Error reason: Failed to set kernel.kptr_restrict
답변1
실패(0이 아닌 종료 코드)로 인해 명령(또는 명령이 충돌하는 경우 쉘)은 오류를 인쇄해야 합니다.
systemd는 이러한 오류 메시지를 시스템 로그에 기록합니다. 장점 systemctl status
은 서비스의 최신 로그 라인을 표시한다는 것입니다.
http://0pointer.net/blog/projects/systemctl-journal.html
systemctl status
편집: syslog는 루트()로 실행하거나 sudo
그룹의 구성원인 경우 에만 읽을 수 있습니다 .adm
systemd-journal