1~2초가 소요되는 긴급 종료를 수행하는 다음 스크립트가 있습니다. (휴지 시간이 너무 길다)
# Enable System Requests
sudo echo 1 > /proc/sys/kernel/sysrq
#sync
sudo echo s > /proc/sysrq-trigger
#emergency remount
sudo echo u > /proc/sysrq-trigger
#shutoff
sudo echo o > /proc/sysrq-trigger
이번 긴급 종료 중에 tail -f /var/log/syslog
긴급 동기화와 긴급 읽기 전용 재설치가 모두 성공한 것으로 확인되었습니다.
그러나 시스템을 다시 켠 후 fsck는 파일 시스템 오류( systemd status systemd-fsck-root.service
오류 " 표시) 를 보고했습니다.손상된 고아 연결 목록의 일부인 노드를 찾았습니다.").
이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까? 동기화 + 재설치 조합이 안전하다고 생각합니다. 파일 시스템이 일관되지 않은 상태에 있는 이유를 설명할 수 없습니다.
고쳐 쓰다:매우 이상한 점은 시작 매개변수를 사용하여 오류를 수정하면 fsck.repair=yes
/lost+found 폴더가 비어 있고 journalctl -u systemd-fsck*
수정이 완료되었음을 표시하지 않는다는 것입니다.
[23:41]root@ras3:/daten/scripts$ journalctl --all -u systemd-fsck*
-- Logs begin at Thu 2016-11-03 18:16:43 CET, end at Sat 2019-07-06 23:45:20 CEST. --
Jul 06 23:03:10 ras3 systemd-fsck[139]: e2fsck 1.43.4 (31-Jan-2017)
Jul 06 23:03:10 ras3 systemd[1]: Started File System Check Daemon to report status.
Jul 07 01:17:01 ras3 systemd-fsck[143]: Durchgang 1: Inodes, Blöcke und Größen werden geprüft
Jul 07 01:17:26 ras3 systemd-fsck[143]: Durchgang 2: Verzeichnisstruktur wird geprüft
Jul 07 01:17:32 ras3 systemd-fsck[143]: Durchgang 3: Verzeichnisverknüpfungen werden geprüft
Jul 07 01:17:32 ras3 systemd-fsck[143]: Durchgang 4: Referenzzähler werden überprüft
Jul 07 01:17:33 ras3 systemd-fsck[143]: Durchgang 5: Zusammengefasste Gruppeninformation wird geprüft
Jul 06 23:03:43 ras3 systemd[1]: Started File System Check on Root Device.
Jul 06 23:03:44 ras3 systemd[1]: Starting File System Check on /dev/mmcblk0p1...
Jul 06 23:03:44 ras3 systemd-fsck[290]: fsck.fat 4.1 (2017-01-24)
Jul 06 23:03:44 ras3 systemd-fsck[290]: /dev/mmcblk0p1: 188 files, 45366/86467 clusters
Jul 06 23:03:44 ras3 systemd[1]: Started File System Check on /dev/mmcblk0p1.
시스템은 Raspberry Pi 3 B+의 Debian Stretch입니다.
답변1
왜 이렇게 되어야 하는지 모르겠습니다. 이는 테스트되지 않은 대안입니다. 이것이 귀하의 시스템에서도 몇 초 동안 작동하기를 바랍니다.
# /etc/systemd/system/emergency-poweroff.service
#
# Immediately terminate all processes, and then power off.
# Usage: systemctl start emergency-poweroff
[Unit]
Description=Emergency Power-Off
DefaultDependencies=no
Type=oneshot
# SIGKILL all the things
# - except the process itself, or we would not continue
ExecStart=/sbin/killall5 -9
# Wait for all processes to be cleaned up,
# then cleanly shutdown the filesystems and kernel.
ExecStart=/bin/systemctl poweroff --force
systemctl poweroff
다음으로 systemctl halt
대체된 경우가능한화면에 로그 메시지를 유지합니다. 이는 첫 번째 테스트로 유용할 수 있습니다.