tag:blogger.com,1999:blog-48832598493608053702024-02-21T11:10:01.864+09:00:: 거니네 ver 1.1 ::거니의 잡동사니 공간...::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.comBlogger135125tag:blogger.com,1999:blog-4883259849360805370.post-88490467086070854552010-02-21T05:01:00.000+09:002011-01-29T20:00:49.019+09:00CentOS에 AFS Client 설치하기<div>AFS는 Andrew File System의 약자로 분산 파일 시스템의 일종이다. AFS는 Carnegie Mellon University에서 먼저 사용하였고 Transarc Corporation 의하여 개발 및 유지되고 있다. 아래에 Linux 환경에서 AFS를 설치하는 것을 예로 설명하련다. 이 예에서는 단지 AFS Client 설치만 한다.<br /></div><div><br /></div><div>AFS 배포 공식 사이트인 <a href="http://www.openafs.org" target="_blank">http://www.openafs.org</a> 에 접속하여 자신이 설치한 시스템에 맞는 RPM 배포버젼을 다운로드 받는다. tar로 압축된 소스파일을 받아 자체로 빌드하여 설치 할 수도 있지만, 그 과정이 복잡하여 여기서 생략하고 RPM과 SRPM 배포버젼을 설치하는것만 설명할가 한다.</div><div><br /></div><div>만약 설치한 시스템 커널을 바꾸지 않고 원래 설치된 그대로 사용하고 있다면 필요한 RPM 배포버젼을 받아 rpm -Uvh 명령어를 이용하여 설치하면 된다.</div><div>하지만 나의 경우는 필요에 따라 시스템 커널을 커스터마이징 하였다. 그로 인하여 afs 공식사이트에서 제공해주는 RPM파일을 직접 받아서 설치 할 수 없었다.</div><div><br /></div><div>새롭게 커스터마이징한 커널에서 새로 SRPM파일을 받아 RPM들을 빌드 해낸다.</div><div><br /></div><div>일단 OpenAFS사이트에서 SRPM을 받는다.</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">wget http://dl.openafs.org/dl/openafs/1.4.11/openafs-1.4.11-1.1.1.src.rpm</div></div><div><br /></div><div>다음 SRPM을 설치한다. 단 주의할 것은 이때 우리가 설치하는건 SRPM이지 RPM이 아니다. 그러므로 설치되는건 RPM빌드를 하기 위한 Source 일 뿐인 것이다.</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">rpm -Uvh openafs-1.4.11-1.1.1.src.rpm</div></div><div><br /></div><div>설치가 끝나면 /usr/src/redhat 디텍토리 밑으로 가보자.</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">cd /usr/src/redhat/SPECS</div><br /></div><div>SPECS 폴더 밑에 openafs.spec 이라는 SPEC파일 생겼음을 알 수 있다.<br /></div><div>이 SPEC 파일에 마춰 RPM들을 재빌드 해보자.</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">rpmbuild -ba openafs.spec</div><br /></div><div>시간이 좀 걸리니 느긋하게 커피나 한잔 하면서 기둘리자.<br /></div><div>빌드가 완성되면 /usr/src/redhat/RPMS/i386/ 폴더로 이동하여 새롭게 빌드된 RPM파일들을 확인 하자.</div><div>나의 경우에는 아래와 같은 파일들이 빌드 되었다. </div><div><br /></div><div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(255, 235, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(246, 209, 246); border-right-color: rgb(246, 209, 246); border-bottom-color: rgb(246, 209, 246); border-left-color: rgb(246, 209, 246); ">dkms-openafs-1.4.11-1.1.1.i386.rpm<br /><div style="font-family: 'Microsoft Yahei' !important; ">openafs-compat-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-kpasswd-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-debuginfo-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-krb5-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-authlibs-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-devel-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-server-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-authlibs-devel-1.4.11-1.1.1.i386.rpm </div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-docs-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-client-1.4.11-1.1.1.i386.rpm</div><div style="font-family: 'Microsoft Yahei' !important; ">openafs-kernel-source-1.4.11-1.1.1.i386.rpm</div></div></div><div><br /></div></div><div>필요로 하는 RPM들을 골라 설치 한다. 나의 경우는 client만 필요하므로 openafs와 openafs-client 및 기타 몇몇 의존하고 있는 RPM들을 설치했다. 하지만 여기서 끝이 아니다. 커널이 필요로 하는 모듈도 새로 빌드 해야 한다. 모듈을 새로 빌드하기 위하여 커널 소스가 필요한데, 별도로 얻을 필요는 없고 openafs-kernel-source-1.4.11-1.1.1.i386.rpm 이 RPM파일을 설치하면 되겠다. <br /></div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">rpm -Uvh openafs-1.4.11-1.1.1.i386.rpm openafs-krb5-1.4.11-1.1.1.i386.rpm openafs-kpasswd-1.4.11-1.1.1.i386.rpm openafs-authlibs-1.4.11-1.1.1.i386.rpm openafs-kernel-source-1.4.11-1.1.1.i386.rpm openafs-client-1.4.11-1.1.1.i386.rpm openafs-compat-1.4.11-1.1.1.i386.rpm</div></div><div><br /></div><div>다음 /usr/src/ 로 가보면 이미 openafs-kernel 폴더가 만들어져 있음을 발견 할 수 있는데 src폴더로 이동하여 ./configure 및 make를 날리여 커널 모듈들을 재컴파일 한다.</div><div><br /></div><div>컴파일이 끝나면 /usr/src/openafs-kernel-1.4.11/src/src/libafs/MODLOAD-2.6.32.7-MP/ 경로에 우리가 필요로 하는 openafs 커널 모듈들이 만들어 진다. 이것을 /lib/modules/커널버젼/extra/openafs/ 폴더로 복사해준다. 폴더가 존재 하지 않으니 미리 만들어 주는 센스를 발휘해야겠다.</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">mkdir -p /lib/modules/커널버젼/extra/openafs<br />cp -R /usr/src/openafs-kernel-1.4.11/src/src/libafs/MODLOAD-커널버젼-MP/* /lib/modules/커널버젼/extra/openafs/<br /></div></div><div><br /></div><div>다음 떠있는 커널에 모듈을 인식 시키고 적재 시켜준다.<br /></div><div>모듈을 적재하는 방법으로는 insmod와 modprobe 두가지가 있는데 modprobe는 의존성 체크까지 하여 모듈 적재를 하므로 비교적 안전하므로 이 방식으로 나는 추가 했다.</div><div><br /></div><div>먼저 depmod 명령어를 날려 모듈 의존성 리스트를 만든다.</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">depmod -ae 커널버젼</div></div><div><br /></div><div>다음 modprobe를 날려 openafs의존 모듈만 추가한다.</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">modprobe -a openafs</div></div><div><br /></div><div>추가가 잘 되었는지는 아래 명령어를 확인해볼 수 있다.</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">lsmod | grep openafs</div></div><div><br /></div><div>마지막으로 설치된 afs client를 실행해주면 끝~</div><div><br /></div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); ">service openafs-client start</div></div>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-91472429967411059482010-02-19T01:30:00.000+09:002011-01-29T20:00:48.950+09:00CentOS에 Proftpd 설치하기<DIV>
<DIV style="BORDER-BOTTOM: rgb(178,232,237) 1px dashed; BORDER-LEFT: rgb(178,232,237) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(225,253,255); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(178,232,237) 1px dashed; BORDER-RIGHT: rgb(178,232,237) 1px dashed; PADDING-TOP: 10px">PROFTP 설치하기</DIV></DIV>
<DIV><br /></DIV>
<DIV>proftpd 최신 소스 배포 파일을 받아 온다.</DIV>
<DIV>적절한 곳에 압축을 풀고 그 폴더 속으로 들어간다.</DIV>
<DIV><br /></DIV>
<DIV>최신리눅스 부터는 passwd파일을 별도로 shadowing하여 저장하므로 FTP설치시 이것을 고려하여 적절한 옵션을 주어야 한다. 아니면 FTP 서버 설치후 유저 로그인시 인증이 안됨을 발견할 수 있다.</DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(183,224,169) 1px dashed; BORDER-LEFT: rgb(183,224,169) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(211,238,202); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(183,224,169) 1px dashed; BORDER-RIGHT: rgb(183,224,169) 1px dashed; PADDING-TOP: 10px">./configure --prefix=/usr/local/proftpd \<br />
<DIV>--enable-autoshadow \</DIV>
<DIV>--enable-shadow \<br /></DIV>
<DIV>make && make install</DIV></DIV></DIV>
<DIV><br /></DIV>
<DIV>기본적인 설정을 해주자.</DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(183,224,169) 1px dashed; BORDER-LEFT: rgb(183,224,169) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(211,238,202); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(183,224,169) 1px dashed; BORDER-RIGHT: rgb(183,224,169) 1px dashed; PADDING-TOP: 10px"> vi /usr/local/proftpd/etc/proftpd.conf</DIV></DIV>
<DIV><br /></DIV>
<DIV>아래와 같은 부분을 찾아 바꿔준다.</DIV>
<DIV>User nobody</DIV>
<DIV>Group nogroup</DIV>
<DIV><br /> </DIV>
<DIV>User nobody</DIV>
<DIV>Group nobody</DIV>
<DIV>nogroup라는 그룹은 없기 때문에 안바꿔주면 대몬을 실행할 수 없다.</DIV>
<DIV>위 방법과 달리 nogroup이라는 그룹을 새로 생성해도 된다. 하지만 FTP에서만 사용하는 이런 좀비 그룹을 만들어도 크게 의미가 없으므로 첫자를 택했다.</DIV>
<DIV><br /></DIV>
<DIV>conf 파일 안에는 DefaultRoot라는 항목의 주석을 제거하면 자신이 위치한 홈 디렉토리에서 벗어나지 못한다. FTP가 SFTP보다 좀 더 나아보이는 점이라고 볼 수 있겠다. SFTP는 자신의 홈디렉토리에서 벗어나는걸 막어 보려면 아주 삽질을 많이 해야 한다.</DIV>
<DIV><br />UseReverseDNS off<br />IdentLookups off<br /></DIV>
<DIV>이러면 기본 설치 및 설정이 끝난 상태이고, 보다 싶게 서비스를 start / stop 하기 위하여 별도 스크립트를 init.d에 등록해야겠다. 풀었던 소스 디렉토리 밑에 contrib/dist/rpm/proftpd.init.d 파일을 /etc/rc.d/init.d/ 밑으로 복사한다.</DIV>
<DIV>그리고 vi로 열고 PATH부분을 아래와 같이 수정해준다.</DIV>
<DIV><br /></DIV>
<DIV>다음과 같이 PATH 수정</DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(246,209,246) 1px dashed; BORDER-LEFT: rgb(246,209,246) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(255,235,255); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(246,209,246) 1px dashed; BORDER-RIGHT: rgb(246,209,246) 1px dashed; PADDING-TOP: 10px">PATH="$PATH:/usr/local/proftpd/sbin"</DIV></DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(183,224,169) 1px dashed; BORDER-LEFT: rgb(183,224,169) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(211,238,202); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(183,224,169) 1px dashed; BORDER-RIGHT: rgb(183,224,169) 1px dashed; PADDING-TOP: 10px">chmod 755 /etc/rc.d/init.d/proftpd</DIV></DIV>
<DIV><br /></DIV>
<DIV>퍼미션도 적절히 설정하는 것 잊지 말아야 한다.</DIV>
<DIV><br /></DIV>
<DIV>/etc/rc.d/init.d/proftpd start</DIV>
<DIV>OK라고 나오면 설치 완료!</DIV>
<DIV><br /></DIV>
<DIV>혹시 아주 엄격한 방화벽 룰을 설정하고 방화벽을 운영하고 있다면</DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(183,224,169) 1px dashed; BORDER-LEFT: rgb(183,224,169) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(211,238,202); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(183,224,169) 1px dashed; BORDER-RIGHT: rgb(183,224,169) 1px dashed; PADDING-TOP: 10px">vi /etc/sysconfig/iptables</DIV></DIV>
<DIV><br /></DIV>
<DIV>iptables 파일을 열고 아래 내용 추가한다. 아래 iptable룰은 대체적으로 21포트로 들오오는 모든 tcp 새로운 상태의 request를 받아들이겠다는 것이다.</DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(255,183,151) 1px dashed; BORDER-LEFT: rgb(255,183,151) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(255,215,197); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(255,183,151) 1px dashed; BORDER-RIGHT: rgb(255,183,151) 1px dashed; PADDING-TOP: 10px">-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT</DIV></DIV>
<DIV><br /></DIV>
<DIV>iptable을 재시동 한다.</DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(183,224,169) 1px dashed; BORDER-LEFT: rgb(183,224,169) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(211,238,202); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(183,224,169) 1px dashed; BORDER-RIGHT: rgb(183,224,169) 1px dashed; PADDING-TOP: 10px">/etc/rc.d/init.d/iptables restart<br />or<br />service iptables restart</DIV></DIV>
<DIV><br /></DIV>
<DIV>서버 재시동후에 자동으로 시동되게 하고 싶으면 chkconfig에 등록을 해야겠다.</DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(183,224,169) 1px dashed; BORDER-LEFT: rgb(183,224,169) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(211,238,202); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(183,224,169) 1px dashed; BORDER-RIGHT: rgb(183,224,169) 1px dashed; PADDING-TOP: 10px">/sbin/chkconfig --add proftpd</DIV><br /></DIV>
<DIV>방화벽설정을 위에서 처럼 했음에도 불구하여 자주 끊기거나 디렉토리 목록 못가져오면 passive 모드 관련 문제인데 이때 별도 passive port를 명시해준다.<br /></DIV>
<DIV><br /></DIV>
<DIV>PassivePorts 60000 62000</DIV>
<DIV><br /></DIV>
<DIV>그리고 iptable에 다음과 같이 포트를 허용하도록 한다.</DIV>
<DIV><br /></DIV>
<DIV>
<DIV style="BORDER-BOTTOM: rgb(255,183,151) 1px dashed; BORDER-LEFT: rgb(255,183,151) 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: rgb(255,215,197); PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: rgb(255,183,151) 1px dashed; BORDER-RIGHT: rgb(255,183,151) 1px dashed; PADDING-TOP: 10px">-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 60000:62000 --tcp-flags SYN,RST,ACK SYN -j ACCEPT</DIV></DIV>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-6466126291377138572010-01-29T09:42:00.000+09:002011-01-29T20:00:48.795+09:00GRUB의 fallback 기능 활용하기원격으로 리눅스 서버의 커널을 업그레이드 할 경우 망설여지게 마련이다.<br />혹시라도 새 커널이 제대로 올라오지 않을경우 서버가 있는곳까지 가야하기 때문이다.<br />서버가 있는곳이 멀다면 낭패다.<br />lilo의 경우 lilo -R newkernel 로 안전하게 새로운 커널로 부팅해볼 수 있다.<br />하 지만 최근 추세는 lilo는 거의 사용하지 않고 GRUB을 많이 사용한다.<br />GRUB의 경우 fallback이라는 기능을 이용해서 새로운 커널로 테스트 부팅 할 수 있다.<br />여기서부터는 아래 사이트의 내용을 바탕으로 쓴 글이다.<br />http://www.gnu.org/software/grub/manual/html_node/Booting-fallback-systems.html<br />A, B, C 3개의 커널이 있다고 하자. A는 디폴트 커널이고 B는 안전하게 부팅 가능한 백업 커널이고 C는 B가 손상됐을 경우에 대비한 백업 커널이라 하자.<br />fallback 기능을 이용하기 위해서는 GRUB의 설정 파일을 다음과 같이 수정해야 한다.<br /><br /><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(225, 253, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(178, 232, 237); border-right-color: rgb(178, 232, 237); border-bottom-color: rgb(178, 232, 237); border-left-color: rgb(178, 232, 237); ">default saved # 이 부분이 중요!!!<br />timeout 10<br />fallback 1 2 # 이 부분이 중요!!!<br /> <br />title A<br />root (hd0,0)<br />kernel /kernel<br />savedefault fallback # 이 부분이 중요!!!<br />title B<br />root (hd1,0)<br />kernel /kernel<br />savedefault fallback # 이 부분이 중요!!!<br />title C<br />root (hd2,0)<br />kernel /kernel<br />savedefault</div><br />기존 설정과 다른 부분이 'default saved', 'fallback 1 2', 'savedefault fallback' 이렇게 3가지다.<br />default saved<br />보통 시스템이라면 default 부분이 숫자로 되어 있을것이다. 여기서는 saved로 바뀌었다. saved로 바뀌었을 경우 디폴트 부팅은<br />/boot/grub/default 라는 텍스트 파일에 기록된 숫자에 의해 결정된다.<br />fallback 1 2<br />처음 fallback은 1(B 커널) 다음 fallback은 2(C 커널)가 된다.<br />savedefault fallback<br />fallback에 설정된 커널로 디폴트 커널을 저장한다.<br />모든 설정이 완료 되었으면 grub-set-default 0 으로 디폴트 커널을 A으로 만들어 주자.<br />이제 재부팅을 하면 GRUB은 A 커널로 부팅을 시도한다. A 커널로 부팅을 시도하면 GRUB은 다음 부트 엔트리를 1(B 커널)로 설정한다.<br />GRUB이 A 커널을 읽어들이지 못할 경우 에러를 내면서 즉시 B 커널로 부팅을 시도한다.<br />만 약 A 커널로 부팅중 커널 패닉이 날 경우에는 2가지 방법이 있다. 하드웨어적으로 리셋을 시켜 주거나 GRUB 설정 파일에 panic=15<br />(15는 패닉이 났을 경우 15초 후에 재부팅을 한다는 말이다. 숫자는 자신에 원하는대로 바꿔주자)를 추가해준다. 이제 A 커널에서 커널패닉이<br />나면 15추 후에 재부팅된다는 메시지가 나오고 15초 후에 재부팅이 되면서 B커널로 부팅을 시도하게 된다.<br /><br /><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(225, 253, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(178, 232, 237); border-right-color: rgb(178, 232, 237); border-bottom-color: rgb(178, 232, 237); border-left-color: rgb(178, 232, 237); ">title A<br />root (hd0,0)<br />kernel /kernel panic=15<br />savedefault fallback</div><div><br />A커널로 부팅하지 못해 B커널로 부팅을 했다고 하자. 이 경우 GRUB은 다음 부트 엔트리를 2(C 커널)로 설정한다. 앞에서와 마찬가지로<br />B 커널을 읽어들이지 못하면 C 커널로 부팅을 시도하게 된다.<br />A 커널의 문제를 바로잡았다면 grub-set-default 0으로 A 커널로 부팅되도록 한다.<br /><br />앞에서 살펴본대로 fallback과 savedefault fallback에 의해서 GRUB은 항상 다음 부트 엔트리를 기록한다. 따라서 정상적으로 부팅이<br />되었다고 하더라도 다음 부팅은 fallback에 설정된 다른 커널로 시도하게 된다. 이제 A 커널에 문제가 없어서 항상 A 커널로 부팅을 원한다면<br />rc.local 파일에 grub-set-default 0을 추가해 준다.</div><div><br /></div><div>CentOS일 경우 아래에서 처럼 직접 grub로 들어가서 default로 부팅 할 커널 인덱스를 넣는다. 뒤에 once옵션을 주어 한번만 부팅을 시도해본다, 만약 부팅에 문제 없으면 grub.conf에서 직접 default값을 1로 바꿔주면 되겠다.</div><div><br /></div><div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(225, 253, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(178, 232, 237); border-right-color: rgb(178, 232, 237); border-bottom-color: rgb(178, 232, 237); border-left-color: rgb(178, 232, 237); "># grub<br /><div>grub> savedefault --default=1 --once</div><div>grub> quit</div></div></div><div><br /></div>출처: http://www.gnu.org/software/grub/manual/html_node/Booting-fallback-systems.html<br /></div></div>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-54143308114055430412010-01-25T11:06:00.001+09:002011-01-29T20:00:48.729+09:00RSYNC를 이용하여 REMOTE SERVER FS 동기화 하기<span class="Apple-style-span" style="font-family: Gulim; line-height: 18px; color: rgb(102, 102, 102); "><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-color: rgb(93, 93, 93); "><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">간단한 서버 FS동기화 이제는 rsync로 해결하자</font></b></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">일반적으로 웹서비스를 시작하는 회사에서 사용자가 늘어감에 따라서 웹서버의 증설을 하는 경우 시스템 관리자가 첫번째로 맞닥뜨리는 문제중에 하나가, 각각의 웹서버에 있는 정보의 동기화이다. 웹서버가 한대일경우는 이러한 문제로 고민할 필요가 없겠지만, 트래픽증가로 웹서버를 증설했을경우 각각의 웹서버로 매일 업데이트되는 정보를 일일이 올려준다면 정말 귀찮은 작업이 아니다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">NT를 접해보신 분들이라면 미러링(mirroring)에 대해서 알고 있을 거다. 이는 로컬에서는 특정하드디스크나 파티션의 정보를 다른 하드디스크나 파티션으로 동일하게 복제해주는 기능이다. 미러링의 개념은 NT에만 국한된것은 아니다. NT에서 자체제공하는 옵션으로 미러링을 제공하듯이 리눅스에서도 rsync나 기타 다른 프로그램으로 미러링을 지원한다. 물론 rsync는 로컬에서 로컬로는 미러링을 할수없지만, 로컬과 원격지의 미러링을 지원한다. 보통 anonymous ftp서버나 웹서버의 미러링에 많이 쓰인다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">1. rsync 설치</b></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">rsync는 웬만한 리눅스 배포판에는 기본으로 설치가 되어져 나온다. 혹시나 설치가 안되었다면<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-right-color: rgb(128, 184, 136); border-right-style: dotted; border-top-color: rgb(128, 184, 136); border-top-style: dotted; border-left-color: rgb(128, 184, 136); border-left-style: dotted; border-bottom-color: rgb(128, 184, 136); border-bottom-style: dotted; background-color: rgb(40, 86, 58); "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "># yum install rsync</font></div></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">를 이용하여 설치하기 바란다. 소스 컴파일 방식으로의 설치는 번거로우므로 일단 패스하겠다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">2. rsync와 ssh를 이용한 FS 동기화</b></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">보통 rsync로 파일 전송 시 여러가지 프로토콜을 골라 사용 할 수가 있다. 일반 적으로 rsh나 ssh를 많이 사용하는데, 이것을 사용하기를 원하지 않는 다면 873 포트를 이용할 수 도 있다. 허나 일반적으로 ssh는 쉘접속용으로 많이 사용하고 어느 서버에나 기본으로 다 깔려있으므로 이번 예제에서는 rsync + ssh 이러한 조합으로 시나리오를 적어볼가 한다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">ssh를 이용하면 한가지 걸리는 문제가 있는데 그것이 바로 "인증"이다. rsync를 주기적으로 실행 시키기 위하여서는 원격 서버의 일반유저나 슈퍼유저로 로그인하여 파일을 읽어야 하는 과정이 필요한데, 이때 ssh 원격 로그인시 비번을 요구하는 프롬프트가 자꾸 뜨면 cron으로 처리하기가 힘들어 질 것이다. 그렇다면 비밀번호로 인증을 안하면 어떤 방식으로 인증을 할 것인가? 예전 ssh BFA에서 이미 언급 했었는데, rsa 인증방식으로 사용하면 이런 문제를 깔끔히 해결 할 수 있겠다. 관련글은 아래 링크에 가서 참고하기 바란다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><a target="_blank" href="http://guni.textcube.com/138" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; color: rgb(0, 0, 204); text-decoration: underline; height: 1.4em; ">SSH의 Brute Force Attak을 막기</a> <br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">실제 동기화 작업을 진행하기 이전에 해당 명령어를 좀 더 잘 이해하도록 하기 위하여 몇몇 변수들에 대한 선언을 하겠다. 가령 192.168.1.15가 목적 원격 서버이고 /var/www/htdocs 이 동기화를 할 폴더라고 가정한다면 아래 형식 대로 명령어를 쓰면 되겠다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-right-color: rgb(128, 184, 136); border-right-style: dotted; border-top-color: rgb(128, 184, 136); border-top-style: dotted; border-left-color: rgb(128, 184, 136); border-left-style: dotted; border-bottom-color: rgb(128, 184, 136); border-bottom-style: dotted; background-color: rgb(40, 86, 58); "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "># rsync -avzP -e 'ssh -p 2020' user@192.168.1.15:/var/www/htdocs /var/www/</font></div><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">각 옵션들에 대하여 설명을 하자면<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-right-color: rgb(144, 224, 255); border-right-style: dotted; border-top-color: rgb(144, 224, 255); border-top-style: dotted; border-left-color: rgb(144, 224, 255); border-left-style: dotted; border-bottom-color: rgb(144, 224, 255); border-bottom-style: dotted; background-color: rgb(36, 46, 64); "><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">-a archive mode (심볼릭 링크, 속성, 퍼미션, 소유권 등을 보존한 상태)</span></font><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">-v verbose (싱크 내용을 보다 자세히 보여줌)</span></font></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">-z compress (동기화 할 때 전송 할 파일들을 압축하여 전송)</span></font></div><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">-e 어떤 프로토콜을 이용하여 파일 전송을 할지를 결정한다. ssh나 rsh사용시 조합하여 지정한다.</span></font></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">-e속의 -p ssh나 rsh포트가 바뀌었을 때 별도 조합하여 사용함</span></font></div></b></b></div></div><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">3. cron을 이용하여 특정 시간에 자동으로 실행 시키기</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">FS동기화는 백업과 마찬가지로 주기적으로 실행시켜야 한다. 일정 주기로 처리하는 배치 프로세스의 경우 시스템 crontab에 등록 하여 자동화 시킬 수 있다. 시스템의 최적화의 기법은 일정 시간 단위로 최대한의 성능을 발휘하도록 도와주는 것이다. 즉, 주기적으로 운영 중에 만들어진 필요하지 않는 임시 파일을 정리하거나, 운영체제 운영에 필요한 데이터를 갱신하는 등의 작업을 통해 리눅스가 최적의 상태를 유지할 수 있게 할 수 있다.</span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">작업 설정 파일을 crontab 파일이라고 부르며, 이 파일의 위치는 OS별로 차이가 있다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">리눅스는 /var/spool/cron/ID, 솔라리스는 /var/spool/corn/crontabs/ID에 위치한다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">그럼 이 파일을 직접 수정해야 하는가? 그렇지 않다. crontab 명령을 통해 설정과 조회를 한다. <b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline !important; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline !important; ">crontab 설정 파일을 새롭게 편집하고자 한다면 -e 옵션을 주고, 수정하기 전에 현재 등록된 내용을 보고자 한다면 -l 옵션을 사용하며, 등록된 내용을 삭제하려면 -d 옵션을 사용한다.</div></span></div></b></b></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><b style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline !important; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline !important; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div></span></div></b></b></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">crontab 각 필드의 의미는 다음과 같다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">---------- ---------- ---------------------------------------------------</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "> 필 드 의 미 <span class="Apple-tab-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; white-space: pre; "> </span>범 위</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">---------- ---------- ---------------------------------------------------</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">첫 번째 분 <span class="Apple-tab-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; white-space: pre; "> </span>0-59</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">두 번째 시 <span class="Apple-tab-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; white-space: pre; "> </span>0-23</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">세 번째 일 <span class="Apple-tab-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; white-space: pre; "> </span>0-31</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">네 번째 월 <span class="Apple-tab-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; white-space: pre; "> </span>1-12</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">다섯 번째 요일 0-7 (0 또는 7=일요일, 1=월, 2=화, ...)</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">여섯 번째 명령어 <span class="Apple-tab-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; white-space: pre; "> </span>실행할 명령을 한줄로 쓴다.</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">---------- ---------- ---------------------------------------------------</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">위 작업을 가령 5분에 한번씩 실행시키려면 어떻게 해야 할가?</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-right-color: rgb(128, 184, 136); border-right-style: dotted; border-top-color: rgb(128, 184, 136); border-top-style: dotted; border-left-color: rgb(128, 184, 136); border-left-style: dotted; border-bottom-color: rgb(128, 184, 136); border-bottom-style: dotted; background-color: rgb(40, 86, 58); "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">0,5,10,15,20,25,30,35,40,45,50,55 * * * * rsync -avzP -e 'ssh -p 2020' user@192.168.1.15:/var/www/htdocs /var/www/ > /dev/null 2>&1</font></div></div></div></span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">제일 마지막 부분 > /dev/null 2>&1은 cron작업 중 발생하는 표준출력, 표준 에러는 모두 무시하겠다는 것을 의미한다. 저 부분을 추가하지 않으면 root계정에 메일이 무한정 쌓이는 사태가 발생할 수 있다. >_<</span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">마지막으로 cron이 정확히 작동하고 있는지 보려면 root계정으로 로그인 한 상태에서</span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-right-color: rgb(128, 184, 136); border-right-style: dotted; border-top-color: rgb(128, 184, 136); border-top-style: dotted; border-left-color: rgb(128, 184, 136); border-left-style: dotted; border-bottom-color: rgb(128, 184, 136); border-bottom-style: dotted; background-color: rgb(40, 86, 58); "><font class="Apple-style-span" color="#FFFFFF" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "># cat /var/log/cron</font></div></span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; "><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "></span></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span class="Apple-style-span" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: normal; ">을 해보면 알수 있다.</span></div></b></b></div></div></span>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-38871707967995269022010-01-25T11:06:00.000+09:002011-01-29T20:00:48.677+09:00Linux 각 서비스들에 대한 소개<div>Linux 설치시 기본으로 설치되는 각 데몬들에 대하여 알아보자</div><div><br /></div><div>NetworkManager, NetworkManagerDispatcher</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">네트워크 인터페이스를 자동으로 관리하기 위한 데몬</div></div><div><br /></div><div>acpid</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">ACPI(Advanced Configuration and Power Interface) 방식의 시스템 전력 관리를 위한 데몬</div> <br /></div><div>anacron</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">crond와 같은 작업 스케줄러 데몬이지만 crond와는 달리 시스템이 계속 켜져있지 않다고 가정하여 하루보다 작은 단위의 스케줄을 관리</div></div><div><br /></div><div>apmd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">APM(Advanced Power Management) 데몬 - 배터리를 필요로 하는 노트북 등 휴대용 데스크톱에서 필요</div></div><div><br /></div><div>atd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">crond와 같은 작업 스케줄러 데몬</div><br /></div><div>autofs<br /></div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">파일 시스템을 자동으로 마운트하기 위한 데몬</div></div><div><br /></div><div>avahi-daemon<br /></div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">네트워크 서비스를 인식하는 멀리캐스트 DNS 서비스 Avahi 데몬</div><br /></div><div>avahi-dnsconfd<br /></div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">DNS 재설정 기능을 위한 데몬</div></div><div><br /></div><div>bluetooth</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">블루투스 장치를 사용하기 위한 데몬</div></div><div><br /></div><div>cpuspeed</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">CPU SPEED 데몬</div></div><div><br /></div><div>crond</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">작업 스케줄러 cron 데몬</div></div><div><br /></div><div>cups</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">리눅스의 기본 출력 시스템인 CUPS데몬</div></div><div><br /></div><div>cups-config-daemon</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">CUPS 설정을 위한 데몬</div></div><div><br /></div><div>dhcdbd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">DHCP D-BUS 데몬(DHCP 클라이언트를 D-BUS로 관리하기 위해 필요)</div></div><div><br /></div><div>dhcpd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">동적 IP환경에서 인터넷을 사용하기 위한 DHCP 데몬</div></div><div><br /></div><div>dhcrelay</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">DHCP 중계를 위한 데몬</div></div><div><br /></div><div>diskdump</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">시스템에 문제가 생겼을 때 메모리에 있던 내용을 디스크 장치에 기록하기 위한 데몬</div></div><div><br /></div><div>gpm</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">콘솔 환경에서 마우스 지원을 위해 필요한 데몬</div></div><div><br /></div><div>haldaemon</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">장치를 자동으로 인식하기 위해 필요한 HAL 데몬</div></div><div><br /></div><div>hidd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">불루투스 장치를 사용할 때 필요한 불루투수 ID 데몬</div></div><div><br /></div><div>hplip</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">HP사 제품의 출력을 위한 데몬</div></div><div><br /></div><div>httpd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">웹 서버 데몬</div></div><div><br /></div><div>iptables</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">방화벽, 매스커레이드 설정을 위한 iptables 데몬</div></div><div><br /></div><div>irda</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">적외선 통신을 위한 irda 데몬</div></div><div><br /></div><div>irqbalance</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">멀티프로세서(둘 이상의 CPU를 사용하는 환경)에서 CPU간의 인터럽트를 분리하기 위한 데몬</div></div><div><br /></div><div>isdn</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">ISDN 서비스를 위한 데몬</div></div><div><br /></div><div>kudzu</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">새로운 하드웨어가 추가되었을 때 검색을 위한 데몬</div></div><div><br /></div><div>lm_sensors</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">CPU 온도, 마더보드 온도, 팬 상태, 전압 등의 시스템의 상황을 실시간으로 알 수 있는 lm_sensors 데몬</div></div><div><br /></div><div>mdmonitor</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">RAID상태를 모니터링하기 위한 데몬</div></div><div><br /></div><div>mdmpd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">다중 경로의 장치를 모니터링하고 관리하기 위한 데몬</div></div><div><br /></div><div>messagebus</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">시스템 이벤트를 전송하기 위한 데몬</div></div><div><br /></div><div>mysqld</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">MySQL 데이터베이스 데몬</div></div><div><br /></div><div>named</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">DNS 서버 데몬</div></div><div><br /></div><div>netdump</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">콘솔을 초기화하기 위한 데몬</div></div><div><br /></div><div>netfs</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">삼바, NFS, NCP 등 네트워크 파일 시스템을 마운트하기 위한 데몬</div></div><div><br /></div><div>netplugd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">네트워크 케이블을 연결했을 때 접속 여부를 리눅스 커널에게 알리기 위한 데몬</div></div><div><br /></div><div>network</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">네트워크 데몬(네트워크 접속을 위해 반드시 활성화되어야 함)</div></div><div><br /></div><div>nfs</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">유닉스와 리눅스의 기본 네트워크 파일 시스템 NFS 데몬</div></div><div><br /></div><div>nfslock</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">NFS를 통해 공유되는 파일을 클라이언트가 동시에 수정하는 것을 막기 위해 파일을 잠그는 데몬(NFS를 운영하는데 필요)</div></div><div><br /></div><div>nscd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">네밍 서비스에 대한 요청 결과를 캐시해서 다음 요청에 응답하기 위한 데몬 (NIS와 DNS를 운영하는데 필요)</div></div><div><br /></div><div>ntpd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">네트워크를 통해 리눅스 서버의 시간 정보를 동기화하기 위한 Network Time Protocol 데몬</div></div><div><br /></div><div>portmap</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">원격 시스템 호출에 사용하는 데몬(NFS, NIS를 사요할 때 필요)</div></div><div><br /></div><div>proftpd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">FTP 서버 데몬</div></div><div><br /></div><div>psacct</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">프로세스 통계를 확인하기 위한 psacct 데몬</div></div><div><br /></div><div>rdisc</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">동적 라우팅에서 라우터를 자동으로 찾기 위한 RDISC 데몬</div></div><div><br /></div><div>readahead</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">로그인 전에 특정 파일을 사용하기에 앞서 메모리에 미리 불러들여 속도를 높이기 위한 데몬</div></div><div><br /></div><div>readahead_early</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">모든 데몬이 시작하기 전에 특정 파일을 사용하기에 앞서 메모리에 미리 불러들여 속도를 높이기 위한 데몬</div></div><div><br /></div><div>rpcgssd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">원격 인증을 위한 GSS(General Security Service) 데몬 (NFS version 4 클라이언트를 위해 필요)</div></div><div><br /></div><div>rpcidmapd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">원격 이름 매핑을 위한 idmap(IDmapping) 데몬 (NFS version 4를 위해 필요)</div></div><div><br /></div><div>rpcsvcgssd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">원격 인증을 위한 GSS(General Security Service) 데몬 (NFS version 4 서버를 위해 필요)</div></div><div><br /></div><div>saslauthd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">SASL(Simple Authentication and Security Layer)을 이용한 암호화된 사용자 인증을 위한 데몬</div></div><div><br /></div><div>sendmail</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">메일 서버 Sendmail 데몬</div></div><div><br /></div><div>smartd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">시스템 모니터링을 위한(Self-Monitoring, Analysis and Reporting Technology) 데몬</div></div><div><br /></div><div>smb</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">삼바 서버 데몬 (smbd와 nmbd를 동작시키기 위한 데몬)</div><br /></div><div><br /></div><div>snmpd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">네트워크 관리를 위한 SNMP 데몬</div></div><div><br /></div><div>snmptrapd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">SNMP TRAP 데몬</div></div><div><br /></div><div>spamassassin</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">스팸메일을 거르기 위한 스펨메일 필터 데몬</div></div><div><br /></div><div>squid</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">프록시 서버 Squid 데몬</div></div><div><br /></div><div>sshd</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">SSH 서버 데몬</div></div><div><br /></div><div>syslog</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">시스템 로그를 관리하기 위한 syslog 데몬</div></div><div><br /></div><div>vncserver</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">원격접속을 위한 VNC 서버 데몬</div></div><div><br /></div><div>winbind</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">삼바 서버와 윈도우 간에 네트워크 공유를 위해 필요한 데몬</div></div><div><br /></div><div>wpa_supplicant</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">무선 네트워크 접속에 사용되는 WPA(Wi-Fi proctedted access) 데몬</div></div><div><br /></div><div>xfs</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">X윈도우의 폰트를 관리하기 위한 데몬</div></div><div><br /></div><div>xinted</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">xinetd 방식의 네트워크 서비스를 관리하기 위한 슈퍼 데몬</div></div><div><br /></div><div>ypbin</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">NIS 서버 데몬</div></div><div><br /></div><div>yum</div><div><br /></div><div><div style="BORDER-RIGHT: #90e0ff 1px dotted; PADDING-RIGHT: 10px; BORDER-TOP: #90e0ff 1px dotted; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #90e0ff 1px dotted; PADDING-TOP: 10px; BORDER-BOTTOM: #90e0ff 1px dotted; BACKGROUND-COLOR: #242e40; COLOR: #FFFFFF">온라인 패키지 관리도구 yum 데몬</div></div><div><br /></div><div><b>중지 권장 데몬들</b></div><div><br /></div><div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(255, 215, 197); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(255, 183, 151); border-right-color: rgb(255, 183, 151); border-bottom-color: rgb(255, 183, 151); border-left-color: rgb(255, 183, 151); ">acpid<br /><div>apmd</div><div>atd</div><div>auditd</div><div>autofs</div><div>bluetooth</div><div>cups</div><div>firstboot</div><div>gpm</div><div>haldaemon</div><div>hidd</div><div>ip6tables</div><div>mcstrans</div><div>mdmonitor</div><div>messagebus</div><div>netfs</div><div>nfslock</div><div>pcscd</div><div>portmap</div><div>restorecond</div><div>rpcgssd</div><div>rpcidmapd</div><div>smartd</div><div>xfs</div></div></div><div><br /></div></div>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-40562496430477906822010-01-21T23:11:00.000+09:002011-01-29T20:00:48.554+09:00PHP - eAccelerator 및 suhosin 설치기<div>PHP 설치 후 보안 및 성능에도 신경 써보자?!</div><div><br /></div><div><div>eAccelerator는 오픈소프 php 엑셀레이터 이다. 최적화 및 동적으로 컨텐츠를 캐쉬하는 기능을 포함하여 php로 작성된 웹페이지의 퍼포먼스를 향상시킨다.</div><div> </div><div>APM(Apache + php + mysql)은 이미 설치 되어있다고 가정하고 진행하겠다.</div><div>APM은 수동방식인 - 소스컴파일 방식으로 설치 되었다고 가정한다.</div></div><div><br /></div><div><b>1. eaccelerator 설치</b></div>공식홈페이지에서 자료를 다운 받아 설치한다. http://sourceforge.net/projects/eaccelerator/<div><br /></div><div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); "># wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.2.tar.bz2</div></div><div><br /></div><div>다운 받었으면 적절한 곳에 압축을 풀고 설치를 시도 하겠다.</div><div><br /></div><div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); "># cd /usr/local/src<br /><div># tar xzvf eaccelerator-0.9.5.2.tar.bz2 && cd eaccelerator-0.9.5.2</div><div># /usr/local/php/bin/phpize</div><div># ./configure \</div><div>--enable-eaccelerator=shared \</div><div>--with-php-config=/usr/local/php/bin/php-config</div><div># make && make test && make install</div></div></div><div><br /></div><div>설치가 완료 되면 캐싱된 파일이 저장될 디렉토리를 지정 해줘야 한다.<br /></div><div><br /></div><div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); "># cd /var/tmp<br /><div># mkdir eaccelerator</div><div># chown www eaccelerator</div><div># chmod 700 eaccelerator</div></div></div><div><br /></div><div>이로써 eaccelerator에 대한 설치 는 끝난다.</div><div><br /></div><div><b>2. suhosin 설치</b><br /></div><div>취약점 분석 등에서 뛰어난 재능을 보여주었을 뿐만 아니라 PHP 보안 강화를 위한 hardened php project 를 진행하고 있는 보안 전문가 Stefan Esser 가 PHP 보안 강화 솔루션인 수호신을 내놓았으며 영문으로 Suhosin 이라고 명명했다. <br /></div><div><br /></div><div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(211, 238, 202); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(183, 224, 169); border-right-color: rgb(183, 224, 169); border-bottom-color: rgb(183, 224, 169); border-left-color: rgb(183, 224, 169); "># cd /usr/local/src<br /><div># wget http://download.suhosin.org/suhosin-0.9.29.tgz</div><div># tar xzvf suhosin-0.9.29.tgz</div><div># cd suhosin-0.9.29</div><div># /usr/local/php5/bin/phpize</div><div># ./configure --with-php-config=/usr/local/php/bin/php-config</div><div># make && make install</div></div></div><div><br /></div><div>마지막으로 php.ini를 수정하여 설치한 모듈들을 zend extension이나 일반 extension으로 로딩한다.<br /></div><div><br /></div><div><div><div style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: rgb(255, 215, 197); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(255, 183, 151); border-right-color: rgb(255, 183, 151); border-bottom-color: rgb(255, 183, 151); border-left-color: rgb(255, 183, 151); ">[suhosin]<br /><div>extension="no-debug-non-zts-20060613/suhosin.so"</div><div><br /></div><div>[eAccelerator]</div><div>zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"</div><div>eaccelerator.shm_size="16"</div><div>eaccelerator.cache_dir="/tmp/eaccelerator"</div><div>eaccelerator.enable="1"</div><div>eaccelerator.optimizer="1"</div><div>eaccelerator.check_mtime="1"</div><div>eaccelerator.debug="0"</div><div>eaccelerator.filter=""</div><div>eaccelerator.shm_max="0"</div><div>eaccelerator.shm_ttl="0"</div><div>eaccelerator.shm_prune_period="0"</div><div>eaccelerator.shm_only="0"</div><div>eaccelerator.compress="1"</div><div>eaccelerator.compress_level="9"</div><div><br /></div><div>[Zend]</div><div>zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.9</div><div>zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3</div><div>zend_optimizer.version=3.3.9</div><div>zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so</div><div>zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so</div></div></div><div><br /></div><div>어떤가? 간단하지 않는가?<br /></div></div></div></div></div></div>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-67765575751801591872009-09-05T03:18:00.000+09:002011-01-29T20:00:47.532+09:00영문 논문 읽는 법물리학/수학의 현재 대세는 미국이다. 미국이 좋건 싫건, 연구비 가장 많이 퍼주고 가장 많이 연구하는데가 미국이라는 거다. 따라서 연구하는 언어의 대세 역시 미국이다. 한국이 대세로 올라서기 전 까지는 좋은 논문은 전부 영어로 쓰여질 것이다.<br />그런 의미에서, 영어로 된 논문을 읽는 방법을 적어둔다. 물론 이건 그냥 내가 논문을 읽으면서 느낀 점들이다.<br /><br /><span style="font-weight: bold;">1. 일단 제목과 Abstract(요약)을 읽는다.</span><br />제목이나 제목에 쓰인 단어가 뭔지 모르겠다면, 안읽어도 된다. 교수님이 읽으라고 시켰으면 읽어야겠지만...;<br />기본적으로 논문을 읽으려면 최소한 학부(undergraduate school) 수준의 지식은 있어야 한다. 안그러면 안습...<br />제목이 뭔지 이해했으면, Abstract도 읽어본다. Abstract은 논문을 다 읽을 시간이 없을 때 급히 읽을 수 있는 수준의 아주 간단한 요약이다. 대강 어떤 단어들이 논문에서 등장할지 생각해보고, 내가 그 단어들의 개념을 알고 있는지 점검한다. 이렇게 점검하면, 적어도 본문을 읽으면서 받게 될 심리적 압박이랑 충격은 좀 덜하다. 다 읽었는데 하나도 모르겠어도, 단어가 어려워서 못 이해했다는 핑계가 나오기 때문이다. 이 부분은 뒤에 다시 설명해보도록 하겠다.<br /><br /><span style="font-weight: bold;">2. Introduction을 가장 자세하게 읽어야 한다.</span><br />논문 전체를 자세하게 읽는건 당연하겠지만, 그중 가장 중요한 것은 역시 처음의 Introduction이랑 마지막의 Conclusion and Discussion이다. 이 부분들은 논문에서 주장하는 것을 명확하게 하는 부분(Introduction)과 뭘 주장했는지 요약하는 부분 (Conclusion and DIscussion)이기 때문에 정확하고 상세하게 이해할 필요가 있다.<br /><br /><span style="font-weight: bold;">3. 나머지 부분은 대충 읽어보자.</span><br />물론 논문을 대충 읽으라는 소리는 아니다. 소개와 결론을 대강 알고 있다면 중간 부분을 훑어보면서 저자의 아이디어가 뭔지 대강 감을 잡는 거다.<br />여기까지 읽었으면 적어도 논문에서 주장하는게 무슨 얘기이고 대강 어떤 논리와 아이디어를 썼는지 짐작할 수 있다. 그런 후에 전체를 정확하게 읽는 거다.<br /><br /><span style="font-weight: bold;">4. Definition을 정확하게 알아두자.</span><br />우리말로는 "힘"에 해당하는 force와 power는 물리학에서는 그 정의(Definition)가 다르다. 제대로 알아두지 않으면 무진장 헷갈리는 단어가 엄청 많을 것이다. 그리고 물리학에서의 power는 일률을 말하지만 수학에서 power는 지수를 뜻한다. 또, 지수를 뜻하는 말은 exponent가 있다. 더군다나 우리말로는 둘 다 지수이지만 실제 사용은 power와 exponent가 살짝 다르다. 따라서 그 논문에서 이야기하고 있는 정의를 정확하게 알고 이해하자.<br /><br style="font-weight: bold;"><span style="font-weight: bold;">5. "간단한 계산을 해보면..."에 속지 말자.</span><br />정말 간단한 계산도 많지만, 가끔가다가 수십~수백장의 적분을 해야 유도되는 결론을 "이 결과는 적절한 적분으로부터 간단히 유도된다"고 주장하는 사람도 있다. 이런 계산 따라가다보면 초 난감하다. 수학이라면 다 검증하는 것도 의미가 있겠지만, 물리학이라면 일단 받아들이고 넘어가주자. 물론 일단 받아들이고 넘어갔는데 그 결과가 틀린 것으로 판명났을 때 몰아치는 후폭풍은 전부 자신의 몫이다. 시간이 없다면 조금 대충 넘어가는 것도 좋다. 그러나 시간이 있다면 귀찮더라도 제대로 계산을 따라가 주는게 좋다.<br /><br /><span style="font-weight: bold;">6. 정말정말 모르겠으면 저자에게 연락해본다.</span><br />봐도, 봐도, 봐도, 봐도 모르겠다면 논문에 적혀있는 저자의 이메일로 연락을 취해본다. 물론 한국인이 아니라면 영어로 편지를 써야 할 것이고, 주변 사람들에게 물어봐서 정중한 표현이 어떤건지 알아봐야 할 것이다.<br />하루에 질문을 수십개씩 받는 초 유명 과학자가 아니라면 대부분의 경우 친절하게 설명을 해 주거나 적어도 어떤 논문을 더 참고해야 하는지 정도는 알려줄 것이다.<br /><br /><span style="font-weight: bold;">7. 이해했다고 생각이 되면, 다른 사람에게 설명해본다.</span><br />논문을 둘이 같이 읽고서 이해할 정도가 되었다면, 논문을 정말 이해했다고 봐도 좋다. 적어도 다른 사람과 토론하다보면 이해가 깊어지는 일이 있으므로 꼭 토론을 해 보도록 하자.<br /><br /><span style="font-weight: bold;">8. 겁내지 마라.</span><br />가장 중요한 건데, 논문이 길거나, 단어가 어렵다고 겁내면 안된다. 과학, 수학에서 어려운 단어는 대부분 명사다. 따라서 주어이거나 목적어이거나 보어일 뿐이다. 게다가 과학/수학에 사용되는 명사는 대부분 그냥 그런 이름으로 불리워 지는 어떤 개념인 경우가 많다. 따라서 그냥 그런게 있나보다 하고 넘어가면 된다.<br />문장이 엄청나게 길어지는 경우가 가끔 있다(한 문장이 5~6줄 정도?). 이 경우는 일단 주어-동사 관계만 전부 찾아서 해석하고나서 나머지를 이해하면 된다.<br /><br />출처: 멜로토피아<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-12341644654758596122009-09-05T03:12:00.000+09:002011-01-29T20:00:47.476+09:00논문 쓸 때 몇가지 자주 쓰는 구절들...수년간의 노력 끝에 나는 드디어 과학계의 전문용어들을 익혔다.<br />다음의 인용문과 그 실제의 뜻에 대한 해설은 과학/의학분야에서 사용하는 신비한 언어들에 대한 이해에 도움을 줄 것이다.<br /><br />▶IT HAS LONG BEEN KNOWN = I didn't look up the original reference.<br />오래전부터 알려져 왔던 대로 = 원전을 찾아보지 않았다.<br /><br />▶A DEFINITE TREND IS EVIDENT = These data are practically meaningless.<br />뚜렷한 경향이 드러나듯이 = 이 데이터는 아무 의미없다.<br /><br />▶WHILE IT HAS NOT BEEN POSSIBLE TO PROVIDE DEFINITE ANSWERS TO THE QUESTIONS = An unsuccessful experiment, but I still hope to get it published.<br />이런 의문점들에 대한 명확한 해답을 구한다는 것에 어려움이 따르지만 = 실험은 실패했지만 그래도 논문으로 내야겠다.<br /><br />▶THREE OF THE SAMPLES WERE CHOOSEN FOR DETAILED STUDY = The other results didn't make any sense.<br />샘플 중에서 세 개를 선택하여 분석하였습니다 = 나머지 샘플은 해석이 불가능했다.<br /><br />▶TYPICAL RESULTS ARE SHOWN = This is the prettiest graph.<br />대표적인 결과값들을 표시하였습니다 = 이 그래프가 제일 이쁘죠.<br /><br />▶THESE RESULTS WILL BE IN A SUBSEQUENT REPORT = I might get around to this sometime, if pushed/funded.<br />그것에 대한 결과는 차후의 논문에서 다루어질 것이며 = 연구비 제대로 받으면 언젠가 쓸 생각입니다.<br /><br />▶THE MOST RELIABLE RESULTS ARE OBTAINED BY JONES = He was my graduate student, his grade depended on this.<br />가장 신뢰할만한 결과는 Jones의 실험에서 얻어진 것으로 = 그는 내 밑에 있는 대학원생이었고, 학점을 받으려면 그 실험을 할 수밖에 없었다.<br /><br />▶IN MY EXPERINCE = once<br />제 경험에 따르면 = 한번.<br /><br />▶IN CASE AFTER CASE = Twice<br />여러 사례를 보면 = 두 번.<br /><br />▶IN A SERIES OF CASES = Thrice<br />일련의 사례들을 보면 = 세 번.<br /><br />▶IT IS BELIEVED THAT = I think.<br />…라고 추정되어지며 = 내 생각에는.<br /><br />▶IT IS GENERALLY BELIEVED THAT = A couple of other guys think so too.<br />일반적으로 받아들여지듯이 = 나 말고도 몇 명 더 그렇게 생각한다.<br /><br />▶CORRECT WITHIN AN ORDER OF MAGNITUDE = Wrong.<br />오차를 허용하는 범위 내에서 참이며 = 틀렸다.<br /><br />▶ACCORDING TO STATISTICAL ANALYSIS = Rumorhas it.<br />통계학적 분석에 따르면 = 소문에 따르면,<br /><br />▶A STATISTICALLY ORIENTED PROJETION OF THE SIGNIFICANCE OF THESE FINDINGS = A wild guess.<br />이 실험결과를 통계학적 관점에 따라 해석해 보면 = 적당히 때려맞춰 보면.<br /><br />▶A CAREFUL ANALYSIS OF OBTAINABLE DATA = Three pages of notes were obliterated when I knocked over a glass of beer.<br />데이터 중에서 입수 가능한 것들을 조심스럽게 분석해 보면 = 맥주를 엎지르는 바람에 데이터를 적은 노트 3장을 날려먹었다.<br /><br />▶ITIS CLEAR THAT MUCH ADDITIONAL WORK WILL BE REQUIRED BEFORE A COMPLETE UNDERSTANDING OF THIS PHENOMENON OCCURS = I don't understand it.<br />이 현상에 대한 완벽한 이해가 이루어지기 위해서는 후속적인 연구 작업이 이루어져야 할 것이라고 생각되는 바이며 = 이해할 수 없었다.<br /><br />▶AFTER ADDITIONAL STUDY BY MY COLLEAGUES = They don't understand it either.<br />동료 학자들에 의한 추가적 연구가 이루어진 다음에 = 그들도 역시 이해하지 못했다.<br /><br />▶THANKS ARE DUE TO JOE BLOTZ FOR ASSISTANCE WITH THE EXPERIMENT AND TO ANDREA SCHAEFFER FOR VALUABLE DISCUSSIONS = Mr. Blotz did the work and Ms. Shaeffer explained to me what it meant.<br />실험에 도움을 준 Joe Blotz와 의미있는 토론에 동참해 준 Andrea Schaeffer에게 감사드립니다 = 실험은 Blotz군이 다 했고, 그 실험이 도대체 뭐하는 건지 Schaeffer 양이 모두 설명해 주었다.<br /><br />▶A HIGHLY SIGNIFICANT AREA FOR EXPLORATORY STUDY = A totally useless topic selected by my committee.<br />탐구할만한 가치를 갖는 매우 의미있는 분야라고 생각되며 = 학회에서 정해준, 아무짝에도 쓸모없는 연구주제.<br /><br />▶IT IS HOPED THAT THIS STUDY WILL STIMULATE FURTHER INVESTIGATION IN THIS FIELD = I quit.<br />저의 논문이 이 분야에 있어서의 추가적 연구들에 자극이 되기를 바랍니다 = 저는 그만둘래요. <br /><br />출처: 불명~<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-49861629681604583532009-09-02T21:05:00.000+09:002011-01-29T20:00:47.398+09:00Appliance Creator을 이용하여 ThinCrust를 빌드하기Appliance Builder로 여러가지가 존재하지만 rPath를 일단 유료고 오픈소스가 아니기 때문에 오픈소스이면서 무료인 ThinCrust에 대하여 알아보는 시간을 가졌다.<br /><br />일단은 Appliance Creator을 이용하여 ThinCrust를 빌드하는 과정에 대하여 간단히 알아보도록 하자.<br /><br />Appliance Creator Tool와 kickstart 파일을 이용하여 AOS(Appliance Operating System)이나 custom appliance들을 빌드 해낼 수가 있다.<br /><br />이것을 진행하기 위하여 appliance-tools 패키지와 virt tools를 설치하여 가상화된 appliance들을 실행할 수 있어야 한다. 하지만 실제 환경구축시에는 F-10및 spin-sickstart를 설치할것을 권장한다.<br /><br />1. virt tools를 yum을 이용하여 설치한다.<br /><div style="border: 1px dashed rgb(178, 232, 237); padding: 10px; background-color: rgb(225, 253, 255);"># yum install qemu kvm libvirt libvirt-python python-virtinst virt-manager virt-viewer</div><br />2. 최신 spin-kickstart를 설치한다.<br /><div style="border: 1px dashed rgb(178, 232, 237); padding: 10px; background-color: rgb(225, 253, 255);"># yum install spin-kickstarts</div><br />3. 최신 appliance-tools를 설치한다.<br /><div style="border: 1px dashed rgb(178, 232, 237); padding: 10px; background-color: rgb(225, 253, 255);"># yum install appliance-tools</div><br />4. 공식사이트에서 제공중인 kickstart 파일을 이용하여 appliance를 빌드한다.<br /><div style="border: 1px dashed rgb(178, 232, 237); padding: 10px; background-color: rgb(225, 253, 255);"># appliance-creator -n thincrust --config /usr/share/spin-kickstarts/fedora-aos.ks</div><br />5. libvirt를 이용하여 image를 런칭한다.<br /><div style="border: 1px dashed rgb(178, 232, 237); padding: 10px; background-color: rgb(225, 253, 255);"># virt-image thincrust.xml</div><br />6. 실제 image가 실행 중인지를 파악하기 위하여 virsh list를 실행해본다.<br />7. 직접 appliance에 접속하여 정확히 작동하는지 시도 해본다.<br /><div style="border: 1px dashed rgb(178, 232, 237); padding: 10px; background-color: rgb(225, 253, 255);"># virt-viewer IDNUM </div><br />출처: http://thincrust.org/<br /><br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-53627938403308359052009-08-25T16:15:00.000+09:002011-01-29T20:00:43.535+09:00WINS 서버 구축 및 설정인터넷 연결을 공유하기 위하여 집에서 두대의 컴퓨터로 인트라넷을 구성하거나 전 세게적으로 퍼져있는 인터넷을 이용하기 위해서는 두 가지의 기본적인 문제를 해결해야 한다. 첫번째 문제는 네트워크에 참여하는 모든 시스템에는 고유한 IP주소와 기본 라우터 주소와 도메인 이름, 가장 가까운 DNS 서버의 위치등을 알 수 있도록 도움이 필요하다는 것이다. 그리고 두번째 문제는 네트워크를 통해서 경로를 찾을 수 있도록 도움이 필요하다는 것이다.<br /><br />TCP/IP 기반의 Microsoft OS 기반 네트워크는 DHCP, WINS의 세 가지 기술을 이용하여 IP주소를 구성하고 이름을 관리한다.<br /><br />이 글에서는 주로 WINS만 간략히 소개하고 그 설정법에 대하여 알아보는것이므로 DHCP나 DNS관련 자료를 다른 곳에서 찾아보길 바란다.<br /><br />사실 WINS와 NetBIOS, DNS, Winsock등은 모두 이름 풀이에 사용이 되어지는 개념이다.<br /><br /><div style="border: 1px dashed rgb(183, 224, 169); padding: 10px; background-color: rgb(211, 238, 202);">ping server.dpnm.com<br />net use * \\server\mainshr</div><br />ping 명령어에서는 이 서버를 server.dpnm.com이라고 하고, net use 명령어에서는 같은 서버를 server로 부르고 있다. 이 차이점을 잘 새겨둬야 한다. <br /><br />ping은 Winsock이라는 인터넷 지향적인 프로그래밍 인터페이스에 의존한다. 그리고 ping을 실행하는 프로그램은 일반적으로 ping명령어를 실행하기 위해서 DNS 서버에 엑세스해야 한다.<br /><br />net use는 NetBIOS라는 전통적인 Microsoft 네트워크 지향 프로그래밍 인터페이스에 의존한다. 그리고 net use를 실행하는 프로그램은 일반적으로 net use 명령어를 실행하기 위해 WINS 서버에 엑세스해야 한다.<br /><br /><span style="font-weight: bold;">정의된 이름 풀이</span><br />NetBIOS와 Winsock의 공통점은 사용하기 쉬운 컴퓨터 이름을 지원한다는 것이다. 인터넷과 사실상 모든 Server 2003 네트워크 들은 고유한 IP 주소를 가지고 있지만 아무도 서버를 확인할 때 IP주소를 사용하는 것을 원하지 않는다. 또한 아이피로만 서버를 명명하는것이 유일성을 보장하는데는 좋을지 몰라도 사람들한테 기억이 잘 안되어지고 그러인하여 여러가지 문제점들을 노출시킬 수도 있다.<br /><br /><span style="font-weight: bold;">NetBIOS의 종류</span><br /><span style="font-weight: bold;">B 노드</span>: 이 방식은 다소 간단한 얷으로 단지 브로드캐스트를 하는 것이다. NetBIOS 이름을 IP주소로 풀기 위해 브로드캐스트를 사용하는 컴퓨터를 REC에서는 B노드라고 한다. 따라서 server을 찾으려고 하는 PC가 B노드를 사용한다면 단지 server라는 이름을 가진 컴퓨터만 조회하게 된다.<br /><br /><span style="font-weight: bold;">P 노드</span>: 어떤 형태의 이름 서버를 만들고 이를 이용하는 것이다. 그렇게 되면 컴퓨터가 다른 컴퓨터의 일므을 해석할 필요가 있다면 이름 서버 소프트웨어가 운영중인 컴퓨터로 지점간 메시지를 보내기만 하면 된다. 지점간 메시지는 라우터 너머로 재전송되므로 이러한 두번째 방법은 라우터가 잇는 네트워크 환경에서도 사용할 수 있다.<br /><br /><span style="font-weight: bold;">M 노드</span>: TCP/IP에서 NetBIOS 이름 풀이를 하는 것이다. 이것은 브로드캐스트와 NBNS로 연결되는 지점간 통신을 함께 사용한다. M노드에서는 최초에 브로드캐스팅(B노드)으로 이름 풀이를 하고 실패하면 그 다음에 NBNS로 직접 통신한다.<br /><br /><span style="font-weight: bold;">H 노드</span>: H노드에서는 최조에 NBNS에 연결을 시도하고, 실패하면 브로드캐스트를 한다.<br /><br /><span style="font-weight: bold;">WINS서버 설치하기</span><br /><br />1. 제어판을 연다(시작/제어판/프로그램 추가/제거)<br />2. windows 구성 요소 추가/제거를 클릭하고 Windows 구성 요소 마법사가 시작할 때까지 잠시 기다린다.<br />3. 네트워킹 서비스를 클릭하고 자세히 버튼을 누른다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XNVWUIX05I.png" /><br /><br />4. WINS(윈도우 인터넷 이름 서비스) 옆의 체크박스를 클릭한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XW5z3M3kHH.png" /><br /><br />5. 확인을 클릭하여 서비스를 설치한다.<br />6. 다음을 클릭하여 서비스를 설치한다.<br />7. 마침을 클릭하여 마법사 창을 닫는다.<br />8. 닫기를 클릭하여 windows 구성요소 추가/제거를 닫는다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XYiHyomIO8.png" /><br /><br />설치가 완료되면 시작/관리 도구에서 WINS를 제어할 수 있는 새로운 스냅인을 볼 수 있을 것이다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XWK0RhwA2L.png" /><br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-75102788142210276212009-08-24T16:02:00.000+09:002011-01-29T20:00:43.490+09:00Useful WebSite of Cloud ComputingFollowing Links are for useful WebSite which is related to Cloud Computing Field.<br /><br />Cloud Computing Interoperability Forum (CCIF)<br /><a target="_blank" href="http://groups.google.com/group/cloudforum/">http://groups.google.com/group/cloudforum/</a><br /><br />Cloud Computing Manifesto(OCM)<br /><a target="_blank" href="http://www.opencloudmanifesto.org/">http://www.opencloudmanifesto.org/</a><br /><br />Open Cloud Manifesto General Discussion Group<br /><a target="_blank" href="http://groups.google.com/group/opencloud/">http://groups.google.com/group/opencloud/</a><br /><br />Open Cloud Manifesto LinkedIn Group<br /><a target="_blank" href="http://www.linkedin.com/groupInvitation?gid=1864064&sharedKey=">http://www.linkedin.com/groupInvitation?gid=1864064&sharedKey=</a><br /><br />List of Standards Organizations Working on Cloud Computing<br /><a target="_blank" href="http://cloud-standards.org/">http://cloud-standards.org/</a><br /><br />Cloud Security Alliance(CSA)<br /><a target="_blank" href="http://www.cloudsecurityalliance.org/">http://www.cloudsecurityalliance.org/</a><br /><br />Distributed Management Task Force(DMTF)<br /><a target="_blank" href="http://www.dmtf.org/">http://www.dmtf.org/</a><br /><br />The European Telecommunications Standards Institute (ETSI)<br /><a target="_blank" href="http://www.etsi.org/">http://www.etsi.org/</a><br /><br />National Institute of Standards and Technology (NIST)<br /><a target="_blank" href="http://csrc.nist.gov/groups/SNS/cloud-computing/index.html">http://csrc.nist.gov/groups/SNS/cloud-computing/index.html</a><br /><br />Open Grid Forum (OGF)<br /><a target="_blank" href="http://www.ogf.org/">http://www.ogf.org/</a><br /><br />Open Cloud Computing Interface (OCCI) Working Group<br /><a target="_blank" href="http://www.occi-wg.org/">http://www.occi-wg.org/</a><br /><br />Object Management Group (OMG)<br /><a target="_blank" href="http://www.omg.org/">http://www.omg.org/</a><br /><br />Storage Networking Industry Association (SNIA)<br /><a target="_blank" href="http://www.snia.org/home">http://www.snia.org/home</a><br /><br />Open Cloud Consortium (OCC)<br /><a target="_blank" href="http://www.opencloudconsortium.org/">http://www.opencloudconsortium.org/</a><br /><br />Organization for the Advancement of Structured Information Standards (OASIS)<br /><a target="_blank" href="http://www.oasis-open.org/">http://www.oasis-open.org/</a><br /><br />Rest of websites URL would be added later...<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-46297752587548178542009-08-16T17:35:00.000+09:002011-01-29T20:00:43.382+09:00Ubuntu 9.04에 테마 설치하기1. 소프트웨어 소스 주소를 업데이트 한다.<br /><br /><div style="border: 1px dashed rgb(204, 204, 204); padding: 10px; background-color: rgb(244, 244, 244);">sudo gedit /etc/apt/sources.list</div><br />아래 내용을 추가한다.<br /><br /><div style="border: 1px dashed rgb(204, 204, 204); padding: 10px; background-color: rgb(244, 244, 244);">deb http://ppa.launchpad.net/bisigi/ppa/ubuntu jaunty main<br />deb-src http://ppa.launchpad.net/bisigi/ppa/ubuntu jaunty main</div><br />2. GPG키를 추가한다.<br /><br /><div style="border: 1px dashed rgb(204, 204, 204); padding: 10px; background-color: rgb(244, 244, 244);">sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1781bd45c4c3275a34bb6aec6e871c4a881574de<br /></div><br />3. 소스 서버에서 새로운 소프트웨어를 업데이트 한다.<br /><br /><div style="border: 1px dashed rgb(204, 204, 204); padding: 10px; background-color: rgb(244, 244, 244);">sudo apt-get update</div><br />4. 모든 테마를 한방에 설치한다.<br /><br /><div style="border: 1px dashed rgb(204, 204, 204); padding: 10px; background-color: rgb(244, 244, 244);">sudo apt-get install zgegblog-themes</div><br />테마 전체를 설치하고 싶지 않으면 아래 명령어를 통하여 개별 설치도 가능하다.<br /><br /><div style="border: 1px dashed rgb(204, 204, 204); padding: 10px; background-color: rgb(244, 244, 244);">sudo apt-get install showtime-theme<br />sudo apt-get install balanzan-theme<br />sudo apt-get install infinity-theme<br />sudo apt-get install wild-shine-theme<br />sudo apt-get install exotic-theme<br />sudo apt-get install tropical-theme<br />sudo apt-get install bamboo-zen-theme<br />sudo apt-get install ubuntu-sunrise-theme<br />sudo apt-get install aquadreams-theme</div><br />테마 프리뷰<br /><br /><span style="font-weight: bold;">Showtime</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XPmafbUbKx.jpg" /><br /><br /><span style="font-weight: bold;">Balanzan</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XGwPpKBGKg.jpg" /><br /><br /><span style="font-weight: bold;">Bamboo Zen</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XUxF41Wh9g.jpg" /><br /><br /><span style="font-weight: bold;">Exotic</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XaapVXmL1U.jpg" /><br /><br /><span style="font-weight: bold;">Aqua Dreams</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XMV7J9UwgX.jpg" /><br /><br /><span style="font-weight: bold;">Infinity</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XQxXYkmCHl.jpg" /><br /><br /><span style="font-weight: bold;">Tropical</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XPCOyEzyDa.jpg" /><br /><br /><span style="font-weight: bold;">Ubuntu sunrise</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XKr7a6SkQN.jpg" /><br /><br /><span style="font-weight: bold;">Wild shine</span><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XSMt0DRMCN.jpg" />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-80110624998578449082009-07-28T12:58:00.000+09:002011-01-29T20:00:43.305+09:00Teamcity 설치지속적인 통합에 대한 필요성이 증가하면서 최근에 많은 지속적 통합 툴이 등장하고 있다. 오픈 소스 기반으로 개발되는 지속적 통합 툴은 CruiseControl과 Hudson이 가장 많이 사용되고 있다. 최근에 등장한 Hudson도 설치와 설정이 편리하고 다양한 플러그인을 지원하여 많은 개발자들이 사용하고 있다. 상용 지속적 통합 툴로는 Atlassian에서 개발한 Bamboo와 JetBrains에서 개발한 Teamcity가 가장 많이 사용되고 있다. 오픈 소스로 개발하는 CruiseControl과 Hudson도 좋은 툴이지만 여기서는 Teamcity를 이용하여 지속적 통합을 하는것을 예로 보여주겠다. Teamcity는 무료로 20명의 사용자까지 무료로 사용할 수 있으며, 설치와 설정이 쉽고 피드백 기능을 다양하게 지원하고 있어 여러모로 많이 편리하다.<br /><br /><span style="font-weight: bold;">Teamcity 다운로드</span><br />Teamcity 무료버전은 아래 주소로 가서 다운로드 받으면 되겠다.<br />http://www.jetbrains.com/teamcity/download<br />위주소로 가서 Free Professional Edition을 다운로드 받으면 된다.<br /><br /><span style="font-weight: bold;">Teamcity 설치하기</span><br />다운로드 받은 Teamcity 바이너리 설치파일을 더블 클릭하여 설치한다.<br /><br />Teamcity 설치 환영 화면에서 'Next'버튼을 누른다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XLHa2x1oGT.png" /><br /><br />Teamcity 라이선스 정책에 동의하는 화면에서 'I Agree' 버튼을 누른다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XX3hqf24Zb.png" /><br /><br />Teamcity 서버를 설치할 경로를 선택한 다음 'Next' 버튼을 누른다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XZHdxkDTAK.png" /><br /><br />윈도우 서비스에 Teamcity Build Agent와 Teamcity 서버를 등록할지의 여부를 결정한다. 기본은 Build Agent와 서버를 모두 서비스에 등록할 수 있게 체크된 상태이다.'Next' 버튼을 눌러 다음 화면으로 이동한다. 여기서 주의할점은 Teamcity WAS 서버가 기본으로 TOMCAT 서버를 사용함으로 만약 기존에 TOMCAT이 서버에 깔린 상태라면 충돌이 일어날수 있다. 충돌이 일어나지 않도록 기존에 톰캣 Listening포트를 변경하는것이 필요하겠다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XLebXeRK5Z.png" /><br /><br /><br />Teamcity에서 관리할 프로젝트와 각 프로젝트별 설정 정보를 관리하는 디렉토리를 선택한다. 디렉토리를 선택한 다음 'Next' 버튼을 누르면 설치가 시작된다.<br />마지막으로 Teamcity 서버가 사용할 포트를 설정한다. 기본값으로 설정된 7000을 그냥 사용하여 보자.<br /><br />이로써 Teamcity 설치가 완료된다. 설치완료후 기본 정보 설정이 필요한데 원하는 정보를 기입하고 저장한다. 기본으로 Admin계정을 생성하여야 할것이다.<br /><br />참고문헌: 자바 프로젝트 필수 유틸리티<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-75902245839471232262009-07-21T21:25:00.000+09:002011-01-29T20:00:43.218+09:00Trac 설치 및 기본 플러그인 설치와 설정Trac은 미국항공우주국의 분사추진 연구소에서 사용할 정도로 전 세계적으로 널리 사용되고 있다. Trac은 아래와 같은 특점이 있음으로 하여 많은 프로젝트를 진행하는 개발자들이 애용한다.<br /><br /><ol><li>오픈 소스로 작성되었기 때문에 언제든지 사용자가 소스를 수정하여 사용할 수있다. 참고로 Trac은 Python이라고 불리우는 언어로 만들어졌다.</li><li>Trac은 문서, SVN, WBS 등 모든것을 웹 기반으로 관리할 수 있다. 웹 브라우저로 프로젝트 정보에 언제 어디서든 접근할 수 있으며, 누구라도 수정할 수 있다. 히스토리 관리가 가능하기 때문에 변경사항을 추적하기 쉽다.</li><li>SVN, VSS, CVS 등 여러 버전 관리 시스템과 연동할 수 있다.</li></ol><br /><span style="font-weight: bold;">Trac의 설치</span><br />Trac은 Python으로 만들어져 있기 때문에 Python언어를 잘 모르는 개발자들한테는 아주 생소한 존재일지도 모른다. Trac을 설치하려면 Apache, Python, mod_python, pysqlite 와 같이 여러 개의 소프트웨어를 함께 설치해야 하기에 좀 번거롭다.<br /><br style="font-weight: bold;"><span style="font-weight: bold;">1. 아파치 서버 설치</span><br />Apache 웹 서버 설치는 가장 무난하므로 여기서는 생략 하겠다. 단 집고 넘어갈 점이라면 Apache 서버 설치경로 인데 나의 경우 D 드라이버로 정했다.<br /><br /><span style="font-weight: bold;">2. Python 설치</span><br />Trac은 Python으로 개발했으므로 Python을 설치해야 한다.<br /><ul><li>사이트: http://www.python.org</li><li>다운로드: http://www.python.org/download/</li><li>다운로드 할 파일: Python 2.5.4 Windows installer (Windows binary -- does not include source)<br /></li><li>설치 파일: python-2.5.4.msi</li></ul>Python 설치 파일을 클릭하면 Python 프로그램의 사용자를 지정하는 화면이 나타난다. 모든 사용자가 사용할 수 있게 Install for all users를 선택한 다음 'Next' 버튼을 눌러 다음 화면으로 이동한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XG9lDHnPNN.png" /><br /><br />Python을 설치할 디렉토리를 지정하는 화면에서 C:\Python25를 선택한 다음 'Next'버튼을 누른다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XRCE6LBSXp.png" /><br /><br />설치 할 Python의 구성 요소를 선택하는 화면이다. 기본 설정을 그대로 사용한다. 기본값으로 Register Extensions, Tcl/Tk, Documentation, Utility Scripts, Test suite 등을 그대로 설치한다. 'Next' 버튼을 누르면 Python설치가 진행된다. 몇초간 걸리므로 내심하게 기다려주면 되겠다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XJ0cnslAFh.png" /><br /><br />오케이, 아래와 같은 창이 뜨면 설치가 성공한것이다. 잊지 말것은 이것은 Windows, DOS용 Python이다. Linux용은 다른 방식으로 설치가 될것이다.(시간나면 Linux용 설치방법까지 업데이트 할 계획이다.) 'Finish'를 기분좋게 클릭하고 설치를 완료하자.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XJqnr6STRN.png" /><br /><br /><span style="font-weight: bold;">3. mod_python 설치</span><br />Apache에서 Python코드를 실행하는 방법은 CGI방식과 Apache 모듈 방식이 있다. (이점은 PHP와 흡사하다, PHP와 Apache를 연동하였던 분이라면 쉽게 무난하게 이해가 가능할 것이다.) 그러나 CGI방식은 속도가 느리므로 크게 권장하지 않고 일반적으로 mod_python Apache모듈을 설치해 모듈 방식으로 Python 코드를 실행한다. 그러기 위헤서는 mod_python을 설치하는 과정이 필요하다. 결국 이 과정자체가 설치이면서 Python과 Apache를 연동하는 과정이기도 하다.<br /><ul><li>사이트: http://www.modpython.org</li><li>다운로드: http://httpd.apache.org/modules/python-download.cgi</li><li>설치 파일: mod_python-3.3.1.win32-py2.5-Apache2.2.exe</li></ul>위에 링크에는 Apache 2.2.용 mod python을 명시했는데 사실상 Apache버전에 마추어 적당한 mod python을 다운로드 받어야 한다.<br /><br />mod_python 설치 파일을 실행하면 설치 화면이 나타난다. 다음을 눌러 이동한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XXX22qma70.png" /><br /><br />Python이 설치되어 있다면 Python이 설치된 디렉토리 경로를 확인할 수 있다. 레지스터리에 Python설치관련 정보가 남아있으므로 무난히 찾을수가 있겠다. 모듈이 설치 될 기본 경로는 Python Installation Path/Lib/site-packages 이다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XB4GCH246R.png" /><br /><br />설치 준비 화면이다. 다음을 누르면 설치가 진행된다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XG23vwjE2j.png" /><br /><br />mod_python을 설치하는 중 Apache가 설치된 경로를 지정하는 다이얼로그박스가 뜰것이다. 앞에서 Apache를 설치한 디렉토리를 정해주고 '마침' 버튼을 누르면 모든 설치가 무난히 완료 될것이다.<br />mod_python을 설치한 후 Apache 설정 파일에 mod_python.so 모듈을 추가해야 한다. Apache를 동적 모듈 로드 모드로 설치를 했으면 이 부분도 무난히 진행이 될것이다. 아파치 설치 디렉토리/conf/httpd.conf 파일을 메모장을 열고 다음과 같이 mod_python.so 파일을 설정한다. httpd.conf 파일을 보면 이미 Dynamic Shared Object(DSO)파일이 설정이 되어진것을 확인 할 수가 있겠다. 그 아래에 우리가 넣은 라이브러리만 추가해주면 된다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XSR9iwg2vM.png" /><br /><br />Apache 서비스를 재시작해주고 Apache 서비스가 정상적으로 시작되면 mod_python이 성공적으로 설치가 되었음을 의미한다.<br /><br /><span style="font-weight: bold;">4. Genshi 설치</span><br />Genshi는 PHP진영에서 사용되는 smarty나 JAVA진영에서 사용되는 Velocity와 같은 템플릿 엔진이다. 단 Genshi는 Python언어 용이라는 점이다. 우리가 설치할 Trac의 버전(0.11) Genshi는 디자인 템플릿 엔진으로 사용함으로 Trac을 돌리기 위해서는 필수로 설치를 해줘야만 한다.<br /><ul><li>사이트: http://genshi.edgewall.org/</li><li>다운로드: http://genshi.edgewall.org/wiki/Download</li><li>설치 파일: Genshi-0.5.1.win32-py2.5.exe</li></ul>Genshi 설치 파일을 클릭하면 Genshi 설치 화면이 나타난다. '다음' 버튼을 눌러 이동한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XDaZhv0R5m.png" /><br /><br />mod python을 설치했을 때 처럼 python경로를 설정해주는 창이 뜰것인데 기본으로 설정된 사항을 묵인하고 '다음' 버튼을 누른다. 그다음도 몇몇 창이 뜰것인데 모두 묵인으로 '다음' 버튼을 클릭하여 설치를 진행한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XQVFNSyUKt.png" /><br /><br /><span style="font-weight: bold;">5. pysqlite 설치</span><br />Trac은 sqlite DBMS를 사용한다. pysqlite는 Python언어환경에서 sqlite DBMS접근을 지원하도록 만들어진 라이브러리이다. JAVA에서 놓고보면 sqlite용 jdbc driver인 셈이다. Trac을 사용하려면 필수적으로 pysqlite를 설치해야만 한다. (참 필요로 하는 라이브러리가 참 많네...)<br /><ul><li>사이트: http://trac.edgewall.org/wiki/PySqlite</li><li>다운로드: http://oss.itsystementwicklung.de/trac/pysqlite/wiki#Downloads</li><li>설치 파일: pysqlite-2.5.5.win32-py2.5.exe</li></ul>pysqlite 설치 파일을 클릭하면 pysqlite 설치 화면이 나타난다. '다음' 버튼을 눌러 이동한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XfUTYcQQXT.png" /><br /><br />mod python을 설치했을 때 처럼 python경로를 설정해주는 창이 뜰것인데 기본으로 설정된 사항을 묵인하고 '다음' 버튼을 누른다. 그다음도 몇몇 창이 뜰것인데 모두 묵인으로 '다음' 버튼을 클릭하여 설치를 진행한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XLABoXHqcE.png" /><br /><br /><span style="font-weight: bold;">6. setuptools 설치</span><br />setuptools는 Python언어로 만들어진 툴인데 Python으로 만들어진 프로그램들을 자동으로 다운로드 + 설치 해준다. setuptools는 Trac관련 plugins를 설치할 때 "아주" 유용함으로 필히 설치를 해두도록 하자.<br /><ul><li>사이트: http://peak.telecommunity.com/DevCenter/setuptools</li><li>다운로드: http://peak.telecommunity.com/dist/ez_setup.py</li><li>설치 파일: ez_setup.py</li></ul>다운로드 받은 파일에서부터 알수 있다 싶이 이 프로그램은 python으로 만들어진 프로그램이라 확장자가 py로 되어있다. 이렇게 py확장자를 가진 파일들은 python 을 이용하여 실행해야 한다. Python설치 디렉토리의 bin폴더에 가서<br />python.exe ez_setup.py<br />하면 되겠다. 만약 python 기본디렉토리를 path에 잡아 놓은 상태라면 구지 python설치경로/bin까지 가지 않아도 되겠다. 아래 그림에서처럼 메시지가 뜨면 설치가 성공한것이다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XFZ1f2Grk2.png" /><br /><br /><span style="font-weight: bold;">7. Trac 설치</span><br />지금까지 설치한것은 이번에 설치하게 될 Trac을 설치하기 위하 초기작업이라고 보면 되겠다.(Trac이라는 녀석 참 까탈스럽기도 하다.ㅡㅡ;) 본격적으로 Trac 설치를 해보자~<br /><ul><li>사이트: http://trac.edgewall.org</li><li>다운로드: http://trac.edgewall.org/wiki/TracDownload</li><li>설치 파일: Trac-0.11.4.win32.exe</li></ul>
Trac 설치 파일을 실행하면 Trac 설치 화면이 나타난다. '다음' 버튼을 눌러 설치를 진행한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XM3prN1InV.png" /><br /><br />mod python을 설치했을 때 처럼 python경로를 설정해주는 창이 뜰것인데 기본으로 설정된 사항을 묵인하고 '다음' 버튼을 누른다. 그다음도 몇몇 창이 뜰것인데 모두 묵인으로 '다음' 버튼을 클릭하여 설치를 진행한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XdKe37CRyi.png" /><br /><br />8. 새 프로젝트 생성<br />샘플용으로 새 프로젝트를 생성해 보자. 새로 생성할 프로젝트명을 sample로 정하고 생성을 시도하겠다. Trac에서 새로운 프로젝트를 생성하려면 PYTHON_설치디렉토리\Scripts\trac-admin.exe 프로제트_REPOSITORY initenv 명령어를 실행한다. 우선 먼저 Trac 프로젝트를 관리하는 디렉토리를 생성한다. 나의 경우는 sample이라는 이름으로 E:\Trac\sample 이라는 경로에 빈 폴더를 만들고 Trac 프로젝트를 관리하겠다. 디렉토리를 생성한 후 sample 프로젝트는 trac-admin.exe의 initenv 명령을 실행하여 생성한다. 명령 프롬프트에서 아래 명령을 실행하여 sample 프로젝트를 생성한다.<br />PYTHON_설치디렉토리\Scripts\trac-admin.exe E:\Tracsample initenv<br />위 명령어를 실행하면 다음과 같은 과정으로 sample프로젝트가 생성된다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XU7uOZkaO0.png" /><br /><br />연결할 데이터베이스를 설정한다. 기본 설정을 사용하므로 엔터를 누른다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XP9XZ7CTZc.png" /><br /><br />사용할 버전 관리 시스템의 종류를 설정한다. 나의 경우는 SVN을 사용할 것이기 때문에 그냥 엔터를 치고 넘어간다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XQbYSLxbjB.png" /><br /><br />버전 관리 시스템의 저장소를 설정한다. sample 프로젝트의 저장소는 E:\Repository\sample로 설정한다. 버전 관리 시스템의 저장소로 설정한 E:\Repository\sample 디렉토리는 자동으로 생성되지 않는다. 이 디렉토리는 SVN 저장소를 다룰 때 생성한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XAJPiPThvL.png" /><br /><br />위 네가지 설정을 완료하면 Trac에서 사용할 sample 프로젝트가 생성된다. sample 프로젝트가 정상적으로 생성되면 E:\Trac\sample 디렉토리 아래에 여러가지 Trac에 관련된 디렉토리와 파일들이 생성되겠다.<br /><br /><span style="font-weight: bold;">Apache에 VirtualHost 추가하기</span><br />sample 프로젝트를 생성한 다음에 설정할 부분은 Apache에서 sample 프로젝트를 인식할 수 있게 VirtualHost를 추가하는 것이다. Trac으로 생성하는 모든 프로젝트를 관리하려면 VirtualHost를 추가해야 한다. Apache 서버의 httpd-vhosts.conf 파일에 다음 설정을 추가한다.<br /><br /><VirtualHost *:80><br /> <Location /trac><br /> SetHandler mod_python<br /> PythonHandler trac.web.modpython_frontend<br /> PythonOption TracEnvParentDir E:\Trac<br /> PythonOption TracUriRoot /trac<br /> </Location><br /> <LocationMatch "/trac/[^/]+/login"><br /> AuthType Basic<br /> AuthName "Trac"<br /> AuthUserFile E:\Repository\htpasswd<br /> Require valid-user<br /> </LocationMatch><br /></VirtualHost><br /><br />위 Apache 설정을 보면 첫 번째 <Location /trac> 엘리먼트는 /trac URL로 접근할 때 앞에서 설치한 mod_python 모듈을 사용했으며, E:\Trac 디렉토리를 기본 디렉토리로 설정하였다.<br /><br />두번째 <LocationMatch "/trac/[^/]+/login"> 엘리먼트는 /trac/sample/login 과 같은 URL에 대한 요청은 인증이 필요하다고 설정한다. E:\Repository\htpasswd 파일은 인증할 때 사용할 파일로 설정하였다. htpasswd를 생성하는 방법은 아래에 언급할것이니 내심하게 쭉 내려보기 바란다.<br /><br />그리고 httpd.conf파일중에서 httpd-vhosts.conf 파일 로드 해주는 라인중 앞 주석문을 제거한다. 제거후 형태는 아래와 같이 되겠다.<br /><br /># Virtual hosts<br />Include conf/extra/httpd-vhosts.conf<br /><br />Apache 설정을 완료한 다음 Apache Service를 다시 시작한다.<br /><br />참고문헌: 자바 프로젝트 필수 유틸리티<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-60000327344285444252009-07-16T11:51:00.000+09:002011-01-29T20:00:43.159+09:00Eclipse(MyEclipse) 언어팩 다운로드 주소Eclipse (MyEclipse) 언어팩 다운로드 주소...<br /><br />Eclipse 3.4 ganymede LP 업데이트 주소<br />http://download.eclipse.org/technology/babel/update-site/ganymede/<br /><br />Eclipse 3.5 galileo LP 업데이트 주소<br />http://download.eclipse.org/technology/babel/update-site/galileo/<br /><br /><br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-39804270957228883582009-06-08T00:56:00.000+09:002011-01-29T20:00:43.077+09:00리눅스에서 노트북 내장 스피커가 나오지 않을 때VAIO FZ-26L에서 현재 우분투를 사용중인데 이어폰을 꽂았는데도 내장스피커와 이어폰에서 동시에 소리가 나오는 경우와 아니면 아예 어떤 소리도 나오지 않는 경우는 모두 두가지이다.<div><br /></div><div><div>이 문제는 Intel onboard HDA (High Definition Audio)에서 발생하는데 sound stack (각 output의 배열)을 제대로 찾지 못해 발생하는 문제라고 한다.</div><div><br /></div><div><div>일반적으로 /etc/modprobe.d/alsa-base.conf 의 가장 아랫 줄에 </div><div><br /></div><div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);"><font class="Apple-style-span" color="#ffffff">options snd-hda-intel model=3stack 이나 options snd-hda-intel model=6stack</font></div><div><br /></div><div>를 추가함으로써 문제를 해결할 수 있었다. </div><div>하지만 HDA 사운드카드의 경우 그 종류에 따라 이 문제의 해결에 영향을 미치는 요소가 다양하기 때문에 해결이 쉽지 않다. </div><div><br /></div><div>우선</div><div><br /></div><div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);"><font class="Apple-style-span" color="#ffffff">cat /proc/asound/card0/codec#* | grep Codec 이나 aplay -l </font></div><div><br /></div><div>을 통해서 카드나 칩의 종류를 파악한다.</div><div><br /></div><div>ex)</div><div>Codec</div><div>Codec: Realtek ALC880</div><div>Codec: Generic 11c1 Si3054</div><div><br /></div><div><div>그 다음 아래 첨부된 리스트에서 해당하는 부분을 참조한다. </div><div>위에 보인 예시를 이용해 보면 ALC880을 아래 목록에서 찾고 </div><div><br /></div><div>그 다음 자기 컴퓨터에 맞는 모델이름을 사용하는 것이다. 만약 LG 노트북일 경우( 아래 lg가 있다. )</div><div><br /></div><div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);"><font class="Apple-style-span" color="#ffffff">options snd-hda-intel model=lg 를 /etc/modprobe.d/alsa-base </font></div><div><br /></div><div>가장 아랫 줄에 추가해 주면 된다.</div><div><br /></div><div>만약 작동하지 않는다면 ALC880 아래의 다른 줄의 모델 이름들을 사용해 본다. </div><div><br /></div><div style="border: 1px dotted rgb(128, 184, 136); padding: 10px; background-color: rgb(40, 86, 58);"><font class="Apple-style-span" color="#ffffff">options snd-hda-intel model=uniwill<br />options snd-hda-intel model=fujitsu<br />options snd-hda-intel model=tcl </font></div><div><br /></div><div>물론 이 과정을 되풀이 하면서 사운드설정에서 음소거가 되어 있는지 확인해 볼 필요가 있다.<br /><br />나의 경우는 options snd-hda-intel model=vaio 하니까 정확히 내장 및 이어폰 연결시 모두 소리가 정확히 출력 되었다.<br /></div></div></div></div>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com1tag:blogger.com,1999:blog-4883259849360805370.post-68779940291217424532009-06-07T11:57:00.000+09:002011-01-29T20:00:43.021+09:00Windows 새로 설치후 Ubuntu 부팅기능 복구 하기<div>우분투를 사용하다가 다른 파티션에 윈도우를 설치하면 기존에 깔린 우분트 부트 로더가 지워지는 사태가 발생한다.</div><div>특히나 요즘 매일이다 싶이 새로운 Windows 7 빌드가 출시되고 있는데 그때마다 우분투를 새로 설치하기는 여간 짜증나는 일이 아닐 수 없다. 그래서 별도로 Boot loader(System Commander)을 설치하고 사용 중인데 3사 부트 로더를 사용하는 상황에서 지워진 우분트 부트로더를 설치하는 방법을 소개할가 한다.</div><div><br /></div><div>1. Live CD로 새로 부팅한다.</div><div>2. 터미널을 열고 ROOT권한을 획득한다. sudo -i</div><div>3. grub를 입력한다.</div><div>4. find /boot/grub/stage1를 입력하여 루트 파티션이 설치된 상황을 알아본다. 나의 컴퓨터에서는 (hd0, 3)이 리턴 되고 있다.</div><div>5. root (hd0, 3)</div><div>6. 다음 setup(hd0, 3)를 입력하여 부트로더를 MBR이 아닌 Linux 루트 파티션에 재설치한다.</div><div>7. quit</div><div>8. shutdown -r now 재부팅...</div>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-4671848650591877712009-05-19T02:42:00.000+09:002011-01-29T20:00:42.881+09:00Ubuntu에 Nvidia 180 Graphic Driver 설치기현재 사용중인 노트북은 VAIO FZ-26L이고 독립 그래픽 카드를 내장하고 있다. 그래픽 카드는 nVidia 8400M GT (결함이 있는 카드. 흑~)인데 우분투를 깔면 그래픽 카드가 제대로 잡히지 않는다. 기본으로 제공되는 173을 깔아서 써보다가 2D 화면에서 버벅댐이 계속되어 결국 사용을 포기하고 공식사이트에 가보니 이미 180이 나온상태이다.(쿨럭~)<br /><br />구글링을 해본 결과 180에서 180이전 드라이버에서 존재하고 있던 버그들을 수정하고 또한 그래픽 가속을 지원하여 HD영상물 관람시 적은 CPU사용량을 자랑하고 있음을 알았다. 무조건 최신을 추구하는 나로써는 일단 새로운 그래픽 드라이버설치가 상당히 매혹적이였다. 일단 공식사이트에가서 Linux 64용 180.51 그래픽 카드를 다운로드 받는다. 확장명은 .run이다.<br /><br />그래픽 카드를 설치하기 위하여서는 컴파일시 필요한 툴들을 설치해야 한다.<br />먼저 커널버젼부터 알아보자.<br /><br /><div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);"><span style="color: rgb(255, 255, 255);">uname -a</span><br /></div><br />무난히 커널 버젼번호를 확인 할 수 있다. 여기서 출력된 버젼번호를 종이장에 잘 적어놓자. 잠시후에 사용할것이므로 그때가서 이건 머지 하고 딴소리 할래기 없다.ㅎㅎ<br /><br />그래픽 카드를 설치하기 위하여 컴파일러와 커널 헤더를 설치해보자.<br /><br /><div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);"><span style="color: rgb(255, 255, 255);">sudo aptitude install build-essential linux-headers-x.x.xx-xx-generic</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">(여기다 아까 uname으로 확인한 커널정보를 적는다.)</span><br /></div><br />Alt + Ctrl + F1을 살짝 누르고 GNOME(그놈...ㅡㅡ;)모드에서 벗어나온다.<br />까만 콘솔창이 뜨고 사용자 로그인을 해라고 커서가 눈을 껌벅일거다...<br /><br />임의의 계정으로 로그인하고 sudo -i 를 이용하여 root 모드로 진입하자.<br /><br /><div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);"><span style="color: rgb(255, 255, 255);">/etc/init.d/gdm stop</span><br /></div><br />GNOME 서비스를 내린다.<br /><br />아까 nVidia그래픽 카드를 다운로드 받은 폴더로 이동하여<br /><br /><div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);"><span style="color: rgb(255, 255, 255);">sh ./NVIDIA-Linux-x86-180.51-pkg2.run</span><br /></div><br />실행하고 드라이버 설치를 시도한다. 설치시 한번정도 워닝이 뜰것이다. 무시하고 그냥 넘어간다...<br /><br />shutdown reboot -n (아니면 shutdown -r now) 로 재시작한다.<br /><br />부팅 완료후 sudo nvidia-settings를 이용하여 적절히 값들을 세팅한다.<br /><br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-27926221876181990982009-05-17T14:47:00.000+09:002011-01-29T20:00:42.749+09:00윈도우 7 작업표시줄 윈도우 탐색기 특정된 폴더로 지정<div style="padding: 10px; background-color: rgb(93, 93, 93);"><span style="color: rgb(255, 255, 255); font-weight: bold;">윈도우 7 작업표시줄 윈도우 탐색기 특정된 폴더로 지정</span><br /></div><br />윈도우 7에서 탐색기 아이콘중 탐색기를 클릭하면 내 컴퓨터로 이동하는것이 아니라 라이브러리로 가버린다. 이것을 특정된 폴더로 가게끔 설정을 하려면 어떻게 할가?<br /><br />구글링하여 그 해답을 찾을 수 있었다.<br />모든 윈도우 탐색창을 꺼버린후 탐색기 아이콘에 마우스를 대고 Shift + 오른쪽 마우스 클릭을 하고서 속성을 클릭한다.<br /><br />속성창이 뜨면 아래와 같이 대상에 입력이 되어있을건데 이것을 다른 값으로 바꾸어 준다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XUQEEylk4t.png" /><br /><br /><img src="file:///C:/Users/GUNi/AppData/Local/Temp/moz-screenshot.jpg" alt="">대상부분을 아래와 같이 수정한다.<br /><br />%windir%\explorer.exe /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}<br /><br />다른 폴더를 설정하려면 아래 값을 참조하면 된다.<br /><br />My Computer<br />%SystemRoot%\explorer.exe /E,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}<br /><br />My Documents<br />%SystemRoot%\explorer.exe /N,::{450D8FBA-AD25-11D0-98A8-0800361B1103}<br /><br />Recycle Bin<br />%SystemRoot%\explorer.exe /N,::{645FF040-5081-101B-9F08-00AA002F954E}<br /><br />Network Neighborhood<br />%SystemRoot%\explorer.exe /N,::{208D2C60-3AEA-1069-A2D7-08002B30309D}<br /><br />Default Web Browser or Navigator (IE, Firefox, Safari, Google Chrome)<br />%SystemRoot%\explorer.exe /N,::{871C5380-42A0-1069-A2EA-08002B30309D}<br /><br />Computer Search Results Folder<br />%SystemRoot%\explorer.exe /N,::{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}<br /><br />Network Search Results Folder<br />%SystemRoot%\explorer.exe /N,::{E17D4FC0-5564-11D1-83F2-00A0C90DC849}<br /><br />Web Folders<br />%SystemRoot%\explorer.exe /N,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{BDEADF00-C265-11D0-BCED-00A0C90AB50F}<br /><br />Control Panel<br />%SystemRoot%\explorer.exe /N,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}<br /><br />Printers and Faxes<br />%SystemRoot%\explorer.exe /N,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}<br /><br />Scanners and Cameras<br />%SystemRoot%\explorer.exe /N,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{E211B736-43FD-11D1-9EFB-0000F8757FCD}<br /><br />Fonts<br />%SystemRoot%\explorer.exe /N,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524152}<br /><br />Network Connections or My Network Place<br />%SystemRoot%\explorer.exe /N,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}<br /><br />Administrative Tools<br />%SystemRoot%\explorer.exe /N,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524153}<br /><br />Tasks Scheduler<br />%SystemRoot%\explorer.exe /N,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-78182204625511456442009-05-16T19:55:00.000+09:002011-01-29T20:00:42.641+09:00Office 2010 설치기<div style="padding: 10px; background-color: rgb(93, 93, 93); font-weight: bold; color: rgb(255, 255, 255);">Office 2010 Technical Preview 1 설치기</div><br />Office 2010 Technical Preview 가 유출되어 설치를 해보았다. 빌드버젼은 번호는 14.0.4006.1010인데 Access 2010, Excel 2010, InfoPath 2010, OneNote 2010, Outlook 2010, PowerPoint 2010, Project 2010, Publisher 2010, SharePoint Designer 2010, SharePoint Workspace 2010, Visio 2010 및Word 2010 등 제품들을 포함하고 있다. 용량 또한 어마어마 하다. 무려 1.5G나 되는데 RTM버젼은 아무래도 2G이상은 되지 않을가 생각해본다.<br /><br />일단은 스샷만 첨부하도록 하겠다. 사용기는 며칠간 사용해보고 천천히 쓸가 한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XcqSv0mhAG.jpg" /><br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XSabgITaTb.jpg" /><br /><br />Technical Preview 라이선스의 동의!<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XVMg2LjYPX.jpg" /><br /><br />Office 2007과 설치과정이 동일하다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XTsudZAELw.jpg" /><br /><br />많은 설치항목들이 보인다. 필요한것들만 체크하여 선택했다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XB51462bjV.jpg" /><br /><br />커피한잔 마시고 오면 설치가 완료 된다.<br /><br /><span style="font-weight: bold;">Access 2010 Technical Preview</span><br />
<img src="http://ss.textcube.com/blog/0/6724/attach/XcCb6UkUIS.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XeckUAjBjY.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XAO5aawY2S.jpg" />
<br /><span style="font-weight: bold;"><br />Excel 2010 Technical Preview</span><br />
<img src="http://ss.textcube.com/blog/0/6724/attach/XeFwjDTDqV.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XIcIf4wRKa.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XOMnmBzqlR.jpg" />
<br /><span style="font-weight: bold;"><br />OneNote 2010 Technical Preview</span><br />
<img src="http://ss.textcube.com/blog/0/6724/attach/XV5do6FN2F.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XXaoqFWnTF.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XN5zcYDp8j.jpg" />
<br /><span style="font-weight: bold;"><br />Outlook 2010 Technical Preview</span><br />
<img src="http://ss.textcube.com/blog/0/6724/attach/XZ4EqDRZNJ.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XbWnt9Wezd.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XLCdb2CODq.jpg" />
<br /><span style="font-weight: bold;"><br />PowerPoint 2010 Technical Preview</span><br />
<img src="http://ss.textcube.com/blog/0/6724/attach/XEn2AkWQSz.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/Xfr6lHlWH6.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/Xe1CARV111.jpg" />
<br /><span style="font-weight: bold;"><br />Project 2010 Technical Preview</span><br />
<img src="http://ss.textcube.com/blog/0/6724/attach/XNTJRbS1NI.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XfJAvA0t5J.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/Xad469yyeP.jpg" />
<br /><span style="font-weight: bold;"><br />Visio 2010 Technical Preview</span><br />
<img src="http://ss.textcube.com/blog/0/6724/attach/XQunuuWNEf.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XKo7hn0hUJ.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XAaBcbm2N8.jpg" />
<br /><span style="font-weight: bold;"><br />Word 2010 Technical Preview</span><br />
<img src="http://ss.textcube.com/blog/0/6724/attach/XTSSXGFaMu.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XRMUXohAQT.jpg" />
<img src="http://ss.textcube.com/blog/0/6724/attach/XHN16N3Qmk.jpg" />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com2tag:blogger.com,1999:blog-4883259849360805370.post-84048579581207264642009-05-13T23:32:00.000+09:002011-01-29T20:00:42.527+09:00Ant 빌드 사용기 1 - Ant 소개 및 설치<script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'></script><br /><div class="imageblock center" style="text-align: center; clear: both;"><img src="http://ss.textcube.com/blog/0/6724/attach/XE0hCNzRRO.gif" style="width:250px;height:65px;" alt="" /></div><br />Java관련 프로젝트를 진행할 때 가장 머리 아픈 것이 소스 빌드이다. PHP나 ASP언어로 된 프로젝트 진행할때는 언어자체가 웹 기반이고 인터프리터 언어이기때문에 별도의 빌더가 필요없다. 하지만 Java 이 녀석은 다르다. 컴파일 언어이기때문에 별도의 빌드 과정이 필요하다. 하지만 Java파일 하나 작성할때마다 새롭게 컴파일하는것은 아주 비효율적이다. 만약 한 프로젝트에 포함된 파일이 몇백개이라고 할때 수정된 파일을 일일이 컴파일하는것도 여간 짜증나는 일이 아닐수 없다. 그래서 나온것이 Ant Builder이다. 앤트 빌더는 UNIX상 Make와 비슷한 방식으로 특정된 소스폴더속에 있는 소스파일들을 일일이 자동 컴파일 해준다. 뿐만아니라 웹프로젝트를 진행할 때 Source와 Configuration및 Binary파일을 판단하여 빌드하고 파일 종류에 따라 서로 다른 폴더에로 아웃풋도 가능하다. 또한 Maven처럼 따라야 하는 폴더구조가 너무 엄격하지 않기 때문에 여러모로 쉽게 접근하여 사용할 수 있다.<br /><br /><span style="font-weight: bold;">1. Ant 설치하기</span><br />Ant를 설치하기 위하여서는 우선 ant공식 사이트에 가서 최신버젼 ant를 받아온다. 사실 MyEclipse를 깔면 기본으로 ant에 관련된 라이브러리들을 끌어오긴 하지만 수동으로 설치해보겠다. http://ant.apache.org 에 가서 최신버젼 ant를 받아온다. 이 글을 쓰는 시점에서 출시된 최신버젼이 1.7.1이므로 이 버젼 바이너리 파일을 받아온다. 아카이브를 압축풀면 아래 그림에서와 같이 폴더가 구성되었음을 볼수 있다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XMwxvbwwqv.jpg" /><br /><br />우리가 일단 Eclipse에서 Ant의 Lib폴더를 등록해준다. Windows->Preferences->Ant->Runtime에 가보면 이미 Ant Home Entries에 Ant 라이브러리들이 등록이 되었음을 볼수 있다. 잠시 이 라이브러리들을 제거하고 우리가 다운로드한 Ant Lib를 classpath에 잡아준다. Add External JARs를 통하여 이 작업을 할 수 있다. 여기서는 세세히 설명하지 않도록 하겠다. <br />톰캣하고 연동하기 위하여 별도의 작업이 필요하다. Tomcat 이 설치된 디렉토리에 가보면 lib폴더가 보일것인데 거기서 catalina-ant.jar파일을 classpath에 등록한다. 또한 JDK lib중 tools.jar파일도 등록한다. 이로써 ant설치는 끝난다.<br /><br /><span style="font-weight: bold;">2. Ant 설정하기</span><br />Ant 설치된 후 실제 우리가 원하는 프로젝트를 원하는 방식에 따라서 빌드하기 위하여 여러가지 설정이 필요하다. 실제 설정파일에 대한 설명을 할라치면 복잡하고 또 모두 알아야만 빌드를 할수 있는 것도 아니므로 여기서는 템플릿 파일을 가져와 몇군데를 고치는것으로 진행하겠다.<br />Ant빌드파일을 다운로드 한 샘플에서 가져올수도 있지만 우리는 Tomcat컨테이너와 연동하여 빌드를 해야하기 때문에 Tomcat에서 제공해주는 샘플파일을 쓰겠다.<br />TOMCAT_HOME->webapps->docs->appdev->sample에서 가보면 build.xml파일이 보일것이다. 이파일을 복사하여 생성한 프로젝트 root에 넣는다. 다음 build.properties 파일을 새로 생성하고 tomcat 의 manager과 연동하기 위한 유저 id와 password를 적는다. <br /><div class="imageblock left" style="float: left; margin-right: 10px;"><img src="http://ss.textcube.com/blog/0/6724/attach/XaqRvW0XCw.jpg" style="width:318px;height:100px;" alt="" /></div><br /><br /><br /><br /><br /><br /><br />다음 build.xml파일을 열고서 아래와 같은 프로퍼티에 적절한 값을 입력해 넣는다.<br /><br /><div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64); color: rgb(255, 255, 255);"><property name="app.name" value="프로젝트 명"/><br /><property name="app.path" value="/${app.name}"/><br /><property name="app.version" value="0.1-dev"/><br /><property name="build.home" value="톰캣경로/webapps/프로젝트 명"/><br /><property name="catalina.home" value="톰캣경로"/><br /><property name="dist.home" value="${basedir}/dist"/><br /><property name="docs.home" value="${basedir}/docs"/><br /><property name="manager.url" value="http://localhost:8080/manager"/><br /><property name="src.home" value="${basedir}/src"/><br /><property name="web.home" value="${basedir}/WebRoot"/></div><br />정확히 설정하였으면 빌드를 시작해보자. 별도로 Java파일을 생성하고 build.xml파일을 연 상태에서 오른쪽 outline의 compile target을 클릭한다.<br /><br /><img src="http://ss.textcube.com/blog/0/6724/attach/XWZzYWEDbL.jpg" /><br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-60796993538910932472009-05-13T11:38:00.000+09:002011-01-29T20:00:42.386+09:00텍스트큐브로 블로그 이전 완료~기존에 티스토리에서 운영중인데 블로그를 정식으로 텍스트큐브로 이전 했다.<br />원인은 중국에서 티스토리의 접근을 막고 있다는 것...<br />또한 이를 제외하고도 여러가지 문제점들이 있었다.<br /><br />어쨌거나 데이터가 정확히 복구가 되니 시름은 놓은 상태이고, 나머지 작업은 스킨을 끄적대면서 나름 폼나는 블로그 스킨을 디자인 하는것이다. 기존에 티스토리에서 사용중이던 스킨도 나름 괜찮긴 한데...ㅠㅠ 그냥 덮어 씌우면 에러가 왕창~<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com1tag:blogger.com,1999:blog-4883259849360805370.post-18384578210370571822009-05-02T19:57:00.000+09:002011-01-29T20:00:42.317+09:00Windows 7 에서 Virtual XP 사용기<script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'></script><div style="padding: 10px; background-color: rgb(93, 93, 93);">
<span style="font-weight: bold; color: rgb(255, 255, 255);">인젠 Windows7 에서도 XP용 프로그램들을 사용할 수 있다~</span><br />
</div>
<br />
Windows 7용 Virtual XP 가 유출 되었다는 뉴스를 접하고 웹 검색을 거쳐 그 유출본을 다운로드 받었다. <br />
이미 노트북에 깔린 Windows 7은 7077 빌드 KOR 64비트이다. 아직 7100빌드 버젼은 한글판이 유출되지 않아 설치하지 않은 상태.(한글판을 고집하는 이유는 없다~ㅎㅎ) <br />
현재 Windows 7 7077버젼도 상당히 안정적으로 VAIO에서 돌아간다. 하지만 몇가지 필수 프로그램때문에 고생을 겪고 있다. 다름아닌 Windows 7를 지원하는 ICBC USB키 드라이버 아직 출시 하지 않아 인터넷 뱅킹을 할려면 별도로 다른 PC로 접근하여 작업을 해야하는 번거로움이 있다. (개인적으로 거의 PC게임을 하지 않으므로 게임호환성땜에 고생을 겪을 일은 없다.ㅎㅎ)<br />
<br />
일단 다운로드 받은 유출본을 보면 아래와 같이 5개 파일이 있다.<br />
<br />
<div class="imageblock center" style="text-align: center; clear: both;"><img src="http://ss.textcube.com/blog/0/6724/attach/XYVdX1F5Cp.png" style="width:253px;height:116px;" alt="" /></div><br />
<br />
먼저 Virtual PC를 설치해야 한다. 현재 사용중인 W7이 64비트 용이므로 Windows6.1-KB958559-x64.msu를 실행하여 설치했다.<br />
다음 XP도 64비트로 깔기 위하여 VirtualWindowsXP_64_en-US.msi를 설치했다.<br />
<br />
<div class="imageblock center" style="text-align: center; clear: both;"><img src="http://ss.textcube.com/blog/0/6724/attach/XXMGRMhgad.png" style="width:470px;height:388px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/0/6724/attach/XXMGRMhgad.png')" /></div><br />
<br />
지렁이가 대여섯마리 지나가고 XP가 부팅된다.<br />
<br />
<div class="imageblock center" style="text-align: center; clear: both;"><img src="http://ss.textcube.com/blog/0/6724/attach/XFBKOBzNZC.png" style="width:470px;height:294px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/0/6724/attach/XFBKOBzNZC.png')" /></div><br />
<br />
정확히 XP로 부팅이 되고 W7에서 사용중인 HDD 드라이버들이 네트워크 드라이버 형태로 마운트 된다. ^^ (모든 드라이버들이 깔리고 USB도 잘 인식 된다.)<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-14582836754277070792009-04-29T10:49:00.000+09:002011-01-29T20:00:42.272+09:00RAID에 대한 소개 및 RAID를 이용한 시스템의 복구RAID는 Redundant Array of Independent Disks의 줄임말이다. 스토리지 시스템에 RAID가 활성화되어 있으면 시스템에 두 개 이상의 드라이브를 연결하여 하나의 큰 드라이브처럼 사용할 수 있고 또는 시스템의 드라이브를 사용하여 사용자 데이터를 자동으로, 지속적으로 복제하여 실시간으로 백업하도록 설정할 수도 있다.<br />
<br />
RAID의 장점<br />
<br />
RAID 드라이브 시스템을 찾는 이유 세 가지:<br />
<br />
1. 아주 큰 스토리지 공간이 필요한 동시에 속도 또한 빨라야 한다. (RAID 0)<br />
2. 데이터를 지속적으로, 자동으로 백업하고 싶다. (RAID 1)<br />
3. 두 가지 다 원한다. (RAID 5)<br />
<br />
어떤 RAID 모드를 사용해야 할까?<br />
<br />
<span style="font-weight: bold;">1. 속도 (RAID 0)</span><br />
<br />
고성능 모드(일명 스트리핑 모드 또는 RAID 0)로 설정하면 다음의 경우 스토리지 시스템에서 사용자가 필요로 하는 파워를 제공 받을 수 있다.<br />
<br />
* 대용량 그래픽 디자인 및 매우 빠른 Photoshop 스크래치 공간이 필요.<br />
* 깨끗한 오디오 성능을 유지하면서 대용량 DV 파일을 녹화하려 할 때<br />
* DV 또는 HD 비디오 편집 및 프레임 드롭없는 부드러운 워크플로우 요구.<br />
* 복잡한 3D 오브젝트 또는 특수 효과를 렌더링할 때<br />
* 디스크 집약적인 데이터베이스 작업을 수행할 때<br />
* 놀라울 정도로 정말 빠른 컴퓨터에 처음으로 매료된 때<br />
<br />
RAID 0의 속도가 빠른 이유가 무엇을가? 설명하기 약간 복잡하긴 하지만, 헤드는 두 개 또는 그 이상, 이 경우, 드라이브는 하나 이상인 것이 좋다고 말할 수 있다. 여러 개의 호스로 동시에 하나의 양동이에 물을 채우고 있는 사진과 여러 사람이 하나의 보트를 노젓고 있는 사진을 보면, 스트리핑한 두 개 드라이브가 왜 하나보다 더 빠른지 이해할 수 있다. 데이터는 양쪽 드라이브에 저장되고 액세스는 모든 드라이브에서 병렬로 가능하기 때문에 사용자는 대용량 데이터 액세스시 데이터 전송률을 높일 수 있고 작은 데이터에 액세스할 때는 입출력 속도를 높일 수 있다.<br />
<br />
<span style="font-weight: bold;">2. 데이터 보호 (RAID 1)</span><br />
<br />
시스템을 데이터 보호 모드로 설정하면(일명, 미러링 모드 또는 RAID 1) 용량이 절반으로 나누어진다. 용량의 절반은 데이터 보관에 이용되고 나머지 반은 사본 복제에 이용된다. (서버운영시 많이 사용하는 RAID방식~)<br />
<br />
그 런 중복성이 왜 필요한가요? 당신의 데이터, 가족 사진, 사랑스런 아기의 첫 걸음마에 관한 영상, 당신이 쓴 첫 소설. 다시 얻을 수 없는 중요한 자료이다. 또한 서버 운영시 한 HDD에 문제생김으로 인한 데이타의 유실 및 지속적인 서비스 등이 필요하기 때문에 RAID방식으로 시스템을 구성하면 더욱 안전하게 서버를 운영할 수 있다.<br />
<br />
<span style="font-weight: bold;">3. 데이터 보호 및 속도(RAID 5)</span><br />
<br />
세 개 또는 그 이상의 드라이브를 갖춘 시스템(WD의 N8 TB WD ShareSpace™ 네트워크 스토리지 시스템처럼)의 경우 시스템을 RAID 5로 설정할 것을 권장한다. 이것이 최적의 구성이다. 모든 드라이브에 걸쳐 데이터를 스트리핑함으로써 성능을 높이고 각 드라이브의 1/4를 내고장성에 할애하고 나머지 부분은 데이터 저장 공간으로 남겨둠으로써 데이터 보호 성능을 최대화한다.<br />
<br />
<span style="font-weight: bold;">문제점 발생시 해결책</span><br />
<br />
직접 /proc/mdstat를 읽는 방식으로 현재 구성된 RAID의 상태에 대하여 알아볼 수 있다. 하지만 이런 방식으로 상태를 알아보는건 그다지 효율적이지 못하다.<br />
<br />
mdadm --detail를 이용하여 다중 하드 디스크 상태를 알아보는것이 더욱 편하고 효율적이다.<br />
<br />
<div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);">
<span style="color: rgb(255, 255, 255);"># mdadm --detail /dev/md2 | tail -n 3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Number Major Minor RaidDevice State</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
0 8 3 0 active sync /dev/sda3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
1 8 19 1 active sync /dev/sdb3</span><br />
</div>
<br />
위 예제는 md2 다중 하드 디스크 상태를 보여주는것이다.<br />
상태를 보면 모두 active sync로 되었음을 알수 있다. 즉 RAID가 정상적으로 작동하고 있다.^^<br />
만약 그중 한 하드디스크에 문제가 발생했다면 active sync대신 faulty spare라는 메세지가 뜰 것이다.<br />
<br />
만약 이런 상황에 맞띄웠다면 당황해할 필요가 없다. 우리가 설치한 보조 하드디스크가 나머지 데이타를 고스란히 가지고 있기 때문이다. 우리가 해야 할 작업은 망가진 하드디스크만 빼내면 그뿐이다.<br />
<br />
① mdadm MD_DEVICE --remove DEVICE를 이용하여 문제가 발생한 하드 디스크를 제거한다.<br />
② 서버를 잠시 중지시키고 물리적으로 문제가 생긴 하드 디스크를 제거한다.<br />
③ 정상적인 하드 디스크를 설치한후 새로운 파티션을 생성한다.<br />
④ mdadm MD_DEVICE --add DEVICE를 이용하여 새롭게 만든 파티션을 md에 물린다.<br />
<br />
실제 문제가 발생할 였을 때 해결하는 과정을 보여주면 다음과 같다.<br />
<br />
<div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);">
<span style="color: rgb(255, 255, 255);"># mdadm --detail /dev/md2 | tail -n 3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Number Major Minor RaidDevice State</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
0 8 3 0 faulty spare /dev/sda3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
1 8 19 1 active sync /dev/sdb3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
# mdadm /dev/md2 --remove /dev/sdb3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
mdadm: hot removed /dev/sda3</span><br style="color: rgb(255, 255, 255);">
<br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">reboot...</span><br style="color: rgb(255, 255, 255);">
<br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">// 새로 파티션을 만들어 주는 과정이 필요함...</span><br style="color: rgb(255, 255, 255);">
<br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);"># mdadm --detail /dev/md2 | tail -n 3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Number Major Minor RaidDevice State</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
0 0 0 0 removed</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
1 8 19 1 active sync /dev/sdb3</span><br style="color: rgb(255, 255, 255);">
<br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);"># mdadm /dev/md2 --add /dev/sdc3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
mdadm: added /dev/sdc3</span><br style="color: rgb(255, 255, 255);">
<br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);"># mdadm --detail /dev/md2 | tail -n 3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Number Major Minor RaidDevice State</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
2 8 20 0 spare rebuilding /dev/sdc3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
1 8 19 1 active sync /dev/sdb3</span><br style="color: rgb(255, 255, 255);">
<br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);"># mdadm --detail /dev/md2 | tail -n 3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Number Major Minor RaidDevice State</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
0 8 20 0 spare sync /dev/sdc3</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
1 8 19 1 active sync /dev/sdb3</span><br />
</div>
<br />::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0tag:blogger.com,1999:blog-4883259849360805370.post-53312268467597994462009-04-28T16:37:00.000+09:002011-01-29T20:00:42.218+09:00SSH의 Brute Force Attak을 막기<script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'></script><div style="padding: 10px; background-color: rgb(93, 93, 93);">
<span style="color: rgb(255, 255, 255); font-weight: bold;">가장 무식하지만서도 가장 확실한 SSH의 Brute Force Attack을 막기</span><br />
</div>
<br />
SSH Brute Force Attack이란 흔한 사용자 이름과 암호로 ssh를 계속 접속해서 해킹을 시도하는 방법으로 잘못 이용되었을 경우 악영향을 끼친다. 기본으로 SSH 포트를 바꾸어버려 어느정도 SSH BFA를 막을 수도 있겠지만 확실한 해결책이 못된다.<br />
<br />
<span style="font-weight: bold;">방어방법</span><br />
<div style="border: 1px dotted rgb(128, 184, 136); padding: 10px; background-color: rgb(40, 86, 58);">
<span style="color: rgb(255, 255, 255);">1. 강한 비밀번호 설정</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
2. RSA 인증 방식 사용</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
3. iptables를 이용한 패킷 Drop</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
4. sshd 로그를 이용하여 공격을 막기</span><br />
</div>
<br />
<span style="font-weight: bold;">1. 강한 비밀번호 설정</span><br />
웬만하면 쉬운 비밀번호나 알아내기 쉬운 비밀번호를 쓰지 않도록 하는것이 좋다. 이미 쉬운비밀번호나 알아내기 쉬운 비밀번호들은 해커들의 Dic파일속에 존재하기 때문에 BFA를 몇시간째 돌리고 있으면 인츰 비밀번호가 깨질 수 있다. 특정된 구절의 이니셜을 이용하여 비밀번호를 설정하면 가장 좋다. 아니면 한글 사용자일 경우 다른 분의 이름 영문자타법에 특수문자 조합으로 설정하며 되겠다.<br />
<span style="color: rgb(48, 88, 210);">우점: 너무 심플하다.</span><br />
<span style="color: rgb(200, 66, 5);">결점: 비밀번호를 바꾸어도 BFA때문에 생기는 시스템 부하를 줄일수 없다.</span><br />
<br />
<span style="font-weight: bold;">2. RSA 인증 방식</span><br />
기존에 비밀번호를 통한 인증방식보다 좀 더 고급적인 인증방식이다. 이런 방식으로 인증방식으로 바꾸면 일반 비밀번호를 통한 해킹은 전혀 의미가 없게 된다. ^^<br />
<br />
① ssh-keygen -t rsa를 이용하여 RSA 키를 새로 생성한다. 위 명령어를 실행하면 /home/username/.ssh/id_rsa (private 키) and /home/username/.ssh/id_rsa.pub (public 키)가 생성된다.<br />
<br />
<div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);">
<span style="color: rgb(255, 255, 255);"># ssh-keygen -t rsa</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Generating public/private rsa key pair.</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Enter file in which to save the key (/home/username/.ssh/id_rsa): </span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Enter passphrase (empty for no passphrase): </span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Enter same passphrase again: </span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Your identification has been saved in /home/username/.ssh/id_rsa.</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
Your public key has been saved in /home/username/.ssh/id_rsa.pub.</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
The key fingerprint is:</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
32-digit_hexadecimal_fingerprint username@hostname</span><br />
</div>
<br />
② ssh 클라이언트 측 /home/username/.ssh/authorized_keys파일속에 기존에 만들어진 키들을 조합하여 넣는다. 알다싶이 이파일속에는 여러가지 public키들이 위치하여 이런 키들에 대한 관리가 용이해질 수 있다. <div>단 여기서 잊지 말아야 할 것은 authorized_keys를 만든 후 퍼민션을 필히 644로 세팅 해주어야 한다. 필자는 퍼미션을 정확히 세팅하지 않으므로 rsa인증이 잘 되지 않았다.<br />
<br />
<div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);">
<span style="color: rgb(255, 255, 255);"># cat /home/username/.ssh/id_rsa.pub >> /home/username/.ssh/authorized_keys<br /></span><span class="Apple-style-span" style="color: rgb(255, 255, 255); "># chmod 644 </span><span class="Apple-style-span" style="color: rgb(255, 255, 255); ">/home/username/.ssh/authorized_keys</span><br /></div>
<br />
이렇게 생성된 authorized_keys파일을 ssh클라이언트측에 저장하여 매번 ssh접속시 사용 할 수가 있다. 위에 든 예제는 Linux상에서 public 키를 이용하여 인증하는 방식이고 윈도우에서 접속하려면 위 방식과 좀 다르다. 일단 쉘접속 툴로 많이 사용되는 SecureCRT에서 RSA 인증을 하는 과정을 보여주면 다음과 같다.<br />
SecureCRT상에서 SSH세션을 새로 생성해준다. 다음 Session Option->Connection->SSH2 를 클릭하면 다음과 같은 대화창이 뜰거다.<br />
<br />
<div class="imageblock center" style="text-align: center; clear: both;"><img src="http://ss.textcube.com/blog/0/6724/attach/XHJbL5wTQa.png" style="width:470px;height:434px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/0/6724/attach/XHJbL5wTQa.png')" /></div><br />
<br />
위 대화창에서 볼 수 있다싶이 Authentication 방식에서 password란이 체크가 되지 않았다. Default값으로 password가 체크되어있을 것이다. 체크를 해제하고 Publickey를 선택한 상태에서 옆에 Properties버튼을 클릭하여 이미 생성한 RSA Public 키를 불러 들여오자.<br />
<br />
<div class="imageblock center" style="text-align: center; clear: both;"><img src="http://ss.textcube.com/blog/0/6724/attach/XGjMaWzYnl.png" style="width:470px;height:285px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/0/6724/attach/XGjMaWzYnl.png')" /></div><br />
<br />
<span style="color: rgb(200, 66, 5);">단 주의할 점은 서버상 유저 루트 디렉토리 퍼미션이 700으로 설정이 되어야 정확히 인증이 된다. (이점은 좀 이상하다. 하지만 퍼미션을 707로설정하고 로그인을 시도한 결과 인증을 받을 수 없었다.)</span><br />
<br />③ 서버측 /home/username/.ssh/id_rsa 여기에는 이미 private 키가 생성이 되었으므로 별도의 작업이 필요 없다.<br />
<br />
④ 마지막으로 /etc/ssh/sshd_config파일을 수정하여 비밀번호를 통한 인증방식을 무효화 한다. 또한 RSA Authentication 인증방식을 Yes을 바꾸어주고 주석문속에 해제한다.<br />
마지막으로 service sshd restart하여 ssh데몬을 재시작 해준다.<br />
<span style="color: rgb(48, 88, 210);">우점: 보안이 상당히 믿음직스럽다. 일반 password방식보다는 한단계 업그레이드 된 인증 방식이다. 또한 password를 통한 무단 Brute Force Attack을 줄일 수 있다.</span><br />
<span style="color: rgb(200, 66, 5);">결점: 서버접속 할려면 public key를 갖고 있어야 할 뿐만 아니라 passphrase를 알고 있어야 한다. RSA인증 방식에 대한 이해를 못한 유저들은 이런 키를 자기절로 생성하여 쓸수 없으므로 다른 사람의 도움이 필요할것이다.</span><br />
<br />
<span style="font-weight: bold;">3. iptables를 이용한 패킷 Drop</span><br />
<br />
① 정말로 약한 암호를 사용하는 사용자가 있을 경우 해당 계정이 해킹당할 수 있으며, 이 해킹당한 계정으로 로컬 커널 익스플로잇 등을 사용해서 루트를 빼앗길 수도 있다. 되도록이면 로컬 사용자를 적게 만들고 또한 만들었으면 비밀번호를 복잡하게 설정하여 이런 BFA를 어느정도 막을 수 있어야 한다. 하지만 해커가 사용하고 있는 Dictionary가 막강하면 암호를 복잡하게 만들었다 할지라도 뚤릴수 밖에 없게 된다.<br />
<br />
② 그렇지 않더라도, 사용자 인증 로그(auth.log)에 짧은 시간 내에 수많은 실패 로그가 쌓여 다른 로그를 보는 데 방해가 될 수 있다.<br />
<br />
③ 접속을 받는 동안 SSH 데몬이 암호학적 계산을 해야 하므로 시스템 자원을 소모할수도 있다.<br />
<br />
iptables 는 리눅스 커널에 기본적으로 포함되어 있는 방화벽으로, 아주 다양한 방화벽 규칙을 만들 수 있으며, iptables 모듈을 사용해서 기능을 확장할 수도 있다. 다음은 iptables로 SSH Brute Force Attack을 막는 간단한 규칙이다. 이 규칙은 iptables 기본 모듈인 state와 recent를 사용한다.<br />
<br />
state 모듈과 recent 모듈은 man 페이지에 자세하게 문서화되어 있기 때문에 문서를 참조하면 구체적인 사용법데 대하여 알수 있으므로 여기서는 생략하겠다. state 모듈은 언제 접속이 시작되고 끝나는지 추적할 수 있게 하고, recent 모듈은 IP 주소의 목록을 만들고 최근 접속 시간을 기록할 수 있게 한다.<br />
<br />
규칙은 ssh 포트로 20초간 5회 이상 접속을 시도하면 10분간 접속을 차단하는 것이다.<br />
<br />
우선 blacklist와 ssh 체인을 만든다.<br />
<br />
<div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);">
<span style="color: rgb(255, 255, 255);"># iptables -N blacklist</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
# iptables -N ssh</span><br />
</div>
<br />
INPUT 체인에서 state 모듈로 ssh 포트인 22번 포트에 접속이 시작되면 ssh 체인으로 보낸다.<br />
<br />
<div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);">
<span style="color: rgb(255, 255, 255);"># iptables -A INPUT -m state --state NEW -p tcp --dport ssh -j ssh</span><br />
</div>
<br />
blacklist 체인에서는 recent 모듈로 "blacklist"라는 목록에 접속 주소를 기록하고 접속을 거부한다.<br />
<br />
<div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);">
<span style="color: rgb(255, 255, 255);"># iptables -A blacklist -m recent --set --name blacklist</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
# iptables -A blacklist -j REJECT</span><br />
</div>
<br />
규칙의 핵심인 ssh 체인은 다음과 같다.<br />
<br />
<div style="border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(36, 46, 64);">
<span style="color: rgb(255, 255, 255);"># iptables -A ssh -m recent --update --seconds 600 --hitcount 1 --name blacklist -j REJECT</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
# iptables -A ssh -m recent --set --name ssh</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
# iptables -A ssh -m recent --update --seconds 20 --hitcount 5 --name ssh -j blacklist</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
# iptables -A ssh -j ACCEPT</span><br />
</div>
<br />
이 규칙을 순서대로 설명하면 다음과 같다.<br />
첫 번째 규칙은 접속 주소가 이미 "blacklist"에 들어 있고, 지난 10분간 1회 이상 접속이 있었으면 접속을 거부한다.<br />
두 번째 규칙은 접속 주소를 "ssh" 목록에 기록한다.<br />
세 번째 규칙은 접속 주소가 이미 "ssh" 목록에 들어 있고, 지난 20초간 5회 이상 접속이 있었으면 blacklist 체인으로 보낸다.<br />
네 번째 규칙은 여기까지 통과한 경우 ssh 접속을 허락한다.<br />
<br />
따라서 전체 스크립트는 다음과 같이 된다.<br />
<br />
<div style="border: 1px dotted rgb(227, 143, 188); padding: 10px; background-color: rgb(112, 43, 56);">
<span style="color: rgb(255, 255, 255);">iptables -N blacklist</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
iptables -N ssh</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
iptables -A INPUT -m state --state NEW -p tcp --dport ssh -j ssh</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
iptables -A blacklist -m recent --set --name blacklist</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
iptables -A blacklist -j REJECT</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
iptables -A ssh -m recent --update --seconds 600 --hitcount 1 --name blacklist -j REJECT</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
iptables -A ssh -m recent --set --name ssh</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
iptables -A ssh -m recent --update --seconds 20 --hitcount 5 --name ssh -j blacklist</span><br style="color: rgb(255, 255, 255);"><span style="color: rgb(255, 255, 255);">
iptables -A ssh -j ACCEPT</span><br />
</div>
<br />
<span style="font-weight: bold;">4. sshd 로그를 이용하여 공격을 막기</span><br />
서버에 들어오는 ssh 공격에 대하여 sshd 데몬은 그것들을 특정된 로그파일에 저장해주고 있는데 이렇게 생성된 파일을 참조하고 몇가지 프로그램을 조합하여 사용하는 것을 통하여 ssh 공격을 막을 수 있다.<br />
<br />
① sshdfilter는 iptables를 이용하여 블럭을 한다. 동작방식은 상당히 간단한데 firewall 룰을 iptables에 추가하여 특정된 공격을 막는것이다. 이 방식으로 공격을 막기위하여 sshd데몬대신 sshdfilter데몬을 작동시켜야 한다. sshdfilter데몬은 sshd데몬과 흡사한데 단지 다른점이라면 생성된 log에 대한 분석을 해준다는것이다.<br />
<br />
② Fail2Ban은 일종 Python스크립트인데 이 스크립트는 sshd로그에 근거하여 커스텀 Firewall룰을 적용시키는 방식으로 공격을 막는다. 공격을 막기 위하여 사용되는 툴로는 iptables, ipfwadm 혹은 ipfw등이다.<br />
<br />
③ DenyHosts는 firewall을 이용하여 공격을 막는것이 아니고 관련 룰들을 /etc/hosts.deny에 써주는 방식으로 공격을 차단한다. 단 이것을 사용하기 위하여서는 sshd 데몬이 컴파일 될시 tcp_wrappers를 지원하게끔 되어있어야 한다. 사실 DenyHosts도 Python 스크립트로 씌여졌다. tcp_wrappers를 지원하고 있는 지를 판단하는 방법은 상당히 심플한데 직접 hosts.deny를 편집하고 그 속에 127.0.0.1를 넣어준 상태에서 서버에서 ssh방식으로 자기자신을 접속하게 한다. 만약 접속이 안되면 tcp_wrappers를 지원하고 있는것이다.<br />
<br />
참조문서: <a title="[http://la-samhna.de/library/brutessh.html]로 이동합니다." target="_blank" href="http://la-samhna.de/library/brutessh.html">http://la-samhna.de/library/brutessh.html</a><br />
<br /></div>::거니네::http://www.blogger.com/profile/02018643292462307563noreply@blogger.com0