systemd / init가 없을 때 전원을 끄는 방법 (예 : init = / bin / bash 사용)?


9

poweroffDBus를 통해 시스템에 연결할 수 없다고 불평합니다 (물론 살아 있지는 않습니다). 나는 않았다 sync다음 kill $$전원 끄기에 커널을 큐 것 죽어 1 PID 생각,하지만 커널 패닉을 일으키는 원인이되었다. 그런 다음 전원 버튼을 눌러 전원을 강제로 끕니다.

이 시나리오에서 전원을 끄는 가장 적절한 방법은 무엇입니까?


시스템 툴셋이 설치되어 있다는 질문에 대한 암시 적 전제가 있습니다. "시스템화되지 않음"이 실제로 시스템화 된 툴셋이 설치되어 있지 않다는 것을 의미 할 때, 제목을 읽을 수있는 방법은 대답이 다소 다릅니다. 아마도 그 자체로는 별도의 질문이있을 것입니다.
JdeBP

@JdeBP 제목 만 읽고 init=/bin/bash힌트 / 시사점을 무시하고 systemd가 설치되어 있는지의 여부는 모호합니다. 나는 systemd running 이 없다는 것을 의미했다 . 어쨌든 systemd를 실행하지 않으면 systemd 도구 세트가 쓸모없고 응답에 sysrq와 같은 다른 수단을 사용할 것이라고 생각했습니다.
JoL

답변:


10

마운트 한 파일 시스템을 마운트 해제하십시오. 루트 파일 시스템은 특별한 경우입니다. 이를 위해 당신은 사용할 수 있습니다 mount / -o remount,ro. Linux에서는 umount /이전 명령으로 효과적으로 변환되기 때문에 작동합니다.


즉, 언 마운트 해제에 대해 걱정할 필요가 없습니다.

  1. 저널링이나 이와 동등한 기능을 구현하지 않는 EFI 시스템 파티션에서 사용하는 FAT와 같은 오래된 파일 시스템 또는 ext2를 마운트했습니다. 최신 파일 시스템을 사용하면 sync충분하며 다음 부팅시 파일 시스템이 매우 빠르게 복구됩니다.
  2. 파일 시스템에 쓰는 실행중인 프로세스를 남겨두고 파일을 완전히 종료하려고했습니다. 이 경우 파일 시스템을 마운트 해제하려고 시도하면 유용합니다. umount가 실패하고 남은 기록기에 대해 사용자에게 알리기 위해 사용 중 오류가 표시되기 때문입니다.

위의 중요한 부분입니다. 그런 다음을 사용하여 하드웨어 전원을 편리하게 끌 수도 있습니다 poweroff -f. 또는로 재부팅하십시오 reboot -f.

systemd의 - 특정 상당 poweroff -f: systemctl poweroff -f -f. 그러나 SysV 호환성없이 빌드 된 경우에도 poweroff -f동일한 작업을 수행 systemd하고이 명령을 지원합니다.


기술적으로 USB 하드 드라이브에는 Windows "안전 제거"또는 이와 동등한 장치가 필요하다고 기록되어 있습니다. 그러나이 요구 사항은 전원 안전 장치가 아니며 Linux는 정상적인 종료 중에는이를 수행하지 않습니다. 하드 드라이브가 회전하는 동안 플러그를 뽑으려고하는 것을 포함하여 조깅하지 말아야한다는 의미로 해석하는 것이 좋습니다. 전원이 완전히 꺼지면 드라이브 회전이 중지됩니다. 아마 멈추지 않는지 듣고 느끼거나 볼 수 있습니다 :-).


당신도 알다시피, 나는 수락하는 것을 잊지 않습니다. 다른 시간대 (아마 다른 시간대에있을 수도 있음)가 질문을보고 자신의 답변을 제공 할 수 있도록 답변을 수락하기 전에 잠시 기다려야하는 조언을 보았습니다.
JoL

sync()ext2에 충분합니다. 더러워지는 것에 대해 불평하지만 요약 정보를 제외하고는 실제로 손상되지 않았습니다. 나는 일반적으로 init = / bin / bash 또는 그와 동등한 것을 비상 상황이라고 생각합니다.
Joshua

@Joshua ext2 fsck는 훌륭 합니다. 그러나 큰 파일 시스템에서 fsck 성능은 저널 재생보다 훨씬 나쁩니다. 응급 상황에서는 언 마운트 마운트 해제로 인해 지연되고 싶지 않습니다.
sourcejedi

당신은 fsck.mode=skip오른쪽 에 대해 알고 있습니까?
Joshua

3
왜 관련이있는 @Joshua? 부정한 마운트 해제를 수행하면 결국 FS를 복구해야합니다. fsck.mode=skip부정한 마운트 해제 후 정상적으로 부팅 하는 데 사용하지 마십시오 !
sourcejedi

5

아래 두 명령을 간단히 실행하겠습니다.

echo s > /proc/sysrq-trigger    <= For sync
echo o > /proc/sysrq-trigger    <= For shutdown the system

커널에서 매직 키가 활성화되었다고 가정


4

좋아, 그래서 나에게 옵션이 있다는 것이 나에게 일어났다 exec init. 거기에서 나는 아마 나중에 할 수있을 것이다 poweroff. 그래도 더 나은 대안이 있는지 궁금합니다.


@ G-Man은 정상적인 부팅 프로세스를 시작하지 않고 결국 정상적인 쉘을 제공합니까?
muru December

2
@muru 당신은 할 수 있습니다 exec init 0. 모든 초기화 시스템에서 작동하지는 않지만 동일한 시스템이 종료 시퀀스를 거칩니다.
Austin Hemmelgarn

1
나는 이것이 다른 이유로 정말 좋은 대답이라고 생각합니다. 특히 대부분의 경우 전원 끄기는 재부팅만큼 바람직하지 않으므로 손상을 수정 한 후 재부팅을 피할 수 있습니다.
Joshua

1
@Joshua 편리하지만 가장 안전하려면 전체 부팅 프로세스가 작동하는지 확인하는 것이 좋습니다 :-).
sourcejedi

3

효과적으로 tou는 reboot (2) syscall 을 호출하려고합니다 .

두 가지 방법으로이를 수행 할 수 있습니다.

  1. reboot -f또는을 실행 poweroff -f하면 reboot(2)직접 호출해야 합니다.

  2. 실제 Linux 가상 터미널 (GUI 터미널 에뮬레이터가 아님)을 사용하는 경우 Ctrl+ Alt+ 를 누릅니다 Delete.

일부 사용자 공간 프로그램 (일반적으로 init)으로 키보드 단축키를 비활성화 할 수 있습니다. 비활성화하면 단축키가 대신 init로 신호를 보냅니다.

위의 모든 명령은 모든 디스크를 마운트 해제하거나 읽기 전용으로 다시 마운트하고 동기화를 실행 한 후에 수행해야합니다. 그렇지 않으면 기록되지 않은 데이터가 손실 될 수 있습니다. 쉘이 유일한 프로세스 인 경우 동기화로 충분할 수 있습니다.


1

Magic SysRq 키 ( https://en.wikipedia.org/wiki/Magic_SysRq_key )를 사용하여 컴퓨터의 전원을 끌 수 있습니다.

올바르게 종료하려면 다음을 사용하십시오 (Wikipedia에서 인용).

매직 SysRq 키의 일반적인 사용은 그렇지 않으면 잠긴 Linux 컴퓨터를 안전하게 재부팅하는 것입니다 (abbr. REISUB ). 이렇게하면 fsck재부팅시 필요 하지 않을 수 있으며 일부 프로그램은 저장하지 않은 작업의 비상 백업을 저장할 수 있습니다. [5]   쿼티 (또는 AZERTY) 연상 기호 : " R aising E lephants I S S O U tterly B의 o- 링", " R EBOOT E VEN I F SU tterly Broken "또는 간단히"BUSIER "라는 단어는 뒤로 다음 SysRq 키 순서를 기억하는 데 사용됩니다.

  • 유엔 R아 (X에서 키보드 다시 제어 할)
  • t Erminate (모든 프로세스에 전송 SIGTERM, 그들이 정상적으로 종료 할 수 있도록)
  • K ILL (모든 프로세스에 전송 SIGKILL, 즉시 종료하도록 강요)
  • Sync (데이터를 디스크로 플러시),
  • Unmount (모든 파일 시스템을 읽기 전용으로 다시 마운트),
  • 다시 Bot.

그러나 "power O ff"에 대해 마지막 B를 O (azerty / qwerty)로 대체


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.