Linux의 shutdown 명령의 -h 옵션에 대한 유감

by

리눅스를 서버로 쓰면 shutdown 명령을 쓸 일이 별로 없지만, 데스크탑으로 쓰고 또 자주 쓰기에 이 명령을 밥 먹듯 씁니다.

리눅스는 BSD 유닉스의 특성과 System V 유닉스의 특성을 섞어서 갖고 있는 것을 보게 되는데, 그 중엔 잘 섞이지 않아 어색한 것도 있습니다.

shutdown이 바로 그런 놈입니다. BSD는 rc 명령과 2개의 모드(single mode와 multi user mode)를 갖고 있습니다. 종료를 할 때엔 shutdow -h, 재시동을 할 때엔 shutdown -r 옵션을 쓰지요. 각각 halt와 reboot의 첫 글자를 땄습니다.

System V는 init 명령과 7개의 run level(0~6까지)을 갖고 있습니다. 종료를 하거나 재시동을 하는 것 등을 run level의 전환으로 처리합니다. 종료는 level 0으로, 재시동은 level 6으로 전환 하는 것입니다. shutdown에 -i 옵션을 쓰지요. shutdown -i 0, shutdown -i 6처럼요.

리눅스는 init과 run level을 넣은 배포판이 대부분이었습니다. 예전엔 슬랙웨어만 run level 개념이 없는 배포판이었습니다. 지금에 와서는 그렇지 않은 것도 많고 변종이 많아졌지만요. 아무튼, init 명령과 run level은 System V스러운 것입니다. 그런데 shutdown -h는 BSD스러운 것이지요.

이 점에서 유감입니다. 리눅스에서 run level을 바꾸겠다면 shutdown 명령이 아니라 telinit 명령을 써야합니다. 이 명령이 System V에도 있긴하지만, 아무튼요.

참고로, rc는 run command의 줄임말입니다. rc가 도대체 뭘까 한참을 찾다가 별것 아닌 줄임말인 걸 알고 허탈했던 기억이 있습니다.

또 참고로, System V 유닉스의 /usr/ucb 디렉토리에 가면 -h 옵션을 쓸 수 있는 shutdown이 있습니다. 예를 들면 Solaris. 어쩌다 그렇게 된거냐면... SUN사는 System V 유닉스인 Solaris를 만들었습니다. 그 전에는 BSD 유닉스였던 Sun OS(버전 4까지는)를 만들었죠. 그 BSD를 만든게 SUN의 Bill Joy, 대학시절의 그 사람이죠. vi를 만든 것도 그 사람이고요. SUN과 AT&T는 System V Release 3(SVR3)에 BSD를 합쳐 다음 버전을 만듭니다. 그게 System V Release 4(SVR4)이지요. 그리고 System V인 Sun OS 5가 나옵니다. 이게 이후에 Solaris로 변하게 되고요. 그러다보니 호환을 위해 compatibility binary를 넣어둔 것이지요.

이야기가 긴데... 사실 이젠 별로 중요하진 않습니다. 다 부질 없는 이야기죠. 요즘 System V는 run level 1, 2만 쓰도록 권합니다. BSD의 두 모드와 다를 바 없죠. 뭐, 그런거죠.

00-58-20-as500a.jpg

http://weblog.youre.space//vergence/2015/08/000157.html