Linux #25 : Shutdown Command의 Risk를 줄이는 방법

Linux를 운영하다 보면 Shutdown을 해야 하는 경우가 있고 별 생각없이 shutdown -h now를 날리는 경우가 많이 있습니다. 아차하고 생각하는 찰나에 Console 창을 잘 못 골라 다른 서버이구나 싶으면 정말 울고 싶겠죠.

이런 상황을 일단 만들지 않도록 Double-Check을 하는게 굉장히 중요하지만, 사람이라는게 실수를 하는지라 좋은 Command 습관을 기른다면 이런 상황을 좀 더 여유롭게 대처 할 수 있겠지요.

일단 Shutdown Command는 Root에서만 가능하므로 Root를 획득해야 하는 건 당연한데 일반 User Account로 Shutdown 날리는 모습은 다른 사람들에게 보여주지는 맙시다. 🙂
그럼, shutdown -h now에서 해방이 되기 위해서는 now를 추가하는 습관을 과감히 버려야 합니다. 당장 Shutdown을 하고 싶겠지만, High Priority Server 일 수록 계획적이고 여유를 가지고 Shutdown을 날리는게 좋겠지요. Now 대신 아래와 같이 Time을 지정합니다.

# shutdown -h +15
or
# shutdown -h 0:15

Guide)
[hour:min] : 시간과 분은 2 Digits의 수치를 지정 할 수 있습니다. 예를 들어서 지금부터 1시간 30분후에 Shutdown 하고 싶으면 "shutdown -h 01:15"라고 입력하면 됩니다.
[+min] : 지정한 몇분 이후에 Shutdown이 되겠지요. 앞에서 설명 했던 것 처럼 15분의 경우 "shutdown -h +15" 입니다.

이렇게 하면 15분 후에 Shutdown이 시작되게 되고 혹시 잘 못 날린 Shutdown Command라면 대처할 시간적인 여유를 갖게 되겠지요.

이제, 이런 Shutdown까지 시간적인 여유가 생긴 상황에서 혹시 무언가 문제가 있다는 것을 발견하고 Shutdown을 중지 할 수 있는 기회가 있고, 충분한 시간적인 여유가 있다면 High Priority Server이면 일수록 행복한 상황일 것입니다.

그럼, Shutdown을 어떻게 중지 시켜야 할까요?
Shutdown이라고 하는게 shutdown command에 의해서 활성화가 됨으로 “shutdown -h +15″와 같이 Command를 날리고 15분이 지나기 전까지는 이 Command만 활성화 되어 있겠죠.
결과적으로 Shutdown command를 kill command로 내리면 됩니다.

"ps ax"라는 command로 process를 확인 하면 "shutdown -h +15"를 보실 수 있지요.
# ps ax
PID TT STAT TIME COMMAND
...
1745 ?? S<s 0:00.00 shutdown -h +15
1749 p0 R+ 0:00.00 ps ax
...

# ps ax | grep shutdown | sed -e 's/^ * //' | cut -d ' ' -f 1
이 Command의 목적은 PID 값을 호출하는 것이고, 즉 Kill과 같이 사용하면

# kill `ps ax | grep shutdown | sed -e 's/^ * //' | cut -d ' ' -f 1`
Kill [PID]가 실행 된 이후

# ps ax | grep shutdown

으로 "shutdown -h +15" Command가 정상적으로 Killed 되었는지를 확인 하시면 됩니다.

추가로, “wall” command로 Shutdown 전 Login하고 있는 모든 User에게 Message를 보내거나, 사전에 /etc/motd를 수정해서 여기서 motd는 Message of the day라는 건 아시죠.
사전에 Shutdown Schedule을 공유 하는 것도 System Operation에 좋은 배려라고 볼 수 있습니다.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.