중지 명령과 종료 명령의 차이점은 무엇입니까?


답변:


77

일반적으로 shutdown명령을 사용합니다 . 종료 또는 재부팅 전에 시간 지연 및 경고 메시지를 표시 할 수 있으며 이는 다중 사용자 셸 서버의 시스템 관리에 중요합니다. 다운 타임에 대한 사전 통지를 사용자에게 제공 할 수 있습니다.

따라서 shutdown 명령을 사용하여 컴퓨터를 즉시 중지 / 끄십시오 (최소한 Linux 및 FreeBSD에서).

shutdown -h now

또는 30 분 전 사용자 정의 경고로 재부팅하려면 다음을 수행하십시오.

shutdown -r +30 "Planned software upgrades"

지연 후 실행 레벨 0 (정지) 또는 6 (재부팅)으로 변경하도록 shutdown지시 init합니다. (생략 -h하거나 생략 -r하면 시스템이 단일 사용자 모드 (런레벨 1)로 전환되어 대부분의 시스템 프로세스를 종료하지만 실제로 시스템을 정지 시키지는 않습니다. 관리자는 여전히 루트로 로그인 상태를 유지할 수 있습니다.)

시스템 프로세스가 종료되고 파일 시스템이 마운트 해제되면 시스템이 중지 / 전원을 끄거나 자동으로 재부팅됩니다. 변경 사항을 디스크에 동기화 한 다음 실제 중지 / 전원 끄기 또는 재부팅을 수행 하는 haltor reboot명령을 사용하여 수행합니다.

경우 리눅스, halt또는 reboot시스템이 이미 종료 프로세스를 시작하지 않은 때 실행되는, 그것은 호출합니다 shutdown직접 의도 한 작업을 수행하기보다는 자동이 아니라 명령을 사용합니다. 그러나 FreeBSD와 같은 시스템 에서 이러한 명령은 먼저 작업에 로그인 wtmp한 다음 프로세스를 종료하거나 파일 시스템을 마운트 해제하지 않고 즉시 중지 / 재부팅 자체를 수행합니다.


좋은 설명입니다!

18
...하지만 지금은 구식입니다. 시스템화 된 Linux 운영 체제에서는 이러한 명령 (systemd doco의 단어로)이 "호환성만을 위해"존재합니다. 서로를 호출하는 별도 haltreboot, 및 shutdown프로그램 이 없습니다 . 하나의 단일 프로그램이 있으며 내부에는 하나의 코드 경로로 유입되는 많은 명령 줄 파서가 있습니다. 달리기 레벨도 없습니다. 종료는 단일 사용자 모드로 진행되지 않습니다. 실제로 단일 사용자 모드 자체의 이름이 바뀌 었습니다. 자세한 내용은 unix.stackexchange.com/a/196014/5132를 참조하십시오 .
JdeBP

49

과거

1980 년대에, BSD의가 있었다 halt, reboot하고 shutdown. 시스템 5 UNIX에는 BSD 호환성 도구 세트가있었습니다. 그러나 기본적으로 고유 한 shutdown명령 이있었습니다 . 그리고 전혀 없었 halt거나 전혀 없었 reboot습니다. (일부 시스템 5 변형에는 SCO XENIX와 같은 것이 haltsys있습니다.)

BSD haltreboot명령은 저수준, 과감하고 즉각적이었습니다. BSD 시스템을 종료 하는 사려 깊은 방법은 사용자에게 메시지, 정상적으로 종료 된 서비스, 기록 된 로그 항목, 로그인 비활성화 등의 shutdown모든 작업을 수행 하는 명령 이었습니다 wall.

BSD가받은 지혜가 " shutdownexecs halt/ reboot"이며, 후자는 조심스럽게 사용되어야한다고 주장한 곳이 대부분 이었다. 사람들은 그 반대로 습관을 배운 곳은 시스템 (5) 세계했다 halt/ reboot: 단지 편리 shorthands 아무것도 더이었다 /usr/ucb/halt은 "BSD 호환성 패키지"에서, 효과 다르지 않았다 shutdown -h. 그들 둘 다하고 있었다 init 0.

추가 자료

오늘

오늘날 우리는 다양한 시스템 관리 도구 세트를 보유하고 있습니다. BSD는 여전히 1990 년대 AT & Tism을 제거했지만 툴셋을 가지고 있습니다. 1992 년 Miquel van Smoorenburg는 Linux init+ rc및 관련 도구를 작성했는데, 실제로 UNIX System 5의 소프트웨어는 아니지만 사람들이 "System 5 init"로 지칭합니다. init). 도 있습니다 systemd , 신출내기 , 그리고 요기 가, 각각의 독자적인 구현halt, reboot, fasthalt, fastboot, 등을.

툴셋도 커지고 변경되었습니다. poweroff대부분의 현대 기계의 중앙 처리 장치가 전원 공급 장치를 제어 할 수있는 방법이 없기 때문에 1980 년대 운영 체제에는없는 명령 이 있습니다 . 특히 리눅스 툴셋은 BSD 명령을 요구했다. 그러나 UNIX System 5의 BSD 호환성 도구와 마찬가지로 정확한 작업 결과가 아니며 크게 변형되었습니다.

이 납작 어디 지점으로 우리를 가져왔다 halt하고 shutdown있는 대부분 동일. 그러나 정확한 세부 사항은 툴셋마다 다르며 각 툴셋의 메커니즘은 모두 약간 다릅니다.

또한이 명령 세트가 그래서 지금은 사람들이 컴퓨터에게 같은 자기 모순적인 지침을 제공 할 수 있도록 호환성 옵션을 꽃줄로 장식되었다 약간 당황 위치로 우리를 가져왔다 reboot --halt그리고 poweroff --reboot나는 요기에 대한 매뉴얼 페이지에서 언급 한 바와 같이, halt, fasthalt, reboot, fastboot, 그리고 poweroff명령. ☺

체계화 된 툴셋

halt, reboot, poweroff, telinit,하고 shutdown있는 모든 하나 개의 프로그램 . 실제로 시스템 자체의 systemctl프로그램입니다. 여기에는 자체 명령뿐만 아니라 해당 명령의 다양한 명령 구문 구문에 대한 여러 명령 줄 파서가 있지만 그 후에는 내부적으로 하나의 코드 경로로 유입됩니다. halt조치를 트리거하기 위해 사용 shutdown및 해당 명령 옵션과 동일한 조치를 트리거하기 위해 사용 및 해당 명령 옵션 사이에는 차이가 없습니다 .

systemd는 복구 모드 ( 시스템 사용자단일 사용자 모드 로 이름을 바꾼 것임)를 시스템 종료 상태로 간주하지 않으며 이러한 명령으로는 도달 할 수 없습니다. Option-less는와 shutdown now동일합니다 poweroff.

더 읽을 거리 :

BSD

BSD는 1980 년대의 의미를 대부분 유지합니다. haltshutdown매우 따라서있다 하지 그들의 도구 세트에 해당. halt그리고 reboot하나 개의 프로그램이다; 여전히 낮고, 즉각적이며, 과감합니다. 반면 shutdownpoweroff하나 하나 개의 프로그램, 일정 종료와 같은 배려 것들, 쓰기의 모든 수행 wall, 작업을 로깅, 메시지를 로그인을 비활성화 등을.

BSD의 도구 세트에서 shutdown/ poweroff전통적으로 호출 결국 halt/ reboot최종 시스템의 상태 변화를 제정 할 수 있습니다. (현재는 틀렸다) " shutdownexecs halt/ reboot"는 사실 여전히 NetBSD와 OpenBSD를 가지고 있다는 지혜를 받았다 . 그러나 FreeBSD / TrueOS / DragonFlyBSD에서는 -o옵션을 사용 하는 경우에만 해당 됩니다. BSD의 다음에, 양쪽 이 프로그램은 일반적으로 다양한 신호 (전송함으로써 시스템의 최종 상태 변경 제정 INT, USR1USR2) 프로세스에 # 1. init않는 모든 이들 시스템에 시스템 상태 관리.

그들 모두에서 옵션-이하 shutdown now의 일치하지 않는 halt, reboot또는 poweroff. 이것은 BSD로 천이 단일 사용자 모드 중 하나를 전환 할 수있는, 다시 으로 다중 사용자 모드 .

더 읽을 거리 :

nosh 툴셋

요기 시스템 관리 도구 세트에서, halt, fasthalt, poweroff, fastpoweroff, reboot, 그리고 fastboot모두 하나 개의 프로그램입니다. 받은 지혜 shutdown반대 인 일반적으로 단순히 연결되는 이전 버전과의 호환성 심입니다 . --force옵션에 체인을 만드는 system-control대신.

따라서이 "BSD / System 5 호환성"명령 세트는 위에있는 단순한 shim 계층이므로이 도구 세트에서 명령과 명령 (동등한 옵션 사용 --force) 사이 에는 차이가 없습니다 (없음 ) .haltshutdownshutdown

더 읽을 거리 :

신생 툴셋

nosh와 마찬가지로, 시작 시스템 관리 도구 세트에서 수신 된 BSD 지혜의 반대가 적용됩니다. halt, reboot그리고 poweroff일반적으로 연결되는 하나의 프로그램입니다 shutdown. --force옵션을 사용 하지 않으면 reboot()시스템 호출 자체가됩니다.

따라서이 도구 세트에서 명령 과 명령 (동일한 옵션 사용) --force사이 에는 차이가 없습니다 (없음 ) . 또 다시, 옵션이없는 (어떤 없음은 , 또는 에 시스템을 제공합니다 모든 설정 옵션들이로 호출 끝낼 수 있습니다) 단일 사용자 모드 보다는 종료.haltshutdownshutdown nowhaltrebootpoweroff

더 읽을 거리 :

리눅스 시스템 5 init+ rc툴셋

다시 말하지만,이 도구 세트를받은 BSD 지혜의 반대 적용 halt하고 reboot단순히 체인에 shutdown- 시스템이 전원 끄기 또는 정지 이미하지 않는 한이 명령이 실제로 최종 시스템의 상태 변화를 제정하는 경우, "-수준"를 실행하게됩니다. shutdown차례에 체인 init.

그래서, 다시 차이 (시스템이되어 있지 않으면이 없다 이미 사이에 크게 종료) haltshutdown전 그냥 후자를 호출하기 때문이다. 그리고 네, 다시 옵션이없는 shutdown now(어떤 없음 halt, reboot또는 poweroff에 시스템을 제공합니다 모든 설정 옵션들이로 호출 끝낼 수 있습니다) 단일 사용자 모드 보다는 종료.


그렇기 때문에 유권자의 80 %가 투표 시스템이 작동하지 않는 이유
ychaouche

"정지 및 재부트는 하나의 단일 프로그램이며 여전히 낮은 수준, 즉각적, 과감한 수준"이라고 말하지만 그렇지 않은 것 같습니다. 중단 및 재부팅 유틸리티는 파일 시스템 캐시를 디스크로 플러시하고, 실행중인 모든 프로세스를 SIGTERM (및 이후 SIGKILL)으로 보내고, 각각 시스템을 정지하거나 다시 시작합니다. wtmp (5) 파일에 종료 레코드 입력을 포함하여 조치가 기록됩니다. 참조 : dragonflybsd.org/cgi/web-man?command=halt§ion=ANY
ychaouche

이제 목록에없는 이미 명시 적으로 제공된 (두 번 이상) 세트에 대한 답을 다시 읽으십시오 . 다양한 BSD의 시스템 관리자 매뉴얼에도 나와 있습니다.
JdeBP

@JdeBP는 무엇입니까?
ychaouche

11

나는 이것이 사용중인 UNIX / Linux 버전에 다소 의존적이라고 생각합니다. Centos (및 다른 최신 Linux를 경험할 경우)에서 시스템이 완전히 종료되도록 실행 중지 ( 실행 레벨이 0 또는 6 이 아닌 경우)를 호출합니다 . Solaris 10 중지는 더 잔인하므로 디스크 캐시를 플러시하고 시스템 전원을 차단합니다 . 스크립트를 실행하거나 smf 기능을 종료하려고 시도하지 않습니다 .


2

AWS EC2를 사용하는 사용자의 경우 : AWS 에서 인스턴스가 종료 되면 인스턴스를 shutdown 중지 합니다.halt


중지종료 의 차이점은 무엇입니까 ?
roaima

그것은 완전히 다른 주제입니다. 여기서 여기서는 언급하지 않았습니다. 그러나 docs.aws.amazon.com/AWSEC2/latest/UserGuide/…를
dveim

1
따라서 귀하의 답변에서 stop 은 말하는 것을 수행하고 인스턴스를 중지하는 반면 중단 (또는 다른 용어로 종료 )하면 인스턴스가 중지되고 삭제됩니다.
roaima

예. 그러나 그것은 AWS에 따라 다릅니다.
dveim

아 내가 참조. OP가 컨텍스트를 제공하지 않았습니다. 당신은 가지고 있습니다. 감사.
roaima

0

- 리눅스에서 "정지"와 "재부팅"shutdown 명령의 별칭 shutdown -hshutdown -r각각. Bareword shutdown은 일반적으로 -h를 가정합니다.


10
그것들은 aliases쉘 별칭이라는 의미는 아니지만 halt기본적으로 단지 호출 shutdown -h하고 reboot실행 shutdown -r합니다. 당신이 통과하면 참고 -f로 (강제) 옵션을 사용 halt하거나 reboot, shutdown있다 없다 라고합니다.
Mikel

실제로 여전히 잘못되었지만 시스템 운영 체제에서 Shadur의 설명은 Mikel의 수정보다 진실에 더 가깝습니다. "A는 단지 B를 호출합니다"는 없습니다. unix.stackexchange.com/a/196014/5132에 자세히 설명되어있는 것처럼 하나의 단일 프로그램 을 호출하는 대체 방법입니다 .
JdeBP

@JdeBP이 시스템을 작성했을 때 1 년도 안되어서 전혀 들어 본 적이 없습니다. :)
Shadur

1
@JdeBP 내가 그들을 동일시 줄에, 말은 sendmail이 시점에서 명령 - MTA와 마찬가지로, 그것은 그들 모두가 모두를 인식하기 때문에 당신이 무엇을 사용 초기화 시스템에 문제가 실제로하지 않습니다 shutdownhalt같은.
Shadur

1
실제로는 중요합니다. 툴셋 간에는 미묘하고 미묘한 차이가 있기 때문입니다. 아이러니하게도, 그것은 또한 sendmail명령 의 경우입니다 . 그것은 sendmail명령과 같지만 생각하는 방식이 아닙니다.
JdeBP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.