노무현 전 대통령 서거 추모글 남기기

협연권은 흡연권에 우선한다. (흡연 금지에 대한 법원 판결문)

About/Day 2012/01/06 17:18
출처 : http://akpil.net/tc/206

-----------------------------------------------------------------------------------------------------------

헌재 2004.08.26, 2003헌마457, 판례집 제16권 2집 상, 355 
 
국민건강증진법시행규칙 제7조 위헌확인 
 
 
(2004. 8. 26. 2003헌마457 전원재판부) 
 
【판시사항】
 
1. 흡연권과 혐연권의 우열 
 
2. 상하의 위계질서가 있는 기본권끼리 충돌하는 경우 제한될 수 있는 기본권 
 
3. 흡연권을 법률로써 제한할 수 있는지 여부(적극) 
 
4. 국민건강증진법시행규칙 제7조가 과잉금지원칙에 위반되는지 여부(소극) 
 
5. 국민건강증진법시행규칙 제7조가 평등원칙에 위반되는지 여부(소극) 
 
【결정요지】
 
1. 흡연권은 사생활의 자유를 실질적 핵으로 하는 것이고 혐연권은 사생활의 자유뿐만 아니라 생명권에까지 연결되는 것이므로 혐연권이 흡연권보다 상위의 기본권이다. 
 
2. 상하의 위계질서가 있는 기본권끼리 충돌하는 경우에는 상위기본권우선의 원칙에 따라 하위기본권이 제한될 수 있으므로, 흡연권은 혐연권을 침해하지 않는 한에서 인정되어야 한다. 
 
3. 흡연은 국민의 건강을 해치고 공기를 오염시켜 환경을 해친다는 점에서 국민 공동의 공공복리에 관계되므로, 공공복리를 위하여 개인의 자유와 권리를 제한할 수 있도록 한 헌법 제37조 제2항에 따라 흡연행위를 법률로써 제한할 수 있다. 
 
4. 금연구역의 지정에 관하여 규정하고 있는 국민건강증진법시행규칙 제7조는 국민의 건강을 보호하기 위한 것으로서 목적의 정당성을 인정할 수 있고, 일정한 내용의 금연구역을 설정하는 방법의 적정성도 인정할 수 있으며, 달성하려는 공익이 제한되는 사익보다 커 법익균형성도 인정되고, 금연구역 지정의 대상과 요건을 고려할 때 
 
- 355 - 
 
 
최소침해성도 인정되므로, 과잉금지원칙에 위반되지 아니한다. 
 
5. 국민건강증진법시행규칙 제7조는 흡연자들의 권리를 보다 제한하고 있으나, 국민의 건강과 혐연권을 보장하기 위하여 흡연권을 제한하는 것으로서 차별에 합리적인 이유가 있으므로 평등원칙에 위반되지 아니한다. 
 
【심판대상조문】
 
국민건강증진법시행규칙 제7조(금연구역의 지정기준 및 방법) ① 공중이용시설 중 청소년ㆍ환자 또는 어린이에게 흡연으로 인한 피해가 발생할 수 있는 다음 각 호의 시설 소유자 등은 당해 시설의 전체를 금연구역으로 지정하여야 한다. 
 
1. 제6조 제6호의 규정에 의한 학교 중 초ㆍ중등교육법 제2조의 규정에 의한 학교의 교사 
 
2. 제6조 제8호의 규정에 의한 의료기관, 보건소ㆍ보건의료원ㆍ보건지소 
 
3. 제6조 제16호의 규정에 의한 보육시설 
 
② 제1항의 규정에 의한 시설 외의 공중이용시설의 소유자 등은 당해 시설 중 이용자에게 흡연의 피해를 줄 수 있는 다음 각 호에 해당하는 구역을 금연구역으로 지정하여야 한다. 
 
1. 제6조 제1호의 규정에 의한 건축물의 사무실ㆍ회의장ㆍ강당 및 로비 
 
2. 제6조 제2호의 규정에 의한 공연장의 객석, 관람객 대기실 및 사무실 
 
3. 제6조 제3호의 규정에 의한 학원의 강의실, 학생 대기실 및 휴게실 
 
4. 제6조 제4호의 규정에 의한 지하도에 있는 상점가 중 상품의 판매에 제공되는 매장 및 통로 
 
5. 제6조 제5호의 규정에 의한 관광숙박업소의 현관 및 로비 
 
6. 제6조 제6호의 규정에 의한 학교 중 고등교육법 제2조의 규정에 의한 학교의 강의실, 휴게실, 강당, 구내식당 및 회의장 
 
7. 제6조 제7호의 규정에 의한 체육시설의 관람석 및 통로 
 
8. 제6조 제9호의 규정에 의한 사회복지시설의 거실, 작업실, 휴게실, 식당 및 사무실 
 
9. 제6조 제10호의 규정에 의한 교통관련시설 및 교통수단 중 공항ㆍ여객선터미널ㆍ역사 등의 승객 대기실 및 승강장, 국내선항공기, 선실, 철도의 차량내부 및 통로, 전철의 지하역사ㆍ승강장 및 차량, 지하보도 및 16인승 이상의 승합자동차 
 
10. 제6조 제11호의 규정에 의한 목욕장의 탈의실 및 목욕탕 내부 
 
11. 제6조 제12호의 규정에 의한 게임 및 멀티미디어문화컨텐츠설비제공업소의 영업장 내부 중 2분의 1 이상의 구역 
 
12. 제6조 제13호의 규정에 의한 휴게음식점 및 일반음식점영업소의 영업장 내부 중 2분의 1 이상의 구역 
 
13. 6조 제14호의 규정에 의한 만화대여업소의 영업장 내부 중 2분의 1 이상의 구역 
 
- 356 - 
 
 
14. 제6조 제15호의 규정에 의한 청사의 사무실 및 민원인 대기실 
 
15. 제1호 내지 제14호의 시설에 설치된 승강기의 내부, 복도, 화장실 그 밖에 다수인이 이용하는 구역 
 
③ 제1항의 규정에 따라 소유자 등이 당해 시설의 전체를 금연구역으로 지정한 경우에는 당해 시설의 전체가 금연구역이라는 사실을 알리는 표지를 설치 또는 부착하여야 한다. 
 
④ 제2항의 규정에 따라 소유자 등이 당해 시설을 금연구역과 흡연구역으로 구분하여 지정한 경우에는 금연구역 또는 흡연구역으로 지정된 장소에 이를 알리는 표지를 설치 또는 부착하여야 한다. 
 
⑤ 제3항 및 제4항의 규정에 의한 금연구역과 흡연구역의 표시 및 흡연구역의 시설기준은 별표 3과 같다. 
 
【참조조문】
 
헌법 제10조, 제11조 제1항, 제17조, 제36조 제3항, 제37조 제2항 
 
【당 사 자】
 
청 구 인 허선강 
 
국선대리인 변호사 이상원 
 
【주  문】
 
청구인의 심판청구를 기각한다. 
 
【이  유】
 
1. 사건의 개요 및 심판의 대상
 
가. 사건의 개요
 
(1) 국민건강증진법 제9조 제6항, 제4항은 공중이 이용하는 시설 중 시설의 소유자ㆍ점유자 또는 관리자(이하 위 소유자ㆍ점유자ㆍ관리자를 통칭하여 ‘시설관리자’라고 한다)가 당해 시설의 전체를 금연구역으로 지정하거나 당해 시설을 금연구역과 흡연구역으로 구분하여 지정하여야 하는 시설을 보건복지부령에 의하여 정하도록 규정하고 있고, 이에 기하여 보건복지부령인 국민건강증진법시행규칙 제7조는 각 해당시설을 구체적으로 규정하고 있으며, 국민건강증진법 제9조 제5항은 시설이용자가 이와 같이 지정된 금역구역에서 흡연하는 것을 금지하고 있다. 
 
(2) 청구인은 2003. 7. 11. 국민건강증진법시행규칙 제7조가 청구인의 기본 
 
- 357 - 
 
 
권을 침해한다는 이유로 위 조문이 위헌임을 확인하여 달라는 이 사건 심판청구를 하였다. 
 
나. 심판의 대상
 
이 사건 심판의 대상은 국민건강증진법시행규칙 제7조(이하 ‘이 사건 조문’이라 한다)가 헌법에 위반되는지 여부이고, 이 사건 조문의 내용은 다음과 같다. 
 
제7조(금연구역의 지정기준 및 방법) ① 공중이용시설 중 청소년ㆍ환자 또는 어린이에게 흡연으로 인한 피해가 발생할 수 있는 다음 각 호의 시설 소유자 등은 당해 시설의 전체를 금연구역으로 지정하여야 한다. 
 
1. 제6조 제6호의 규정에 의한 학교 중 초ㆍ중등교육법 제2조의 규정에 의한 학교의 교사 
 
2. 제6조 제8호의 규정에 의한 의료기관, 보건소ㆍ보건의료원ㆍ보건지소 
 
3. 제6조 제16호의 규정에 의한 보육시설 
 
② 제1항의 규정에 의한 시설 외의 공중이용시설의 소유자 등은 당해 시설 중 이용자에게 흡연의 피해를 줄 수 있는 다음 각 호에 해당하는 구역을 금연구역으로 지정하여야 한다. 
 
1. 제6조 제1호의 규정에 의한 건축물의 사무실ㆍ회의장ㆍ강당 및 로비 
 
2. 제6조 제2호의 규정에 의한 공연장의 객석, 관람객 대기실 및 사무실 
 
3. 제6조 제3호의 규정에 의한 학원의 강의실, 학생 대기실 및 휴게실 
 
4. 제6조 제4호의 규정에 의한 지하도에 있는 상점가 중 상품의 판매에 제공되는 매장 및 통로 
 
5. 제6조 제5호의 규정에 의한 관광숙박업소의 현관 및 로비 
 
6. 제6조 제6호의 규정에 의한 학교 중 고등교육법 제2조의 규정에 의한 학교의 강의실, 휴게실, 강당, 구내식당 및 회의장 
 
7. 제6조 제7호의 규정에 의한 체육시설의 관람석 및 통로 
 
8. 제6조 제9호의 규정에 의한 사회복지시설의 거실, 작업실, 휴게실, 식당 및 사무실 
 
9. 제6조 제10호의 규정에 의한 교통관련시설 및 교통수단 중 공항ㆍ여객선터미널ㆍ역사 등의 승객 대기실 및 승강장, 국내선항공기, 선실, 철도의 차량내부 및 통로, 전철의 지하역사ㆍ승강장 및 차량, 지하보도 및 16인승 이상의 승합자동차 
 
10. 제6조 제11호의 규정에 의한 목욕장의 탈의실 및 목욕탕 내부 
 
- 358 - 
 
 
11. 제6조 제12호의 규정에 의한 게임 및 멀티미디어문화컨텐츠설비제공업소의 영업장 내부 중 2분의 1 이상의 구역 
 
12. 제6조 제13호의 규정에 의한 휴게음식점 및 일반음식점영업소의 영업장 내부 중 2분의 1 이상의 구역 
 
13. 제6조 제14호의 규정에 의한 만화대여업소의 영업장 내부 중 2분의 1 이상의 구역 
 
14. 제6조 제15호의 규정에 의한 청사의 사무실 및 민원인 대기실 
 
15. 제1호 내지 제14호의 시설에 설치된 승강기의 내부, 복도, 화장실 그 밖에 다수인이 이용하는 구역 
 
③ 제1항의 규정에 따라 소유자 등이 당해 시설의 전체를 금연구역으로 지정한 경우에는 당해 시설의 전체가 금연구역이라는 사실을 알리는 표지를 설치 또는 부착하여야 한다. 
 
④ 제2항의 규정에 따라 소유자 등이 당해 시설을 금연구역과 흡연구역으로 구분하여 지정한 경우에는 금연구역 또는 흡연구역으로 지정된 장소에 이를 알리는 표지를 설치 또는 부착하여야 한다. 
 
⑤ 제3항 및 제4항의 규정에 의한 금연구역과 흡연구역의 표시 및 흡연구역의 시설기준은 별표 3과 같다. 
 
(별표 3 생략) 
 
2. 청구인의 주장 및 관계기관의 의견
 
가. 청구인의 주장
 
흡연은 건강에 해로운 점도 있지만 정신적 스트레스를 해소하여 주고 창의력 신장에 기여하며 국가와 지방자치단체의 재정수입의 중요한 세원이 되는 등 순기능이 많이 있고 오랜 역사와 전통을 지닌 인간생활에 없어서는 안 될 관습인바, 납세를 통하여 국가의 재정에 기여하고 있는 흡연자들을 위하여 흡연구역을 증설하고 편의시설을 제공하는 등 이들의 권익을 옹호하여야 한다. 
 
그런데도 도리어 흡연장소를 제한하고 비흡연자들의 권익만을 위한 이 사건 조문은 헌법 제9조(전통문화의 계승ㆍ발전), 제10조(인간의 존엄과 가치 및 행복추구권), 제12조(신체의 자유), 제17조(사생활의 자유), 제34조 제1항(인간다운 생활권)에 위반된다. 
 
나. 보건복지부장관의 의견
 
담배의 유해성은 이미 과학적으로 입증되었고, 금연정책은 세계적으로 보편화된 정책이다. 이 사건 조문은 간접흡연의 폐해를 방지하여 국민의 건강증 
 
- 359 - 
 
 
진을 도모함을 목적으로 흡연자의 권리를 제한하는 것으로서 공공복리를 위한 합리적인 제한이며, 청구인 주장의 헌법규정에 위반되지 아니한다. 
 
3. 판 단
 
가. 흡연권
 
(1) 흡연권의 헌법적 근거
 
흡연자들이 자유롭게 흡연할 권리를 흡연권이라고 한다면, 이러한 흡연권은 인간의 존엄과 행복추구권을 규정한 헌법 제10조와 사생활의 자유를 규정한 헌법 제17조에 의하여 뒷받침된다. 
 
우선 헌법 제17조가 근거가 될 수 있다는 점에 관하여 보건대, 사생활의 자유란 사회공동체의 일반적인 생활규범의 범위 내에서 사생활을 자유롭게 형성해 나가고 그 설계 및 내용에 대해서 외부로부터의 간섭을 받지 아니할 권리를 말하는바(헌재 2001. 8. 30. 99헌바92, 판례집 13-2, 174, 202), 흡연을 하는 행위는 이와 같은 사생활의 영역에 포함된다고 할 것이므로, 흡연권은 헌법 제17조에서 그 헌법적 근거를 찾을 수 있다. 
 
또 인간으로서의 존엄과 가치를 실현하고 행복을 추구하기 위하여서는 누구나 자유로이 의사를 결정하고 그에 기하여 자율적인 생활을 형성할 수 있어야 하므로, 자유로운 흡연에의 결정 및 흡연행위를 포함하는 흡연권은 헌법 제10조에서도 그 근거를 찾을 수 있다. 
 
(2) 그 밖의 헌법적 근거에 관한 청구인 주장에 관하여
 
(가) 청구인은 이 사건 조문이 위 헌법규정 외에도 헌법 제9조, 제12조, 제34조 제1항에 위반된다고 한다. 
 
(나) 그러나 흡연을 전통문화라고 할 수는 없으므로 헌법 제9조에 의하여 흡연권이 보장된다고 할 수는 없다. 
 
또 헌법 제12조가 규정한 신체의 자유는 적법절차에 의하지 않고는 국가의 공권력으로부터 ‘신체적 완전성’과 ‘신체활동의 임의성’을 제한당하지 않을 권리를 의미하는 것으로서 주로 형사절차에 관한 권리이지 흡연을 할 자유와는 별다른 관련이 없다. 
 
나아가 헌법 제34조 제1항이 보장하는 인간다운 생활권은 자유권적 기본권이 아닌 사회권적 기본권의 일종으로서, 헌법적 권리로서는 인간의 존엄에 상응하는 ‘최소한의 물질적인 생활’의 유지에 필요한 급부를 요구할 수 있는 권리를 의미하므로(헌재 1995. 7. 21. 93헌가14, 판례집 7-2, 1, 30-31 ; 2000. 6. 1. 98헌마216, 판례집 12-1, 622, 646-647 ; 2003. 5. 15. 2002헌마90, 판례집 
 
- 360 - 
 
 
15-1, 581, 600-601 참조), 자유로이 흡연을 할 흡연권은 이에 포섭되지 아니한다. 
 
(다) 그러므로 흡연권에 관련된 이 사건 조문은 헌법 제9조, 제12조, 제34조 제1항과는 무관하고, 따라서 이 점에 관한 청구인의 주장은 더 나아가 살펴볼 필요도 없이 이유 없다. 이하에서는 위 헌법조항을 고려하지 아니하고 판단한다. 
 
나. 흡연권의 제한 가능성
 
(1) 기본권의 충돌
 
위와 같이 흡연자들의 흡연권이 인정되듯이, 비흡연자들에게도 흡연을 하지 아니할 권리 내지 흡연으로부터 자유로울 권리가 인정된다(이하 이를 ‘혐연권’이라고 한다). 
 
혐연권은 흡연권과 마찬가지로 헌법 제17조, 헌법 제10조에서 그 헌법적 근거를 찾을 수 있다. 나아가 흡연이 흡연자는 물론 간접흡연에 노출되는 비흡연자들의 건강과 생명도 위협한다는 면에서 혐연권은 헌법이 보장하는 건강권과 생명권에 기하여서도 인정된다. 
 
흡연자가 비흡연자에게 아무런 영향을 미치지 않는 방법으로 흡연을 하는 경우에는 기본권의 충돌이 일어나지 않는다. 그러나 흡연자와 비흡연자가 함께 생활하는 공간에서의 흡연행위는 필연적으로 흡연자의 기본권과 비흡연자의 기본권이 충돌하는 상황이 초래된다. 
 
그런데 흡연권은 위와 같이 사생활의 자유를 실질적 핵으로 하는 것이고 혐연권은 사생활의 자유뿐만 아니라 생명권에까지 연결되는 것이므로 혐연권이 흡연권보다 상위의 기본권이라 할 수 있다. 이처럼 상하의 위계질서가 있는 기본권끼리 충돌하는 경우에는 상위기본권우선의 원칙에 따라 하위기본권이 제한될 수 있으므로, 결국 흡연권은 혐연권을 침해하지 않는 한에서 인정되어야 한다. 
 
(2) 공공복리를 위한 제한
 
흡연은 비흡연자들 개개인의 기본권을 침해할 뿐만 아니라 흡연자 자신을 포함한 국민의 건강을 해치고 공기를 오염시켜 환경을 해친다는 점에서 개개인의 사익을 넘어서는 국민 공동의 공공복리에 관계된다. 따라서 공공복리를 위하여 개인의 자유와 권리를 제한할 수 있도록 한 헌법 제37조 제2항에 따라 흡연행위를 법률로써 제한할 수 있다. 
 
나아가 국민은 헌법 제36조 제3항이 규정한 보건권에 기하여 국가로 하여 
 
- 361 - 
 
 
금 흡연을 규제하도록 요구할 권리가 있으므로, 흡연에 대한 제한은 국가의 의무라고까지 할 수 있다. 
 
(3) 이 사건 조문의 흡연권 제한
 
이 사건 조문은 위와 같은 근거에서 청구인을 포함한 흡연자의 흡연권을 일정부분 제한하고 있다. 
 
다. 과잉금지원칙의 위반여부
 
입법작용에 의하여 국민의 기본권을 제한함에 있어서는, 국민의 기본권을 제한하려는 입법의 목적이 헌법 및 법률의 체제상 그 정당성이 인정되어야 하고(목적의 정당성), 그 목적의 달성을 위하여 그 방법이 효과적이고 적절하여야 하며(방법의 적정성), 입법권자가 선택한 기본권제한의 조치가 입법목적달성을 위하여 설사 적절하다 할지라도 보다 완화된 형태나 방법을 모색함으로써 기본권의 제한은 필요한 최소한도에 그치도록 하여야 하고(피해의 최소성), 그 입법에 의하여 보호하려는 공익과 침해되는 사익을 비교형량할 때 보호되는 공익이 더 커야한다(법익의 균형성)는 과잉금지원칙 내지 비례원칙이 지켜져야 한다(헌재 1992. 12. 24. 92헌가8, 판례집 4, 853, 878-879 참조). 
 
이 사건 조문은 국민의 건강을 보호하기 위한 것으로서(국민건강증진법 제1조 및 국민건강증진법시행규칙 제1조 참조) 목적의 정당성을 인정할 수 있고, 흡연자와 비흡연자가 생활을 공유하는 곳에서 일정한 내용의 금연구역을 설정하는 것은 위 목적의 달성을 위하여 효과적이고 적절하여 방법의 적정성도 인정할 수 있다. 또한 이 사건 조문으로 달성하려고 하는 공익(국민의 건강)이 제한되는 사익(흡연권)보다 크기 때문에 법익균형성도 인정된다. 
 
나아가 이 사건 조문이 일부 시설에 대하여는 시설 전체를 금연구역으로 지정하도록 하였지만, 이러한 시설은 세포와 신체조직이 아직 성숙하는 단계에 있는 어린이나 청소년들의 경우 담배로 인한 폐해가 심각하다는 점을 고려하여 규정한 보육시설과 초ㆍ중등교육법에 규정된 학교의 교사 및 치료를 위하여 절대적인 안정과 건강한 환경이 요구되는 의료기관, 보건소ㆍ보건의료원ㆍ보건지소에 한하고 있다는 점, 시설의 일부를 금연구역으로 지정하여야 하는 시설도 모두 여러 공중이 회합하는 장소로서 금역구역을 지정할 필요성이 큰 시설이라는 점, 이 사건 조문은 ‘청소년ㆍ환자 또는 어린이에게 흡연으로 인한 피해가 발생할 수 있는 다음 각 호의 시설’ 또는 ‘이용자에게 흡연의 피해를 줄 수 있는 다음 각 호에 해당하는 구역’을 금연구역지정의 요건으로 함으로써, 형식적으로 이 사건 조문의 각 호에 규정된 시설에 해당하더 
 
- 362 - 
 
 
라도 실제로 피해를 주지 않는 곳에서는 금연구역지정의 의무를 부과하지 않고 있는 점 등에 비추어 볼 때, 흡연자들의 흡연권을 최소한도로 침해하고 있다고 할 수 있다. 
 
그렇다면 이 사건 조문은 과잉금지원칙에 위반되지 아니한다. 
 
라. 평등권의 침해여부
 
이 사건 조문이 비흡연자들의 이익을 도모하는 반면 흡연자들의 권리는 제한하고 있어 흡연자들의 평등권을 침해하였다고 할 것인지에 관하여 본다. 
 
헌법 제11조 제1항의 평등의 원칙은 일체의 차별적 대우를 부정하는 절대적 평등을 의미하는 것이 아니라 입법과 법의 적용에 있어서 합리적 근거 없는 차별을 하여서는 아니된다는 상대적 평등을 뜻하고, 따라서 합리적 근거 있는 차별 내지 불평등은 평등의 원칙에 반하는 것이 아니다. 그런데 앞서 본 바와 같이 이 사건 조문은 국민의 건강과 혐연권을 보장하기 위하여 흡연권을 제한하는 것으로서 그 제한에 합리적인 이유가 있다 할 것이므로 평등권을 침해하였다고 할 수 없다. 
 
4. 결 론
 
따라서 이 사건 헌법소원심판청구는 이유없어 이를 기각하기로 하여 관여재판관 전원의 일치된 의견으로 주문과 같이 결정한다. 
 
 
 
 
재판관 윤영철(재판장) 김영일(주심) 권 성 김효종 김경일 
 
주선회 전효숙 이상경

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 라이천령 라이천령

ORACLE 에러코드 한글번역

About/Computer 2011/12/27 17:44
출처 : http://juglae.tistory.com/43

더보기


저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 라이천령 라이천령

[Tip] 여러 파일 특정 패턴 문자열 변경하기.

About/Computer 2011/12/26 10:06
나는 편하게 매우 간단한 방법을 쓴다. (내가 작업하기 복잡하면 귀차나진다.. -.-)

조건)
여러 파일이 있는데, 이파일들의 내용을 보니 특정 패턴만 바꾸면 되는 경우이다.

이럴때 아주 간단하게 변경이 가능하다. (누워서 떡먹기보다도 간단하다)

perl -pi -e "s/co.kr/com/g" *.cfg

위 결과는 무엇을 나타내느냐? 하면
위에서 나타낸 *.cfg 파일들에 대해서 내용중에 co.kr 매치되는것이 있다면, com  으로 변경하라는 내용이다.

얼마나 심플하고 간단한가? 편하지 아니한가?
그렇다면 더 심플한 방법을 알려주셈~ 굽신굽신.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 라이천령 라이천령

[Tip] 여러 파일명을 변경 하기.

About/Computer 2011/12/26 10:00
파일 이름중 중간이름의 패턴을 바꾸고자 할경우가 있다.

이 경우 리눅스에서는 별도로 다중 파일에 대해 동시에 변경하게 해주는 방법이 있는데, 이중에 많이 쓰이는 방법은 rename 이다.

다만, 이 rename 의 경우 여러가지 이슈로 안되는 경우가 생기는데, 이런 경우 아래와 같은 조합으로 변경을 시도하면 된다.

파일리스트가 아래와 같이 있다는 가정.

# ls -al
vaio.pe.kr.cfg
bbs.vaio.pe.kr.cfg
web.vaio.pe.kr.cfg
blog.vaio.pe.kr.cfg
tistory.vaio.pe.kr.cfg

# find ./ -name "*.pe.kr.cfg" | while read filename;do mv -vf $filename `echo $filename | sed 's/pe.kr.cfg/com.cfg/'`; done


# ls -al
vaio.com.cfg
bbs.vaio.com.cfg
web.vaio.com.cfg
blog.vaio.com.cfg
tistory.vaio.com.cfg

자주 쓸일이 있다면, Shell Script 로 만들어서 쓰는 방법도 있을수 있겠다.



저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 라이천령 라이천령

Apache Performance optimization.

About/Computer 2011/12/21 11:37

아파치는 httpd.conf 설정을 기반으로 하여 성능과 안정성 그리고 보안을 각각 구현 정의 할수 있다.

아파치 웹서버를 최상의 상태로 운용하기 위해선 성능을 향상 시킬필요가 있으며, 아파치 설정에 따라 웹서비스의 응답 및 서비스 페이지 노출 성능에 영향을 매우 크게 미친다.


설정 옵션

Timeout

접속된 클라이언트가 서버에 아무런 요청이 없을 때 어느정도 시간이 지나면 연결을 끊을지를 초단위로 설정한다. 네트웍의 성능이 낮을수록 이 수치를 높게 설정하는 것이 좋다.


MaxClients

웹서버 성능에 가장 큰 영향을 주는 것은 메모리다. 방문자의 요청에 응답하기 위해서 프로세스가 생성되는되 이 지시자의 개수만큼만 생성가능하다. 여기서 지정한 개수 이상의 요청이 들어오면 아파치는 요청을 무시한다.

MaxClients 지시어를 조절하여 웹서버가 스왑을 할 정도로 많은 프로세스를 만들지 않도록 해야 한다. 스왑은 요청당 지연시간을 늘리기 때문에 웹서버는 스왑을 하면 안된다. top으로 프로세스 목록을 보고 아파치 프로세스의 평균 메모리 사용량을 알아낸후, 사용가능한 메모리의 양만큼 조절해준다


KeepAlive

아 파치의 한 프로세스가 접속한 클라이언트의 지속적인 요청작업을 계속해서 처리하게 할 것인지를 결정하는 지시자. 이 지시자의 값을 On으로 되어 있어야 MaxKeepAliveRequests , KeepAliveTimeout 지시자가 유효하게 된다


MaxKeepAliveRequests

이 전의 KeepAlive 지시어가 On 일때만 유효하다. KeepAlive 를 이용해서  한 프로세스가 접속한 클라인언트의 이어지는 요청을 모두 처리하도록 설정했는데, 이때 무한정 계속 처리하는것이 아니라 이 지시자를 이용해서 처리할 횟수를 지정해준다. MaxKeepAliveRequests 100 처럼 설정해두면 프로세스가 100번의 요청을 처리한후 자신은 죽고 그다음 프로세스가 다시 클라인언트의 요청을 이어서 처리하도록 하는것이다. 방문자가 많은 홈페이지라면 이 값을 좀 올려두는것이 좋다


KeepAliveTimeout

이전의 KeepAlive 지시어가 On 일때만 유효하다. KeepAlive 를 사용한다면 프로세스들은 이미 열린 연결에서 추가 요청을 기다리며 대기중이다.

KeepAliveTimeout 15 처럼 설정해두면 클라이언트가 15초동안 아무요청이 없으면 프로세스의 연결을 끊는다. 이 값을 60 초 이상으로 올리면 사용자의 요청을 기다리며 아무일을 하지않는 프로세스가 60초동안 떠있게 되는것이다. 자신의 네트웍대역과 부하에 따라 적절히 조절하자. 기본값 15 로도 무방하다


StartServers

아파치 시작시에 실행시킬 프로세스의 개수. 뒤에나오는 MinSpareServers, MaxSpareServers 등의 지시자에 의해서 프로세스는 생성되기도 하고 죽기도 하므로 큰 의미를 가지는것은 아니다.


MinSpareServers

항상 대기하고 있을 프로세스의 최소개수. 여기서 지정한 숫자보다 적은 프로세스가 대기되어 있다면 아파치는 가능한 이 숫자를 유지하기위해 노력한다.


MaxSpareServers

항상 대기하고 있을 프로세스의 최대개수. 여기서 지정한 숫자보다 많은 프로세스가 대기되어 있다면 아파치는 가능한 이 숫자를 유지하기위해 노력한다.


MaxRequestsPerChild

하나의 프로세스당 최대 처리할 수 있는 방문자의 요청횟수

서버사양이 좋다면 이 값을 높여 두는것이 시스템의 부하조절과 자원낭비를 방지하는데 좋다.


HostnameLookups

웹서버의 로그(access_log)에 보면 클라이언트의 IP가 기록되어있는데 이 지시자를 On으로 설정하면 IP주소를 도메인명으로 기록하기위해서 노력을 하게된다.

아파치 1.3 이전에 HostnameLookups의 기본값은 On이였다.

이말은 접속을 요청하면 DNS를 검색해서 접속자의 호스트명을 알아내어야 한다는것이다,. 아파치 1.3에서 이 설정의 기본값이 Off로 변경되었다.

아파치의 성능을 생각한다면 반드시 Off 로 설정하기 바란다.

만일 로그파일의 주소를 호스트명으로 변환할 필요가 있다면 아파치에 포함된 logresolve 프로그램을 사용해서 나중에 할수있으니 실제 사용하는 웹서버가 아닌 다른 컴퓨터에서 로그파일을 후처리하길 바란다.


다른 설정에서 DNS 질의 고려

Allow from domain이나 Deny from domain 지시어를 사용한다면 (즉, IP 주소가 아닌 호스트명이나 도메인명을 사용한다면) 부득이 중복-역 DNS 검색을 (역검색을 한후 악의로 변경되었는지 확인하기위해 다시 검색) 해야 한다. 그러므로 성능을 높이기 위해 이런 지시어에는 가능하면 이름대신 IP 주소를 사용하자


FollowSymLinks와 SymLinksIfOwnerMatch

가능하면 심볼릭링크를 허용하지 않는것이 보안상 좋다. 하지만 꼭 써야한다면 Options SymLinksIfOwnerMatch 보다는 Options FollowSymLinks를 사용하라

Options SymLinksIfOwnerMatch 일 경우 아파치는 심볼릭 링크를 검사하기위해 시스템호출을 한번 더 해야 한다. 좋은 성능을 얻으려면 SymLinksIfOwnerMatch는 피하자


AllowOverride

AllowOverride 는 이전에 설정된 아파치 환경설정을 무시하고 새로운 설정을 적용하는 방법에 대한 설정이다. AccessFileName 을 별도로 설정하지 않았다면 아파치는 .htaccess 파일을 디렉토리 접근인증에 사용한다.

설정할수 있는 지시자는 다음과 같다.

AuthConfig 

AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require 등과 같은 클라이언트 인증지시자의 사용을 허용.

FileInfo

AccessFileName 으로 지정한 파일에 대하여 AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority 등과같은 문서유형을 제어하는 지시자 사용을 허용

Indexes

AccessFileName 으로 지정한 파일에 대하여 AddDescription, AddIcon, AddIconByEncoding, DirectoryIndex, FancyIndexing 등과같은 디렉토리 인덱싱을 제어하는 지시자 사용을 허용

Limit

AccessFileName 으로 지정한 파일에 대하여 allow, deny, order 같은 호스트접근을 제어하는 지시자사용을 허용

Options

AccessFileName 으로 지정한 파일에 대하여 Options 지시자를 이용한 재설정을 허용

All

위에서 이야기한 모든 것을 허용

None

AccessFileName 으로 지정한 파일을 무시. 어떠한 설정도 재설정 할수 없다.


만일 overrides를 허용한다면 아파치는 파일명의 각 부분마다 AccessFileName 으로 지정한 파일(대부분 .htaccess)을 열길 시도한다. 예를 들어 설정은 아래와 같고,


DocumentRoot /www/htdocs

<Directory />

AllowOverride all

</Directory>


/index.html URI에 대한 요청이 있다고 가정하자.

아파치는 /.htaccess, /www/.htaccess, /www/htdocs/.htaccess를 매번 열려고 시도한다.

최고의 성능을 얻으려면 항상 AllowOverride None을 사용하자.

그래야 아파치는 각 디렉토리별 .htaccess 를 reading 시도하는 thread fork 가 줄어 들어 대량의 서비스에선 매우 큰 영향을 미친다.


EnableMMAP

kernel에서 메모리매핑(mmap)을 지원한다면 아파치가 웹문서를 로딩하기 위하여 내부문서를 읽을때에 파일을 메모리 매핑하여 처리한다. 따라서 아파치의 성능이 크게 향상될수 있다.

그러나 메모리대응이 서버의 성능을 떨어트리고 심지어 안정성을 해치는 경우가 있고 smp Solaris 서버에서 아파치 2.0은 종종 mmap을 사용하지 않을때가 더 빠르다. 또한 NFS 마운트한 파일시스템에 있는 파일을 메모리 대응하는 도중에 다른 NFS 클라이언트에 있는 프로세스가 파일을 지우거나 파일크기를 줄이면, 웹서버 프로세스가 다음 번에 메모리대응한 파일내용을 읽을때 bus error가 발생할 수 있다.

위의 조건에 해당하면 전송하는 파일을 메모리대응하지 않도록 EnableMMAP off를 사용해야 한다.


EnableSendfile

아 파치는 운영체제가 sendfile을 지원하면 커널 sendfile을 사용하여 정적 파일을 서비스하는 경우 전송할 파일을 직접 읽지않을 수 있다. sendfile을 사용하면 read와 send를 따로 할 필요가 없어서 매우 빨라진다.

그러나 sendfile을 사용하면 웹서버의 안정성을 해치게되는 경우가 있고, 커널은 자신의 캐쉬를 사용하여 NFS로 마운트한 파일을 안정적으로 서비스할 수 없는 경우가 있으므로

EnableSendfile off를 사용해서 파일을 sendfile 전송하지 않도록 할수 있다.

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 라이천령 라이천령

Apache Error code

About/Computer 2011/12/21 11:28
아파치 에러 코드
HTTP 1.1 status codes [TOP]

100 : Continue
101 : Switching protocols
200 : OK, 에러없이 전송 성공
201 : Created, POST 명령 실행 및 성공
202 : Accepted, 서버가 클라이언트 명령을 받음
203 : Non-authoritative information, 서버가 클라이언트 요구 중 일부만 전송
204 : No content, 클라언트 요구을 처리했으나 전송할 데이터가 없음
205 : Reset content
206 : Partial content
300 : Multiple choices, 최근에 옮겨진 데이터를 요청
301 : Moved permanently, 요구한 데이터를 변경된 임시 URL에서 찾았음
302 : Moved temporarily, 요구한 데이터가 변경된 URL에 있음을 명시
303 : See other, 요구한 데이터를 변경하지 않았기 때문에 문제가 있음
304 : Not modified
305 : Use proxy
400 : Bad request, 클라이언트의 잘못된 요청으로 처리할 수 없음
401 : Unauthorized, 클라이언트의 인증 실패
402 : Payment required, 예약됨
403 : Forbidden, 접근이 거부된 문서를 요청함
404 : Not found, 문서를 찾을 수 없음
405 : Method not allowed, 리소스를 허용안함
406 : Not acceptable, 허용할 수 없음
407 : Proxy authentication required, 프록시 인증 필요
408 : Request timeout, 요청시간이 지남
409 : Conflict
410 : Gone, 영구적으로 사용할 수 없음
411 : Length required
412 : Precondition failed, 전체조건 실패
413 : Request entity too large,
414 : Request-URI too long, URL이 너무 김
415 : Unsupported media type
500 : Internal server error, 내부서버 오류(잘못된 스크립트 실행시)
501 : Not implemented, 클라이언트에서 서버가 수행할 수 없는 행동을 요구함
502 : Bad gateway, 서버의 과부하 상태
503 : Service unavailable, 외부 서비스가 죽었거나 현재 멈춤 상태
504 : Gateway timeout
505 : HTTP version not supported
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License

'About > Computer' 카테고리의 다른 글

[Tip] 여러 파일명을 변경 하기.  (0) 2011/12/26
Apache Performance optimization.  (0) 2011/12/21
Apache Error code  (0) 2011/12/21
Apache 에서 가상 부하 테스트.  (0) 2011/12/21
tpmC (Transcation Processing Perfomance Council)  (0) 2011/12/16
Linux Magic SysRq Key Setting  (0) 2011/11/22
posted by 라이천령 라이천령

Apache 에서 가상 부하 테스트.

About/Computer 2011/12/21 11:15

apache 에서 간단한 부하 테스트 방법.

TEST. 100명의 유저가 1500번의 호출을 동시에 실시

[11:04:29][root@BlackSky ~]
# ab -n 1500 -c 100 http://호스트네임/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 호스트네임 (be patient)
Completed 150 requests
Completed 300 requests
Completed 450 requests
Completed 600 requests
Completed 750 requests
Completed 900 requests
Completed 1050 requests
Completed 1200 requests
Completed 1350 requests
Completed 1500 requests
Finished 1500 requests


Server Software:        Apache
Server Hostname:        호스트네임
Server Port:            80

Document Path:          /
Document Length:        0 bytes

Concurrency Level:      100
Time taken for tests:   0.983 seconds
Complete requests:      1500
Failed requests:        0
Write errors:           0
Total transferred:      353400 bytes
HTML transferred:       0 bytes
Requests per second:    1525.36 [#/sec] (mean)
Time per request:       65.558 [ms] (mean)
Time per request:       0.656 [ms] (mean, across all concurrent requests)
Transfer rate:          350.95 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        5   32  23.3     26     132
Processing:    18   32  20.1     27     132
Waiting:        3   28  16.8     25     128
Total:         41   64  40.9     52     255

Percentage of the requests served within a certain time (ms)
  50%     52
  66%     52
  75%     52
  80%     52
  90%     85
  95%    149
  98%    250
  99%    253
 100%    255 (longest request)

ab 의 측정결과에서 다음과 같은 내용을 분석할수 있다.

Server Software

아파치버전을 표시

Server Hostname

특정사이트의 이름(도메인명)

Server Port

웹서비스 사용포트번호

Document Path

초기 문서가 준재하는 웹문서 root위치

Time take for tests

응답시간(매우 중요한 결과 값임)

Document Length

초기문서(대부분 index.html, index.htm)의 용량크기

Complete requests

요구에 응답완료한 세션수

Failed requests

요구에 응답실패한 세션수

Broken pipe errors

실패한 에러수

Total transferred

총 전송바이트수

HTTP transferred

총 전송한 HTML바이트수

Requests per second

초당응답요구수

Time per request

요구에 응답한 시간(단위 micro second, 중요한 결과값)

Time per request

요구에 응답한 시간

Transfer rate

초당전송가능한 용량

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License

'About > Computer' 카테고리의 다른 글

Apache Performance optimization.  (0) 2011/12/21
Apache Error code  (0) 2011/12/21
Apache 에서 가상 부하 테스트.  (0) 2011/12/21
tpmC (Transcation Processing Perfomance Council)  (0) 2011/12/16
Linux Magic SysRq Key Setting  (0) 2011/11/22
[번역] 안드로이드의 고아들.  (2) 2011/11/02
posted by 라이천령 라이천령

tpmC (Transcation Processing Perfomance Council)

About/Computer 2011/12/16 08:54
TPC(Transaction Processing Performance Council, http://www.tpc.org) 에서 TPC-C 벤치마크 시나리오에 대한 1분당 최대처리건수를 나타내는 수치로써, DB기반 OLTP 미들웨어 시스템 서비스를 위한 H/W의 성능을 측정하는 대표적인 방법.

최근 들어 각 벤더들은 tpmC수치를 제시하지 않는 추세이며, 각자 고유한 수치의 성능자료를 제시함.

예를 들어 IBM pSeries의 경우 rPerf값을 사용함.

 

TPC는 Transcation Processing Perfomance Council(www.tpc.org)이라는 기관에서는 TPM(Transaction per munitue)라는 수치를 발표함.
 
TPC-A와 B는 1989년경 발표되었는데, 흔히 ATM이라고 부르는 은행의 무인단말기를 대상으로 실시된 벤치마크이고,
1994년, 거의 모든 데이터베이스 시스템들이 TPC-A/B를 충족하자, TPC-C로 대체되었음.
 
TPC-C 벤치마크는 너무 단순한 A/B에 비해 복잡해졌으며,
TPC-C는 양판점(wholesale supplier)의 거래를 대상으로 만든 벤치마크 모델로 다음과 같은 데이터베이스를 사용함.
 
* Data Base
 Table name
Size of Table per Warehouse
 WareHouse 0.089K
 District  0.95K
 Customer  19.65K
 History  1.38K
 Order  720K
 New-Order  72K
 Order-Line  16.2M
 Stock  306M
 Item  8.2M
 
* 다섯가지 트랜잭션의 종류가 존재함.
New Order, Payment, Order-Status, Delivery, Stock-Level
 

트랜잭션의 속도 메트릭스는 신규주문(New-Order)트랜잭션의 분당 처리수로 표시되는 (tpmC)로 결과가 발표됩니다.
 
※ tpmC = 동시사용자수×분당 트랜잭션(사용자수×트랜잭션 복잡도(50%))+인터페이스(가중치%)×네트워크 보정(30%)×피크 타임 보정(50%)×I/O 부하(20%)×년간 업무증가 및 여유율(연 20%)
※ 메모리 용량 = {(OS 커널(100M)+[ SGA() ]+사용자수×5MB)+[Webserver()]+인터페이스(가중치%) }+여유율(30%)
 
tpm과 tpmC의 차이점
1. tpm은 각 vendor에서 내부적(비공식)으로 estimate한 값.
2. tpmC는 TPC라는 벤치마킹업체에서 공식적으로 test한 값.
   여기서 C는 벤치마킹업체에서 on-line transaction processing (OLTP) benchmark에 근거한 값을 말한다고 함.
따라서 모든 기종의 tpmC자료는 없고, 벤치마킹 업체가 test한 일부 high-end 서버의 값이 공식적으로 tpc.org 라는 사이트에 등록되어 있으며, 이는 다른 vendor 도 마찬가지라고 함.

 
tpmC기반의 용량 산정 

TpmC기반의 CPU 용량산정 방법으로 tpmC에 영향을 주는 동시 사용자 수, 트랙재션 수,기본 TPC 보정, 피크시,여유율 등 보정 계수 및 적용범위를 제시하고 있으며, CPU용량 산정식은 아래와 같다.

CPU 용량(tpmC)=동시 사용자 수 *트랙잭션 수 * 기본 TPC보정치 * Peak Time 보정치 * CPU 부하 보정치 
                      * 응용프로그램 복잡도 보정치 * 네트워크 보정치 * 클러스터 보정치 * 여유율 보정치

            
메모리 용량(MB)={OS 및 기본 영역 + 프로세스 수 * 응용 프로그램 장치} 
                         * 버퍼 캐쉬 보정치 * 클러스터 보정치 * 여유율 보정치        
            
디스크 용량 산정 방법은 시스템 기본 영역, S/W 영역, DB영역, SWAP영역, 
                        여유율 등 보정계수 및 적용범위를 제시하고 있으며, 아울러 다음과 같은 디스크 용량산정 식을 제시하고 있다.

 

내장디스크 용량(MB) = {시스템 OS영역 + 응용프로그램 영역 + 상용 소프트웨어 영역}
                                * SWAP영역 * 여유율 보정치        

 

외장디스크 용량 ={DB여역 + 백업영역} * RAID영역 * 여유율 보정치



참고 사이트 : 
TPC               http://www.tpc.org   http://www.tpc.org/tpcc/detail.asp
Linpack           http://www.netlib.no/netlib/benchmark/performance.ps 
Pro/E             http://www.proe.com 
SPEC              http://www.spec.org 
GPC               http://www.spec.org/gpc 
NotesBench Mail   http://www.notesbench.org 
VolanoMark        http://www.volano.com 
STREAM            http://www.cs.virginia.edu/stream/

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License

'About > Computer' 카테고리의 다른 글

Apache Error code  (0) 2011/12/21
Apache 에서 가상 부하 테스트.  (0) 2011/12/21
tpmC (Transcation Processing Perfomance Council)  (0) 2011/12/16
Linux Magic SysRq Key Setting  (0) 2011/11/22
[번역] 안드로이드의 고아들.  (2) 2011/11/02
vmstat 사용법  (0) 2011/03/04
posted by 라이천령 라이천령

FTA 강행처리 - 그대들을 잊지 않겠다.

About/Day 2011/12/07 10:19
FTA 비준은 비공개로 기록도 없이 처리한건 자국법을 무시하고 국민들의 대표라는 국회의원들이 앞장서서 국가를 팔아먹은것이다.
일부의 어르신들은 위에 계신분들이알아서 어련히 잘했을까? 또는 미국이 얼마나 도와줬는데 이정도는 해줘야지. 라는 얘기들을 하시는데, 그것과 이것은 매우 틀린것이다.
이건 제2의 을사조약과 틀린게 없기 때문이다.

김구선생이 왜 친일파 놈들에게 암살 당했나. 그리고 왜 친일파가 아직도 기득권을 잡고 놓지 않는가?

http://www.google.co.kr/search?q=%EB%B9%84%EA%B3%B5%EA%B0%9C+%EB%B9%84%EC%A4%80+%EC%B2%98%EB%A6%AC+%EB%B2%95%EC%A0%81&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ko:official&client=firefox-a#sclient=psy-ab&hl=ko&newwindow=1&client=firefox-a&rls=org.mozilla:ko%3Aofficial&source=hp&q=%EB%B9%84%EA%B3%B5%EA%B0%9C+FTA+%EB%B9%84%EC%A4%80+%EC%B2%98%EB%A6%AC&pbx=1&oq=%EB%B9%84%EA%B3%B5%EA%B0%9C+FTA+%EB%B9%84%EC%A4%80+%EC%B2%98%EB%A6%AC&aq=f&aqi=&aql=&gs_sm=se&gs_upl=350913l355069l0l355505l12l10l2l0l0l8l1595l5937l3-3.0.4.1.0.1l11l0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=e15bbe1ad59a6f82&biw=1565&bih=852

내년 총선에서 최소한 이들은 꼬옥 재선 못하게 해야 된다.


============ 서울시 ==============================
박진(종로구), 진영(용산구), 진수희(성동구갑), 김동성(성동구을), 권택기(광진구갑), 장광근(동대문구갑), 홍준표(동대문구을), 유정현(중랑구갑), 진성호(중랑구을), 정태근(성북구갑), 정양석(강북구갑), 신지호(도봉구갑), 김선동(도봉구을), 권영진(노원구을), 홍정욱(노원구병), 이재오(은평구을), 이성헌(서대문구갑), 정두언(서대문구을), 강승규(마포구갑), 원희룡(양천구갑), 김용태(양천구을), 구상찬(강서구갑), 김성태(강서구을), 이범래(구로구갑), 안형환(금천구), 전여옥(영등포구갑), 권영세(영등포구을), 정몽준(동작구을), 김성식(관악구갑), 이혜훈(서초구갑), 고승덕(서초구을), 이종구(강남구갑), 박영아(송파구갑), 유일호(송파구을), 김충환(강동구갑), 윤석용(강동구을)
============ 경기도 ==============================
정미경(수원시권선구), 남경필(수원시팔달구), 신영수(성남시수정구), 신상진(성남시중원구), 고흥길(성남시분당구갑), 심재철(안양시동안구을), 임해규(부천시원미구갑), 이사철(부천시원미구을), 차명진(부천시소사구), 전재희(광명시을), 원유철(평택시갑), 김성수(양주시/동두천시), 이화수(안산시상록구갑), 박순자(안산시단원구을), 손범규(고양시덕양구갑), 김태원(고양시덕양구을), 백성운(고양시일산동구), 김영선(고양시일산서구), 안상수(의왕시/과천시), 주광덕(구리시), 김성회(화성시갑), 박보환(화성시을), 황진하(파주시), 박준선(용인시기흥구), 한선교(용인시수지구), 김학용(안성시), 유정복(김포시), 정진섭(광주시), 김영우(포천시/연천군), 이범관(이천시/여주군), 정병국(양평군/가평군)
============ 강원도 ==============================
허천(춘천시), 권성동(강릉시), 황영철(홍천군/횡성군),한기호(철원군/화천군/양구군/인제군)
============ 인천시 ==============================
박상은(중구/동구/옹진군), 홍일표(남구갑), 윤상현(남구을), 황우여(연수구), 이윤성(남동구갑), 조전혁(남동구을), 조진형(부평구갑), 이상권(계양구을)이학재(서구/강화군갑),이경재(서구/강화군을)
============ 울산시 ==============================
정갑윤(중구), 최병국(남구갑), 김기현(남구을), 안효대(동구), 강길부(울주군)
============ 대구시 ==============================
배영식(중구/남구), 주성영(동구갑), 유승민(동구을), 홍사덕(서구), 이명규(북구갑), 서상기(북구을), 이한구(수성구갑), 주호영(수성구을), 박종근(달서구갑), 이해봉(달서구을), 조원진(달서구병), 박근혜(달성군)
============ 경상도 ============================
권경석(창원시갑), 이주영(마산시갑), 안홍준(마산시을), 최구식(진주시갑), 김재경(진주시을), 김학송(진해시), 이군현(통영시/고성군), 김정권(김해시갑), 김태호(김해시을), 조해진(밀양시/창녕군), 윤영(거제시), 조진래(의령군/함안군/합천군), 여상규(남해군/하동군), 신성범(산청군/함양군/거창군), 이병석(포항시북구), 이상득(포항시남구/울릉군), 정수성(경주시), 이철우(김천시), 김광림(안동시), 김성조(구미시갑), 김태환(구미시을), 장윤석(영주시), 정희수(영천시), 성윤환(상주시), 이한성(문경시/예천군), 최경환(경산시/청도군), 이인기(고령군/성주군/칠곡군), 정해걸(군위군/의성군/청송군), 강석호(영양군/영덕군/봉화군/울진군)
============ 충청도 ==============================
김호연 (천안시을), 윤진식(충주시), 송광호(제천시/단양군)
============ 부산시 ==============================
정의화(중구/동구), 유기준(서구), 김형오(영도구), 허원제(부산진구갑), 이종혁(부산진구을), 이진복(동래구), 김정훈(남구갑), 김무성(남구을), 박민식(북구/강서구갑), 허태열(북구/강서구을), 서병수(해운대구/기장군갑), 안경률(해운대구/기장군을), 현기환(사하구갑), 김세연(금정구), 박대해(연제구), 유재중(수영구), 장제원(사상구)
============ 비례대표 ============================
강명순, 배은희, 강성천, 이정선, 김장수, 김소남, 이은재, 나성린, 조윤선,조문환, 손숙미, 원희목, 이애주, 이춘식, 정옥임, 임동규, 김옥이, 이정현, 이두아, 김성동, 이영애
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 라이천령 라이천령

Linux Magic SysRq Key Setting

About/Computer 2011/11/22 14:04
o Magic SysRq Key란 무엇인가?
    - magic system request key 의 줄임말.
    - magical key combo를 말하는 것으로 해당 키를 누르게되면 커널이 무엇을
       하고 있던간에 커널이 완전히 죽은 경우가 아니라면, 바로 응답을 준다.

o 커널 컴파일옵션

make menuconfig -> Kernel Hacking -> Kernel Debugging 체크 -> Magic Sysrq Key 체크

* 일반적으로 배포되는 리눅스에는 위 옵션이 기본적으로 체크되어 있다. 따라서
   설치된 커널은 이미 sysrq 를 지원하도록 준비가 되어있는 셈이다.

o sysrq 활성화/비활성화
sysrq 를 run-time 에 enable / disable 할 수 있는데, 다음 명령을 사용한다.

enable : # echo 1 > /proc/sys/kernel/sysrq
disable : # echo 0 > /proc/sys/kernel/sysrq

o sysrq 사용
콘솔에서 <alt>-<sysrq>-"magic key" 를 누르면 된다.

o magic key 종류와 기능
magic key 에 해당하는 키와 그 기능을 살펴보면 다음과 같다.
(아래 내용은 커널 소스의 Documents/sysrq.txt 를 참조하였다.)

'r'     - 키보드 raw mode를 끄고 XLATE모드로 설정
          (상당히 제한적이며, 상/하 키 이벤트를 탐지할 수 없다. 모든 키에 대해 Ctrl/Alt/Shift를 처리할 수 없다)
          (* Quite limited, cannot detect key up/key down events. Doesn't handle ctrl/alt/shift for all keys.)
          -> X 서버 또는 svgalib 프로그램 Crash의 경우 편리함

'k'     - Secure Access Key (SAK), 현재 가상 콘솔 상의 모든 프로그램을 종료한다.
          (로그인시에 패스워드를 갈취하는 트로이목마 프로그램이 없기를 원할 때 유용하다.
           현재 가상 콘솔상의 모든 프로그램을 종료하여 트로이목마 프로그램이 실행한 것이 아닌 init에 의해
           실행된 로그인 프롬프트를 원할 경우)

'b'     - sync나 디스크의 마운트해제(unmount)없이 시스템을 즉시 reboot

'c'     - sync나 디스크의 마운트해제없이 의도적으로 시스템 crash를 일으킨다.
          이 키는 NETDUMP 클라이언트 패키지 또는 DISKDUMP 패키지가 설치되었다면 가장 유용하다

'o'     - 시스템을 끈다.(설정이 되어 있고 지원한다면).

's'     - 모든 마운트된 파일 시스템에 대해 sync 시도

'u'     - 모든 마운트된 파일 시스템을 읽기전용으로 마운트 시도

'p'     - 콘솔상에 현재 레지스터(register)와 플래그(flag)를 뿌려준다.

't'     - 콘솔상에 현재 작업 목록과 그 정보를 뿌려준다.

'm'   - 콘솔상에 현재 메모리 정보를 뿌려준다.

'v' - Dumps Voyager SMP processor info to your console.
        (Voyager SMP Processor가 뭔지.. 암튼 그 프로세서 정보를 콘솔에 뿌려준단다.)

'0'-'9' - 어떤 커널 메세지를 콘솔에 뿌려줄지 제어하는 콘솔 로그 레벨을 설정한다.
          ('0'의 경우 매우 긴급한 메시지만 콘솔상에 뿌려준다. syslogd/klogd가
           실행중이라면 계속 로그를 생성한다.(파일시스템에..))

'e'     - init 프로세스를 제외한 모든 프로세스에 SIGTERM 시그널을 보낸다.

'i'     - init 프로세스를 제외한 모든 프로세스에 SIGKILL 시그널을 보낸다.

'l'     - 모든 프로세스(init 포함)에 SIGKILL 시그널을 보낸다.(이를 수행한 후에 시스템은 동작하지 않음)

'h'     - 도움말을 표시한다.(실제로 위의 목록에 없는 key들은 도움말을 보여준다. 하지만 'h'가 기억하기 쉬움)

위에서 run-time 으로 sysrq ON/OFF 를 할 수 있는 방법을 얘기하였다. 하지만 이것은 reboot 후에는 적용되지
않는다. reboot 후에 적용되도록 하려면, 다음과 같은 방법을 사용한다.

1. /etc/sysctl.conf 파일을 직접 수정한다.

# vi /etc/sysctl.conf
  kernel.sysrq = 1 입력
# reboot

위와 같이 하면 reboot 후 항상 sysrq 가 enable 상태로 reboot 된다.


2. sysctl 명령어를 사용한다.

# sysctl -w kernel.sysrq=1

위 명령은 결국 /etc/sysctl.conf 에 kernel.sysrq=1 옵션을 기록해준다. 따라서 reboot 후에 적용된다.

만일 서버에 접속할 수는 있어도 콘솔은 없는 경우에 sysrq 를 사용하고 싶다면, 다음 파일을 사용하여 가능하다.

/proc/sysrq-trigger

말 그대로 sysrq-trigger 이다. 해당 파일의 permission 은 --w------ 이다. 즉 root 권한으로 쓰기만 가능하다.

echo b > /proc/sysrq-trigger 라고 하면 콘솔에서 <alt>-<sysrq>-"b" 를 누른것과 동일한 효과를 나타낸다. 즉 reboot 된다. 즉 sysrq-trigger 파일에 원하는 명령어를 써주면 바로 해당하는 sysrq 명령이 수행된다.

** 상기 내용은 http://blog.naver.com/pinocc/120037594446의 내용에 리눅스 커널문서중 sysrq.txt의 내용을
첨가하여 정리한 것임
** 더 상세한 내용은 sysrq.txt 내용을 보시기 바람.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License

'About > Computer' 카테고리의 다른 글

Apache 에서 가상 부하 테스트.  (0) 2011/12/21
tpmC (Transcation Processing Perfomance Council)  (0) 2011/12/16
Linux Magic SysRq Key Setting  (0) 2011/11/22
[번역] 안드로이드의 고아들.  (2) 2011/11/02
vmstat 사용법  (0) 2011/03/04
Apple Battery Charger  (0) 2011/02/28
posted by 라이천령 라이천령
1 2 3 4 5 ... 30