Ubuntu 16.04.3 LTS를 실행하는 작은 Celeron 시스템이 있는데 재부팅해야 할 때마다(약 한 달에 한 번) 전원을 끄고 플러그를 뽑은 다음 다시 전원을 켜야 합니다.
문제는 중지되고 메시지가 표시되면서 자동으로 다시 시작되지 않는다는 것입니다 Reached target Shutdown
. 그래서 사용을 중단 sudo reboot
하고 전환했는데 sudo poweroff
얼마 지나지 않아 메시지가 나타났습니다.
몇 분 정도 기다리는 동안 추가 메시지가 나타납니다 3102533.654120 unregister_netdevice: waiting for lo to become free. Usage count=1
. 두 번째(시간으로 측정) 카운터는 약 3102533으로 매우 높습니다. 이는 약 36일에 해당하며 아마도 마지막 재부팅 시간일 것입니다. 따라서 해당 메시지를 내보내는 무언가가 백그라운드에서 여전히 실행되고 있습니다.
이전에도 이런 일이 있었고 Google 히트의 대부분은 Docker와 관련이 있었기 때문에 모든 컨테이너를 중지 docker stop $(docker ps -a -q)
하고 .sudo systemctl stop docker
sudo poweroff
또한 이 이상한 정전 중에 전원 버튼을 정상적으로 눌러 기기의 전원을 끌 방법도 없으며(길게 누르면 기기의 전원이 꺼집니다. iirc), 재설정 버튼을 눌러도 기기가 재부팅되지 않습니다. 매우 이상합니다. . 그것은http://www.asrock.com/mb/Intel/N3150DC-ITX/
가장 걱정되는 점은 "hdd" 표시등(SSD입니다)이 가끔 디스크와 상호 작용하는 것처럼 깜박이기 때문에 플러그를 뽑을 때 무언가가 손상될까 걱정됩니다.https://www.youtube.com/watch?v=T3ojE1un7WE
플러그를 뽑아도 안전합니까? 이 문제의 원인을 어떻게 찾을 수 있습니까? 지속적으로 액세스되는 일부 데이터베이스를 호스팅하기 때문에 머신을 재부팅할 수 없습니다.
위는 2월 12일, 아래는 3월 16일
방금 컴퓨터를 다시 "다시 시작"했습니다. 위와 동일한 프로세스가 종료되지 않습니다.
이번에는 재부팅하기 전에는 아무것도 하지 않았지만 apt upgrade/dist-upgrade
재부팅 후에는 업그레이드 중인 항목이 문제를 일으키지 않는지 확인하기 위해 수행했습니다.
닫힐 때까지 기다리는 동안 메시지가 나타날 때까지 아무 효과 없이 ctrl-alt-del을 여러 번 눌렀습니다.
즉시 다시 시작하려면 2초 내에 Ctrl-Alt-Del을 7번 이상 누르세요.
(그렇게 빨리 누른 것 같지는 않습니다. 어떻게든 캐시된 것 같거나 오랫동안 눌렀던 것 같습니다.) 그리고 나서
2697473.41.. systemd-shutdown[1]: DM 장치를 마무리할 수 없음, 무시됨(DM 앞의 추가 공간이 메시지의 일부임)
그 다음에
2697473.63..reboot: 시스템을 다시 시작합니다.
하지만 재부팅되지 않고 하드 드라이브 표시등이 가끔 깜박이며 디스플레이에 메시지가 지워지지 않습니다.
재설정 버튼을 눌러도 기기가 재설정되지 않습니다. 버튼에는 결함이 없습니다.
전원 버튼을 길게 눌러 기기의 전원을 끕니다. 다시 누르면 재부팅되고 재설정 버튼이 예상대로 작동합니다. 언제든지 이 버튼을 누르면 시스템이 즉시 재부팅됩니다.
부팅 후 apt update/upgrade/dist-upgrade를 실행하고 다시 sudo poweroff를 실행했습니다. 그냥 끄세요.
며칠 동안 기기를 켜면 매우 이상한 일이 발생하는데, 이것이 확실히 이 문제의 원인입니다.
제가 사용하고 molly-guard
있는데 이로 인해 문제가 발생할지는 잘 모르겠습니다. 발행할 때 sudo shutdown
연결된 키보드에서 로컬로 수행하므로 molly-guard
아무런 효과가 없습니다. 하지만 나는 그것이 molly-guard
문제의 원인이라고 생각합니다.
top -b > test-pre-reboot-no-upgrade.txt
게시하기 전에 하나 만들었고 이것이 sudo shutdown
출력입니다.https://pastebin.com/nZnJzRKu
답변1
nolapic
매개변수를 추가해 보세요.grub.cfg
달리기
sudo update-grub
https://help.ubuntu.com/community/BootOptions
나를 도와 주었다
여기에서 이러한 매개변수를 시도했습니다.noapic
nolapic
noacpi
irqpoll
noapm
nodma
nomce
그렇지 않으면 도움이 되지 않습니다. 문제 해결 - initramfs를 다시 컴파일합니다.
sudo update-initramfs -u
답변2
문제는 HDD/SSD 설치와 관련된 것 같습니다.
내가 하고 있는 일은 crontab에 startup.sh
기본 사용자(uid 1000)가 실행하는 @reboot 쉘 스크립트가 있고 이 스크립트는 HDD(예전에는 HDD였지만 지금은 SSD입니다)를 마운트하는 것입니다.
sudo mount /dev/sdb1 /media/ssd1
그런 다음 내가 한 일은 shutdown.sh
다음과 같은 스크립트를 만드는 것이었습니다.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Ensure that this is desired
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ""
echo "---- do you really want to shutdown/reboot? ----"
echo ""
read -n 1 -p "no, yes? (N/y) " ans;
case $ans in
y|Y) printf "\n\nok, preparing for shutdown/reboot\n\n";;
*) printf "\nok, exited\n\n"; exit;;
esac
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# DOCKER
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ''
echo '--| stopping docker portainer |--';
echo ''
docker stop portainer
... stop more containers
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Python
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ''
echo '--| killing all python processes |--';
echo ''
sudo pkill python
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# MongoDB
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ''
echo '--| exiting mongodb instances |--';
echo ''
mongod --dbpath /media/ssd1/data/mongodb/network/wiredTiger --shutdown
... stop more databases
echo ''
echo '--| deleting old mongodb logs |--';
echo ''
exec rm -rf {} \;"
sudo sh -c "find /media/ssd1/data/mongodb -type f -name 'log.txt.*' -exec du -ch {} + | sort -h"
sudo sh -c "find /media/ssd1/data/mongodb -type f -name 'log.txt.*' -exec rm -rf {} \;"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Sync
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ''
echo '--| syncing discs |--';
sync
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# SSD
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ''
echo '--| unmounting ssd1 and hdd5-1 |--';
echo ''
sudo umount /media/ssd1/
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Ask for next step
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ""
echo "---- ok, done. what next? ----"
echo ""
read -n 1 -p "exit, reboot, or shutdown? (E/r/s) " ans;
case $ans in
r|R) printf "\n\nok, rebooting\n\n"; sudo reboot </dev/null;;
s|S) printf "\n\nok, powering off\n\n"; sudo poweroff </dev/null;;
*) printf "\nok, exited\n\n"; exit;;
esac
이렇게 하면 시스템을 종료하고 다시 시작할 수 있습니다. 따라서 드라이브를 명시적으로 마운트 해제하지 않고 종료/다시 시작하기 전에 동기화를 실행하지 않는 것과 관련이 있을 수 있습니다.
댓글에서 언급했듯이 한 컨테이너(RabbitMQ)가 거대한 로그 파일(약 40GB까지 증가)을 생성하는 것을 발견했습니다. 이 파일을 동기화하는 것이 문제를 일으키는 것일 수 있습니다. 거의 전원이 꺼진 상태에서 동기화를 시도하고 있는 것입니다. 그러나 나는 거의 처음부터 이 문제를 겪었고 내가 아는 한 처음에는 RabbitMQ를 실행하지 않았기 때문에 확실하지 않습니다.