새로운 시작을 원하시나요? 이 튜토리얼에서는 명령줄을 사용하여 Linux 또는 macOS 컴퓨터를 안전하고 깨끗하게 재시작하거나 종료하는 방법을 알려드립니다.
시스템 종료 준비
컴퓨터를 재부팅하거나 완전히 종료해야 할 때가 있습니다. GUI가 없는 서버에서 작업하거나 원격 컴퓨터에 대한 SSH 세션을 사용하는 경우 명령줄이 유일한 방법일 수 있습니다. Linux 및 Unix 계열 시스템(예: macOS)은 명령줄에서 직접 시스템을 종료하거나 재시작하는 데 사용할 수 있는 다양한 명령을 제공합니다.
다음은 사용 가능한 주요 명령입니다:
중단
재부팅
정지
전원 끄기
이러한 명령의 매뉴얼 페이지를 살펴보면 혼란스러울 수 있습니다. 명령줄 옵션에 따라 이 모든 명령은 종료, 재부팅 또는 시스템 중단을 수행할 수 있습니다. 실제로 재부팅, 중지 및 전원 끄기 명령의 매뉴얼 페이지에는 똑같은 정보가 들어 있습니다.
그 이면에는 무엇이 있을까요?
이에 대한 답은 systemd, 즉 역사적인 System V init 시스템을 대체한 부트스트랩 시스템에 있습니다. Linux 세계에서 Fedora는 2011년에 systemd를 도입했으며 그 이후로 많은 배포판에서 채택되었습니다. 2015년에 Debian과 Ubuntu가 systemd로 전환했습니다.
systemd 기반 배포판에서 shutdown, reboot, halt 및 poweroff 명령은 systemctl 명령을 가리키는 바로 가기입니다. 이러한 명령을 유지하는 이유는 System V init 기반 배포판과의 호환성을 제공하기 위해서입니다. 이는 셸 스크립트(및 노련한 System V 시스템 관리자)가 시스템 배포가 실행되는 컴퓨터로 이동하더라도 중단 없이 작동할 수 있음을 의미합니다.
종료 명령 사용
다중 사용자 시스템을 종료하거나 재부팅하려면 계획이 필요합니다. 시스템 종료 또는 재부팅 시점을 결정하고 다른 시스템 사용자에게 시스템 종료 예정 시간을 알려야 합니다. 하지만 개인 컴퓨터를 사용하고 혼자 사용하는 경우에는 훨씬 간단합니다.
이러한 명령을 실행하려면 sudo 그룹에 속해 있어야 합니다. 즉, 슈퍼유저 권한이 있어야 하고 sudo 명령을 사용할 수 있어야 합니다. 실행한 명령이 즉시 적용되고 다른 로그인 사용자에게 영향을 미치지 않으면 sudo를 사용할 필요가 없습니다. 이러한 명령 중 하나를 사용하려고 했지만 명령이 거부되면 sudo를 사용하여 다시 시도해 보세요.
기본적으로 shutdown 명령은 모든 프로세스가 완전히 중지되고, 모든 파일 시스템이 동기화되고, 모든 CPU 활동이 중지되도록 합니다. 이것이 ‘중지’ 상태입니다. 그런 다음 하드웨어에 전원을 차단하라는 메시지를 보냅니다. 물론 이것이 종료 또는 ‘전원 끄기’ 상태입니다.
일반적으로 shutdown 명령에 메시지나 시간 문자열과 같은 매개변수를 전달하여 사용자에게 종료를 알립니다. 지금부터 15분 후 종료를 예약해 보겠습니다. shutdown, 공백, +15, 공백을 입력한 다음 사용자에게 보낼 메시지를 입력합니다.
shutdown +15 15분 후 종료됩니다!
여기서 사용한 시간 문자열 +15는 현재 시간으로부터 15분 후를 의미합니다. + 기호는 생략할 수 있습니다. 즉, 15를 입력해도 됩니다.
종료가 예약되었다는 확인 응답을 받고, 종료 시간이 표시됩니다. 로그인한 사용자는 제공된 메시지를 받게 됩니다.
종료를 취소하려면 -c(취소) 옵션을 사용하세요.
shutdown -c
종료 취소 알림은 받지 못했지만, 로그인한 사용자에게 알림이 전송됩니다.
시간 문자열을 제공하지 않으면 1분 후 종료가 예약됩니다. 시간 문자열을 지정하지 않으면 로그인한 사용자에게 메시지를 보낼 수 없습니다.
shutdown
1분도 기다릴 수 없다면 현재 시간을 시간 문자열로 사용할 수 있습니다. 종료가 즉시 실행됩니다. 즉, +0을 사용하는 것과 같습니다.
시간 문자열은 23:00과 같이 특정 시간이 될 수도 있습니다. HH:MM 형식을 따라야 하며 24시간제로 표시해야 합니다. 시스템 종료 5분 전부터 새로운 로그인이 방지됩니다.
기본적으로 종료 동작은 컴퓨터를 중지 상태로 만든 다음 전원을 끄는 것입니다. 명령줄 옵션을 전달하여 이 동작을 변경할 수 있습니다.
-H(중지) 옵션은 컴퓨터를 중지 상태로 만들지만 하드웨어에 전원을 끄도록 요청하지 않습니다.
-P(전원 끄기)는 기본 동작입니다. 컴퓨터가 중지 상태로 전환된 다음 전원이 꺼집니다.
-r(재부팅) 옵션은 컴퓨터를 중지 상태로 만든 다음 재시작합니다.
-h(중지 및 전원 끄기) 옵션은 -P와 같습니다. -h와 -H를 함께 사용하는 경우 -H 옵션이 우선합니다.
-c(취소) 옵션은 예약된 종료, 중지 또는 재부팅을 취소합니다.
다음은 08:20에 재부팅을 예약하는 예시입니다.
shutdown -r 08:20 08:20에 시스템을 재부팅합니다
재부팅, 중지 및 전원 끄기 명령
이러한 명령은 이름에서 알 수 있듯이 해당 작업을 수행합니다. 하지만 각각의 명령은 명령줄 옵션을 받아들여 재부팅, 중지 또는 전원 끄기를 수행합니다. 이 모든 것이 왜 혼란스러울까요? 이러한 명령은 액면 그대로 사용하는 것이 좋습니다.
지금 재부팅하려면 reboot를 사용하고, 지금 전원을 끄려면 poweroff를 사용하고, 시스템을 지금 중지하려면 halt를 사용하세요.
reboot
halt
poweroff
이러한 명령은 즉시 실행됩니다. 명령이 거부되면 sudo를 앞에 붙이세요. 하지만 일반적으로 이러한 명령이 거부되는 이유는 시스템에 로그인한 다른 사용자가 있기 때문입니다.
어떤 명령어가 적합할까요?
다중 사용자 환경에서는 종료 명령을 사용하면 이러한 작업을 보다 세밀하게 제어할 수 있습니다. 종료 및 재부팅을 예약하고 사용자에게 메시지를 브로드캐스트로 경고하는 기능은 이러한 상황에서 매우 중요합니다. 단일 사용자 컴퓨터에서는 reboot와 poweroff 명령으로도 충분할 수 있습니다.