내가 그동안 삽질을 통해 알게되었거나, 다른사람을 통해 알게된 팁들을 순서대로 정리할 목적으로 만들어진 곳이다.
젠투에서 RPM 사용하기
흔히 젠투에서는 emerge로 프로그램을 설치하고 삭제하기 때문에 레드햇의 rpm보다 더 편하고 관리하기 간편하다.
하지만 간혹가다가 반드시 rpm만 지원하는 프로그램을 설치해야 하는 일이 생긴다면..??
ㅋㅋㅋ 젠투가 어떤 배포판인가!! 방법은 있다. epm 이라는 프로그램을 설치하면 된다.
#emerge epm
STARTX 사용하기
젠투를 설치하고, X 윈도우 환경을 모두 설정하고 나서 프롬프트에서
#startx
하면, 원래 설치했던, 그놈이나 KDE 가 아닌 썰렁한 화면이 실행된다. 그것은 TWM 이라는 윈도우 매니저이다. 내가 사용할 윈도우 매니저를 자동으로 시작하도록 설정해주어야 한다.
#vi /etc/rc.conf
의 맨 아래 줄을 원하는 것으로 바꾸어 주면 된다. 나의 경우 그놈을 사용하기 때문에 아래와 같이 변경하였다.
XSESSION="Gnome"
이제 startx 실행해보자!
데이터 백업하기
윈도우에서 잘못해서 리눅스의 부트(boot)영역을 지워버렸다. 이럴 경우 사용자는 당황하지 않을 수 없다.
필자도 이리저리 뛰어다녔지만 뾰족한 방법을 찾지 못했다. 그래서 고심 끝에 생각한 것이 친한 사람에게 리눅스의 나머지 영역에 있는 데이터를 백업하는 방법이다.
내가 말한 이 방법보다 더 효율적이고 경제적인 방법이 어딘가에는 분명히 있을 것이다.
그러므로 내가 지금 말하는 방법은 최후에 수단을 사용하길 바란다. 우선 사용자의 하드디스크를 떼어내어 친한 사람의 컴퓨터에 연결한다.
그리고 리눅스로 부팅한후에 프롬프트상에서 다음과 같이 입력한다.
#fdisk -l
그러면 당신의 하드디스크가 잡힐 것이다. 처음에 보면 어느 것이 누구 것인지 구분이 안 간다. 이럴 때
다음과 같이 입력하여 마운트한다.
#mount -t ext2 /dev/hdb10 /mnt/woo (여기서는 ‘hdb10'이라는 파티션을 mnt라는 디렉토리 밑에 'woo' 라는 디렉토리에 마운트한다)
'hdb'라는 파티션은 사용자에 따라 다를 수 있다. 만약 마운트를 했는데 자기의 데이터인지 잘 모르겠다면 모두 디렉토리를 만들어 그곳에 마운트 해본다. 여기서 주의할 점은 리눅스의 파티션을 여러 개로 잡아주었다면 그 잡은 수만큼 마운트를 해주어야 한다는 것이다. 어찌보면 당연한 얘기일지도 모르지만 주의해야 한다!!)
TCP Wrapper 사용하기
tcp wrapper은 텔넷, FTP 같은 TCP 서비스를 보호해주는 역할을 한다. 이는 레드햇 기반의 배포판을 설치했다면 기본적으로 설치되어있다. /etc/ 디렉토리에 가보면 다음 두 개의 파일을 볼 수 있다.
- hosts.allow : 접속을 허용하는 호스트 설정
- hosts.deny : 접속을 거부하는 호스트 설정
설정하는 방법은 다음과 같다.
서비스데몬 : 거부할 호스트 주소 또는 허용할 호스트 주소 |
만일 myfeel.hoseo.ac.kr 이란 호스트에 텔넷을 거부하게 하고 싶다면
in.telnetd : myfeel.hoseo.ac.kr
또는 모든 호스트에 텔넷을 거부하게 하려면
in.telnetd : ALL
두 개이상의 서비스에 대해서 거부하게 하려면
in.telnetd in.ftpd : ALL
한다.
제대로 설정했는지 점검하는 명령어로는 tcpdchk, tcpmatch 가 있습니다.
먼저 tcpdchk 명령을 실행했을 때 에러가 없다면 아무 메시지도 나오지 않습니다. 하지만 이상이 있다면 해당라인에 어떠한 에러메세지를 보여주게 됩니다.
#tcpdchk -v Using network configuration file: /etc/inetd.conf >>> Rule /etc/hosts.deny line 9: daemons: ALL clients: ALL access: denied
위에서는 에러가 없다고 나왔다.
tcpdmatch는 개별적으로 서비스 데몬에 대하여 각 호스트들의 접근여부를 파악해 볼 수 있는 명령이다. 사용법은 다음과 같다.
#tcpdmatch in.telnetd myfeel.hoseo.ac.kr client: hostname myfeel.hoseo.ac.kr client: address 203.241.128.94 server: process in.telnetd matched: /etc/hosts.deny line 9 access: denied
위를 보면 텔넷을 거부 당했다는 것을 볼 수 있습니다. 만일 이 호스트에서 텔넷을 시도하려고 하면, /var/log/secure 파일에 접속 시도 실패 기록이 저장된다.
IP 스푸핑 방지를 위한 쉘 스크립트
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then echo -n "IP 스푸핑 디텍션 모드를 세팅합니다." for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done echo "done" else echo IP 스푸핑디텍션 초기화에 문제가 있습니다. echo "CONTROL -D will exit fron this shell and continue system startup." echo /sbin/sulogin $CONSOLE fi
위와 같은 쉘 스크립트를 작성하고, 부팅할때마다 시작한다.
물론 /etc/rc.d/rc.local 에다가 추가 시켜도 된다.
트립와이어 설치시 유의할 점!!
트립와이어는 변경된 파일들은 보여준다. 물론 history 같은 파일도 보여주지만, 유저 몰래 들어온 해커가 바꾸어 놓은 파일들도 모두 보여준다.
트립와이어는 다른 프로그램과는 설치방식이 좀 다르다. 압축을 풀면 다음과 같은 파일이 나오는데,
#ls License.txt README Release_Notes Tripwire_221_for_Linux_x86.tar.gz install.cfg install.sh* pkg/
여기서 install.cfg 파일의 설정을 바꾸어 주어야 한다. 그렇지 않으면 설치가 안된다.
다음과 같이 설정하자!!
##################################### # SENDMAIL options - DEFAULT # # Either SENDMAIL or SMTP can be used to send reports via TWMAILMETHOD. # Specifies which sendmail program to use. ##################################### TWMAILMETHOD=SENDMAIL TWMAILPROGRAM="/usr/lib/sendmail -oi -t" ##################################### # SMTP options # # TWSMTPHOST selects the SMTP host to be used to send reports. # SMTPPORT selects the SMTP port for the SMTP mail program to use. ##################################### TWMAILMETHOD=SMTP <--------1 TWSMTPHOST="myfeel.hoseo.ac.kr" <------2 TWSMTPPORT=25 <----------3 ################################################################################ # Copyright (C) 1998-2000 Tripwire (R) Security Systems, Inc. Tripwire (R) is a # registered trademark of the Purdue Research Foundation and is licensed # exclusively to Tripwire (R) Security Systems, Inc. ################################################################################
원래 파일을 보면 1번에서 3번까지 주석이 붙여져 있다. 하지만 이것의 주석을 제거하고 알맞는 설정을 해주어야 한다.
기본 적인 리눅스 서버 보안 설정하기
보안에 대한 약간내용을 정리해 보았습니다.
- 서버로 사용할 예정이라면 X-Window는 설치하지 않는다
- ps aux 또는 ps auxc로 확인하여 불필요한 데몬은 띄우지 않는다. 기본적으로 portmap / identd / atd / lpd /gp -t / xfs 등은 삭제.
- /etc/rc.d/rc3.d에서 불필요한 서비스는 삭제한다.
- 불필요한 계정은 삭제 한다. ftp, xfs, adm, lp, newes, gopher를 /etc/패스워드 /etc/group 에서 주석처리 또는 userdel uid, groupdel gid를 하면 된다.
#userdel adm #userdel lp #userdel sync #userdel shutdown #userdel halt #userdel news #userdel uucp #userdel operator #userdel games #userdel gopher #userdel ftp (anymous FTP server를 운영하지 않으면 삭제 한다.) #groupdel adm #groupdel lp #groupdel news #groupdel uucp #groupdel games #groupdel dip #groupdel pppusers #gropudel slipusers
- 퍼미션 설정변경-몇몇 중요한 설정 파일의 퍼미션을 변경하영 일반 유저들의 접근을 제한한다.
chmod 700 /etc/exports chmod 700 /etc/fstab chmod 700 /usr/bin/chage chmod 700 /usr/bin/wall chmod 755 /usr/bin/man chmod 700 /usr/bin/chfn chmod 700 /usr/bin/write chmod 700 /usr/sbin/usernetctl chmod 700 /bin/mount chmod 700 /bin/umonut chmod 700 /sbin/netreport 로 사용을 불가능하게 한다. chattr +i /etc/fstab와 같이 속성에 Lock을 걸어 파일을 수정 할 수 없게 한다.
- 시스템 관련 명령어를 특정 그룹에서만 사용가능 하도록 설정(특정적인 사용자에게만 권한을 줄 수 있다.)
chmod 750 /bin/ps chmod 750 /bin/netstat chmod 750 /bin/dmesg chmod 750 /bin/df chmod 750 /usr/bin/who chmod 750 /usr/bin/finger chmod 750 /usr/bin/last chmod 750 /usr/bin/top chmod 750 /usr/bin/w chgrp wheel /bin/ps chgrp wheel /bin/netstat chgrp wheel /bin/dmesg chgrp wheel /bin/df chgrp wheel /usr/bin/w chgrp wheel /usr/bin/who chgrp wheel /usr/bin/finger chgrp wheel /usr/bin/last chgrp wheel /usr/bin/top
/etc/group을 열어 wheel:x:10:root,tt 와 같이 tt 라는 계정을 wheel 그룹에 추가 한다.
그러면, root를 포함하여 wheel 그룹에 속한 tt라는 계정만이 위 명령어를 수행할 수 있다.
iptable 사용하기
보안에 매우 중요한 iptables 에 대한 자료를 제공해 주신 박상엽님께 감사드립니다.
커널 2.4대로 올라오면서 ipchains대신 iptables를 사용하게 되었습니다. 옵션을 주어 컴파일하거나 모듈을 올리면 ipchains도 사용가능하지만 NAT나 masq.를 셋팅할 수는 없습니다. 부득이 iptables를 사용해야 합니다. 실제로 활용할 만한 레퍼런스가 부족해 가장 많이 사용하는 부분들을 요약정리 했습니다. 참고하시길 바랍니다. 체인의 이름이 바뀌었습니다.
- input → INPUT
- output → OUTPUT
- forward → FORWARD
- DENY → DROP
그래서 기존에 ipchains로 input의 default룰을 작성하던 내용은 다음과 같이 변경하면 됩니다.
... #input default ... ipchains -A input -s $IP -d 127.0.0.1 -j ACCEPT ipchians -A input -s $IP -d $IP -j ACCEPT ipchains -A input -j DENY
iptables를 사용하여 작성하면,
... #INPUT default ... iptables -A INPUT -s $IP -d 127.0.0.1 -j ACCEPT iptables -A INPUT -s $IP -d $IP -j ACCEPT iptables -A INPUT -j DROP
이 됩니다. 포트 지정방식이 바뀌었습니다.
- 시작점의 경우 –sport 포트번호,
- 목적점의 경우 –dport 포트번호
방식으로 지정해 주어야 합니다. 클라이언트의 네임서버 설정을 보면 다음과 같습니다.
먼저 기존의 ipchains를 사용하여 체인을 설정하는 것은,
#input for nameserver ipchains -A input -p tcp -s $NAMESERVER domain -d $IP -j ACCEPT ipchains -A input -p udp -s $NAMESERVER domain -d $IP -j ACCEPT #output for nameserver ipchains -A output -p tcp -s $IP -d $NAMESERVER domain -j ACCEPT ipchains -A output -p udp -s $IP -d $NAMESERVER domain -j ACCEPT
이었습니다. 이것을 iptables를 사용하여 설정해 보겠습니다.
#INPUT for nameserver iptables -A INPUT -p tcp -s $NAMESERVER --sport domain -d $IP -j ACCEPT iptables -A INPUT -p udp -s $NAMESERVER --sport domain -d $IP -j ACCEPT #OUTPUT for nameserver iptables -A OUTPUT -p tcp -s $IP -d $NAMESERVER --dport domain -j ACCEPT iptables -A OUTPUT -p tcp -s $IP -d $NAMESERVER --dport domain -A ACCEPT
이 됩니다.
ssh를 이용한 원격 파일 복사
서버 보안때문에 telnet 보다 ssh를 사용하는 경우가 많습니다.
또한 ftp 보다는 scp, sftp 등을 이용하는 것이 더 안전하겠지요.
scp는 ssh 클라이언트 패키지에 따라옵니다.
예를 들어, 복사하려는 파일명이 'dumb' 라고 하고 접속하려는 원격 서버의
주소는 www.foobar.com, 당신의 쉘 계정은 babo 라고 한다면,
dumb 파일을 www.foobar.com 의 babo 계정 홈 디렉토리에 복사하기
scp dumb babo@www.foobar.com:.
www.foobar.com 의 babo 계정 홈 디렉토리에 있는 dumb 파일을 로컬로 복사하기
scp babo@www.foobar.com:dumb .
간단하죠? 만약 ~/.ssh/config 파일에 다음과 같이 www.foobar.com 의 계정을 설정해 놓았다면,
Host *fbc HostName www.foobar.com User babo ForwardAgent yes
다음과 같이 더 간단하게 할수 있습니다.
scp dumb fbc:.
또한 scp 는 -r 옵션도 가지고 있는데 이것은 디렉토리를 통채로 복사 할때
유용합니다. 예를 들어 test/ 디렉토리안의 모든 파일과 하위 디렉토리를
서버 계정의 www 디렉토리 안에 복사 하려면 다음과 같이 합니다.
scp -r test/ babo@www.foobar.com:www/
삼바
삼바를 이용해서 로컬의 파일을 원격의 컴퓨터에서 복사 또는 실행하려면 파일의 퍼미션을 664로 바꾸어 준다.
#chmod 664 파일명
리눅스를 부팅시킬 때 자동으로 데몬을 실행시키기
/etc/rc.d/rc.local 파일의 맨아래에 추가시켜 준다.
리눅스에서 패스(Path)거는 방법
/etc/profile 파일에다가 'PATH=$PATH:/' 경로를 적어준다.
아파치깔 때 모든 모듈을 다 까는 방법
PHP를 설치하기 위해서는 아파치에다가 모든 모듈을 설치할 필요가 있다.
#./configure --prefix=/usr/local/apache --enable-module=most --enable-shared=max
sendmail 데몬띠우기
#sendmail -bd -q30m //이것을 이용해서 데몬이 실행되고 있는지 확인한다. #ps -ef | grep sendmail #telnet localhost smtp #telnet localhost pop3 (user ID 그리고 다음에 pass 패스워드 그담에 quit를 손수 입력해준다.)
리다이렉션 사용하기
처리결과를 파일로 저장해준다.
#ls >> list.of.file (ls의 결과가 파일에 저장된다.)
활동중인 프린터 목록표시
#lp stat -a all
FTP에서 복수개의 파일을 올리거나 받을 때
mget, mput
먹통된 네스케이프를 죽이는 방법
#kill -9 UID (이 방법은 무조건 죽이는 방법이다.) #kill -12 UID (저장하고 죽인다.)
RPM 명령어
패키지를 설치하거나 제거할 때 아래와 같이 명령한다.
#rpm -Uvh 파일명 (rpm을 설치한다.) #rpm -e 파일명 (rpm을 삭제한다.)
ping 무시하기
다른 컴퓨터에서 ping을 무시하게 하려면
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
다시 ping을 무시한 것을 해제하려면
#echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
윈도우에서 원격컴퓨터에서 자동접근
ID와 패스워드를 물어보는 창이 뜨지 않고 곧바로 접속가능하게 하려면
'내컴퓨터 → 마우스 오른쪽 버튼 → 관리 → 로컬사용자 및 그룹 → 사용자,그룹 → Guest → 암호 체크 지움'
FTP에서 다운받을 디렉토리 지정
lcd c:\디렉토명
원도우용 Mysql 실행
net start mysql (실행하라!!) net stop mysql (중지하라!!) mysql -h localhost -u root -p 패스워드 입력
sendmail 클라이언트 설정
이름 | 203.241.128.94 |
사용자 | ID |
패스워드 | xxxxx (ID와 패스워드는 리눅스에서 쓰던 걸로 해야된다.) |
멜주소 | ID@myfeel.hoseo.ac.kr |
smtp | 203.241.128.94 |
pop | 203.241.128.94 |
아파치 데몬의 실행여부
#ps -ax|grep http
sendmail 발송
#/usr/lib/sendmail -v ID
SSH
ssh의 데몬찾기
#find -name sshd
원격 컴퓨터에 접속하기
#./ssh -l root(ID) myfeel.hoseo.ac.kr(호스트 네임)
윈도우 파티션 추가하기
'/etc/fstab' 파일에 아래와 비슷하게 추가한다. 이때 파티션 번호와 파일시스템을 확인하고 추가해야 한다.
/dev/hda1 /mnt/hda1 vfat default 0 0
그래픽카드 잡을 때
Xconfigurator
삼바 카피
cp -R 디렉토리/* 복사디렉토리
리눅스설치시 하드파티션
부트 | 10 |
스왑 | 256 |
홈 | 200 |
var | 100 |
tmp | 200 |
/usr/local | 1.3 |
/ | 나머지모두 |
j2re-1.3.0-RC1-linux-i386.tar.bz2 압축풀기
요즘 새로운 압축형식으로 쓰이고 있는 bz2(bzip2)를 풀기 위해서는 다음과 같이 한다.
#bzip2 -d j2re-1.3.0-RC1-linux-i386.tar.bz2
위와 같이 하면 j2re-1.3.0-RC1-linux-i386.tar 가 생길 것이다.
리눅스에 깔려있는 RPM 확인하기
자신의 리눅스박스에 무엇이 깔려있는지 궁금할 때가 있다. 그럴땐 다음과 같이 한다.
#rpm -qa|sort|more <------여기서 qa 는 모두, sort 는 순서대로, more 는 한페이지씩
C 프로그램 컴파일하기
리눅스 거의 대부분 C 컴파일러가 자동으로 설치되기 때문에 다음과 같이 한다.
#gcc -o 파일명 파일명.c <-------링크를 건다(?). #파일명 <------------에러없이 컴파일 되었다면 아래에 결과가 나올 것이다.
Sendmail에서 부팅시에 자동으로 데몬띠우기
누구나 알고 있듯이 ‘/etc/rc.d/rc.local' 파일의 맨 아랫줄에 경로를 추가시켜주면 된다는 것을 알고 있다. 필자는 find를 명령을 쳐보지 않은 실수를 저지르고 말았다. 다음과 같이 추가 시켜준다.
-----------rc.local------------------------ #시작할 때 자동으로 센드메일의 데몬을 띠워라!! /usr/sbin/sendmail -bd
파일의 변경을 막으려면....
리눅스에 보안적으로 중요한 파일들이 있다. 이런 파일들을 보호하기 위해서 다음과 같은 명령을 이용해서 우리는 보호할 수가 있다.
#chattr +i /etc/lilo.conf <---------여기서는 예로 lilo.conf 파일을 예로 들었다.
위와 같은 명령을 내려주면 아무리 루트(root)라도 파일을 변경시킬 수 없으며, 파일을 지울 수도 없다. 이것을 해제 시키려면 다음과 같이 한다.
#chattr -i /etc/lilo.conf <-------------역시 위와 같다.
ssh 데몬 실행시 에러가 날 때
필자가 리눅스를 다시 깔 때 꼭 제일 먼저 까는 것이 있다. 그것은 바로 ssh 다.
하지만 만일 리눅스를 깔 때 “everything“로 깔았다면 분명히 ”openSSH”가 깔렸을 것이다. 이를 확인하는 방법은 프롬프트에서
#telnet localhost ssh
해준다. 만일 깔린 것을 확인했다면 지금 실행되고 있는 데몬을 kill 시키자!!
#ps -aux|grep ssh #kill UID
그리고 다시 깔았던 데몬을 띠워보자!!
갑자기 xmms 가 이상할 때..
필자가 어느날 음악을 들으려고 xmms을 실행시켰다. 그런데 음악은 안들리고 root 디렉토리에다가 .wav 파일을 만들어 놓는게 아닌가…?? 첨에는 많이 당황했었다. 하지만 침착하게
xmms를 띠우고
'옵션 → 선택사항 → 출력 플러그인(Diskwrite Plugin…라고 되있을 것이다.)'
이것을 'OSS Driver….'으로 바꾸어 준다. 그리고 확인을 누르고 다시 PLAY 해본다.
apache 설치시 주의할 점!!
이건 필자도 이제까지 무심코 지나갔던 것이었다. 하지만 이번 것을 계기로 다시 한번 경각심을 느끼게 되었다.
apache를 무사히 컴파일 및 인스톨까지 했는데도 아파치 데몬이 시작이 안되는 경우였다.
이럴땐 '/conf/httpd.conf' 파일을 잘 살펴본다. 거기서 'ServerName 항목을 잘보자!!' 만일 주석(#)이 붙여져 있다면 얼른 없애주자!!
그리고 나서 apache 데몬을 다시 시작해보자!! 열에 아홉은 잘 돌아갈 것이다.
kxicq에서 한글입력이 안될 때
필자도 이사실을 안지는 얼마되지 않았다. 그동안 이사실을 몰라 얼마나 고생했던가…ㅜ.ㅜ
하지만 이유를 알았다. 그것은 바로 아미(AMI) 였다. KDE에만 있는 아미!! 바로 이 녀석 때문에 내가 얼마나 애를 먹었는지…. 이유는 이렇다.
kxicq를 써본사람이라면 알겟지만 이 프로그램은 X윈도우가 시작하면 자동으로 실행한다.
그런데 이점이 바로 한글입력이 안되는 장본인 이었다. 바로 아미(Ami)보다 먼저 실행되기 때문에 한글입력이 안되는 것이었다.
만일 믿지 못하겠다면 kxicq를 중지시키고 다시 실행시켜보라!! 한글이 입력될 것이다. 좋아하기는 이르다.
재부팅을 할 때 마다 kxicq는 자동으로(아미보다 먼저) 실행될 것이기 때문이다. 그 때마다 우리는 kxicq를 껏다가 다시 실행시켜주어야 할까?
그럼 어떻게 해야 될까?
X윈도우가 실행됨과 동시에 kxicq가 실행되는 것을 막으려면 X윈도우를 빠져나올 때 반드시 kxicq를 꺼주어야 한다. 이유는 간단하다.
그것은 로그아웃을 할 때 전의 세션이 저장되기 때문에 다음에 재부팅할 때 자동으로 실행되는 것이다!!
새벽 4시에 비밀!!
새벽 4시? 뭘까 하는 사람이 있을 지도 모르겟다. 솔직히 말하면 필자도 처음 이 얘기를 듣고서는 그런 의문이 생겻었다.
본론부터 말하면, 리눅스는 새벽4시에 하드의 모든 파일을 검색해서 새로운 리스트를 생성한다는 놀라운(?) 사실이다.
하지만 여기에도 방법은 있다. 바로 시간을 고쳐주는 것이다!! 그 방법은 아래와 같다.
#rdate -s time.kriss.re.kr <-----입력한다.
하지만 이것은 임시방편이다. 재부팅하면 예전의 설정되있던 시간으로 돌아가기 때문이다.
그렇기 때문에 '/etc/rc.d/rc.local' 파일에다가 위의 명령을 추가시켜준다.
RPM으로 깐 프로그램은 어디에??
리눅스를 처음 깔면 수많은 애플리케이션들이 함께 깔린다. 필자가 처음 리눅스를 접했을 때 궁금했다. ‘이 많은 프로그램들이 도대체 어디에 있지? ’ 프로그램들이 깔려있는 경로는 다음과 같다.
#cd /usr/share <----------모든(rpm으로 설치한) 프로그램들이 여기에 있다. #cd usr/share/apps <------------- 특히 애플리케이션은 여기에.....
Mysql 데몬을 살려라!!
Mysql을 살리려면 ‘/usr/local/mysql/bin/safe_mysqld &' 해야한다는 것은 누구나 알고 있을 것이다. 하지만 데몬이 띠워진 상태에서 다시 safe_mysqld & 해보자!! 데몬이 ended 될 것이다. 이는 왜그럴까? 우선 아래와 같이 해보자!1
#ps acx | grep mysqld
그럼 지금 작동하고 있는 mysql 데몬을 볼수 있을 것이다. 이것을 모두 kill 하자!! 그리고 다시 safe_mysqld & 실행시켜보자..
메모리 인식시키기
필자의 메모리는 128M였다. 하지만 리눅스에 free 명령어를 실행시켜본 결과 64M밖에 인식하지 못하고 있었다. 이럴땐 당황하지 말고 다음과 같이 한다. '/etc/lilo.conf' 파일에 다음과 같이 한줄을 추가한다.
-----------------------lilo.conf--------------------------------------------- boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 linear default=linux image=/boot/vmlinuz-2.2.14-12kr label=linux read-only root=/dev/hda6 append="mem=128M" <---------이 줄을 추가 시킨다. other=/dev/hda1 label=dos --------------------------------------------------------------------------
'lilo'를 실행시킨 후에 재부팅한다. 그리고 free 명령어를 실행시켜보자.. 휠씬 빠른 것을 실감할 수 있을 것이다.
Servlet에서 브라우저에서 그림이 안뜰 때...?
서블릿에서 컴파일은 되는데 브라우저에서 안뜰 경우가 있다. 필자의 경우가 그러했다. 우선 한텀 창을 띠워 다음과 같이 해준다.
#xhost + IP주소(자신의 주소를 적어준다.)
그리고 tomcat을 재실행 시켜준다. 그리고 브라우저로 확인해보자!! 어떤가 그림이 보이지 않는가??
IP추적하기
만일 윈도우의 웹브라우저를 띠웠는데 네트웍이 안될 때가 있을 수 있다.
그럴 때는 다른 사용자가 쓰고 있을 수가 있다. 한번 의심해 보자..
다음과 같이 해보자!!
#traceroute 203.241.128.94(도메인을 써주어도 된다.) traceroute to 203.241.128.94 (203.241.128.94), 30 hops max, 38 byte packets 1 myfeel (203.241.128.94) 0.194 ms 0.058 ms 0.051 ms
그럼 다음과 같이 결과가 나온다. 도스에서도 사용가능한 데, 다음과 같이 해주자!!
>tracert 203.241.128.94(도메인을 써주어도 된다.)
그럼 정보가 뜰 것이다. 만일 자기의 정보가 뜨지 않고, 다른사람의 정보가 뜬다면 누군가가 자신의 IP를 쓰고 있는 것이다.
편하게 디렉토리 만들기
디렉토리를 만드는 방법은 누구나 알 것이다. 우선 아래의 예제를 보자.
#mkdir /home/fat81/woo/fat
만일 '/home/fat81/'의 디렉토리에 woo 디렉토리가 없다면 fat81 디렉토리는 만들 수 없다.(당연하다!!) 어쨋든 우리가 fat81 디렉토리를 만들려면 먼저 woo 디렉토리를 만들어야만 한다. 하지만 옵션하나로 이런 노가다(?)는 하지 않아도 된다. 다음을 보자
#mkdir -p /home/fat81/woo/fat
fat81 디렉토리를 가보면 woo 디렉토리가 생기고 그 안에 fat 이란 디렉토리가 생성된 것을 확인할 수 있다.
HTML(이미지로 버튼 만들기)
이미지로 된 전송버튼을 만들려면 다음과 같이 한다.
<input type="image" src="submit.jpg" name="submit" alt="전송“>
기존의 회색의 버튼대신 그림버튼이 만들어질 것이다.
Mysql에서 일정범위의 데이터 뽑아내기
mysql에서 다음과 같이 예를 들어 보자!!
num ------------------------------------------------+---------+--------------- | 1 | | 2 | | 3 | | . | | .. | | ... | |100|
위의 테이블에서 num값이 10에서부터 50까지의 값을 구하려면 다음과 같다.
mysql>select * from db_name where num>9 AND num<51 ;
생각하고 보면 정말 당연한 것이다!!(이걸가지고 며칠동안 골머리를 썩었던 걸 생각하면….)
퍼미션 한꺼번에 바꾸어 주기
#chmod -R 777 *
위와 같이 주면 디렉토리에 있는 모든 파일의 퍼미션이 777로 바뀐다.
여러 계정을 하나의 그룹으로 묶기
무한대(?)로 계정을 주다보면 계정으로 묶어서 관리하는 것이 편할 때가 있다. 그럴 때는 다음과 같이 해주자!! 우선 ‘/etc/패스워드' 파일을 보자.. 물론 이때 root 계정으로 접속해야 한다. 다음과 같이 나올 것이다.
....... fat81:x:500:500::/home/fat81:/bin/bash jason:x:501:501::/home/jason:/bin/bash .......... 여기서 4번째 항목을 바꾸어 주자.. 이것은 GID를 뜻한다. 이것을 같게 해준다. ...... fat81:x:500:500::/home/fat81:/bin/bash jason:x:501:500::/home/jason:/bin/bash ....... 여기서 끝난 것이 아니다. ‘/etc/group'파일을 보자!! 다음과 같이 나올 것이다. ....... fat81:x:500:jason jason:x:501: ........
위와 같이 설정해주면 jason이란 계정은 fat81이라는 그룹에 속하게 된다. 마지막으로 이를 확인해 보자!!
jason으로 접속한 후 ‘groups'라고 적어보자..
fat81
위와 같은 결과를 볼 수 있을 것이다.
로컬에 접속되 있는 사용자의 화면 지우기
ssh라든가 telnet으로 사용자가 접속해있다면 root는 접속해있는 사용자의 화면을 clear 효과를 낼수 있다. 우선 아래와 같이 명령어를 내려보자..
#who | grep 계정 <-------구냥 who 라고 치면 지금 접속되있는 유저가 다음과 같이 나온다. root tty1 Mar 13 20:08 root pts/0 Mar 13 20:10
위에서 ‘clear > /dev/pts/0’ 라고 입력해보자!! 그럼 지금 root로 접속해 있는 창이 clear를 쓴 듯이 지워질 것이다.
콘솔 전환하기
Xwindow 에 보면 KDE나 그놈이나 총 4개의 창으로 구성되어 있다. 그것을 마우스를 이용해서 왔다갔다 할 수 있지만 키보드로 간단하게 다음과 같이 할 수 있다.
Crtl + F1 ~ F6 <----F1은 첫 번째 윈도우다.
위의 경우는 Xwindow에서만 사용 가능하지만, 다른 로그인 콘솔 창을 띠울 경우 다음과 같이 할 수 있다.
Ctrl + Alt + F1 ~ F6
다시 Xwindow로 돌아오고자 할 때는 'Ctrl + Alt + F7'을 누른다.
※ 한텀 창 일시 정지시키기
빨리 지나가는 실행결과를 보고 싶을 때는 ‘Ctrl + S'을 누른다. 반대로 정지를 해제시킬 때는 ’Ctrl + Q'을 누른다.
※ less 사용하기
less는 cat과 기능이 비슷하지만 좀더 강력한 기능을 가지고 있다.(Vi 와 비슷하다.) 주의 할 점이 있다. 반드시 텍스트파일만 읽을 수 있다는 것이다.
그래서 less를 사용하기 전에 'file 파일명'로 텍스트파일인지 확인 후에 사용하자!! 나가는 방법은 vi 와 같다.
Vi 에디터에서 복수개의 파일 편집하기
이 기능을 알고서 필자는 ‘세상에 이런 기능이!!’하고 놀라워 했다. 우선 a,b,c 의 파일이 있다고 하자! 우리는 이 세 개의 파일을 한번에 vi를 이용해서 편집하고 싶다.
다음과 같이 명령을 내려보자!!
#vi a b c
그럼 우선 차례대로 a 파일부터 편집한다. 다 했으면 저장하고 ':n' 을 누른다. 그러면 b 파일로 넘어간다. 위와 동일한 방법으로 편집한다.
만일 지금 b 파일을 편집하고 있는데 다시 a 파일로 돌아가 편집하고 싶으면 b를 저장하고 ':rew' 를 입력한다.
※ vi 에서 명령내리기
파일을 보다가 명령의 실행결과를 파일에 첨가시킬 때 ‘:r!ls'라고 쳐준다. 여기서는 ’ls'를 내린 결과가 찍히게 될 것이다.
※ 일정범위내 문자 치환하기
----------test-------------------- ' ' ' ' ---------test---------------------
위와 같은 test 파일이 있을 때 ‘을 “ 으로 바꾸려면 다음과 같이 한다.
:%s/'/"/g
vi의 환경설정을 보존하고 싶을 때
vi 는 설정을 잡아주어도 vi를 종료시키면 설정을 잡았던 것이 모두 사라진다. 그래서 실행때마다 설정을 자동으로 되게 해주어야 한다.
그러기 위해서는 홈디렉토리에 '.exrc' 파일을 만든다. 그리고 다음과 같이 설정을 적어준다.
-------.exrc----------------------------------- set number autoindent tabstop=4 -----------.exrc-------------------------------
공유 라이브러리 관리하기
공유 라이브러리는 여러개의 프로세스에 동시에 사용되는 라이브러리를 말한다. 우선 자신의 Linux Box에 설치되어 있는 라이브러리를 보려면 다음과 같이 명령을 내려준다.
#ldconfig -p
쭉 라이브러리 목록이 출력될 것이다. 라이브러리를 업그레이드 시키거나 새로운 라이브러리를 추가시킬려면 'ldconfig'를 실행시킨다.
※ 실행파일이 어떤 라이브러리가 쓰였는지 알고 싶을 때
ex) #file /bin/login libcrypt.so.1 => /lib/libcrypt.so.1 (0x40017000) libpam.so.0 => /lib/libpam.so.0 (0x40045000) libdl.so.2 => /lib/libdl.so.2 (0x4004d000)
메모리를 가장 많이 먹는 프로세스를 알고 싶을 때
#ps u --sort=vsz
PHP로 만든 게시판에서 엔터키가 안 먹을 때
어느 날 필자가 짠 게시판에 글이 올라왔다. 내용은 이러했다. 글을 적을 때 엔터키를 입력했는 데도 불구하고 글이 등록된 것을 보면 모두 다닥다닥 붙어 나온다는 것이었다.
고민하던 중 필자는 (www.phpschool.com)에 도움을 청했다. 드디어 답변이 왔다. 답은 의외로 쉬운 데 있었다. 방법은 다음과 같다.
nl2br(newline to <br>) <----php의 명령어중에 다음과 같은 것이 있단다!! 이를 이용해서 아래와 같이 써주면 $content 라는 변수가 엔터를 먹고 출력이 되는 것이다. $content = nl2br($content);
PHP를 이용해서 파일 업로드하기
파일을 업로드하기 위해서는 php.ini라는 설정파일을 건드려 줄 필요가 있다. 참고로 이파일은 원래 압축 풀었던 php4.0.4(프로그램 디렉토리)에서 찾을 수 있다.
파일이름이 php.ini.dist 로 되어 있는데 이것을 '/usr/local/lib' 디렉토리에 복사하고 이름을 php.ini로 바꾸어 준다. 필자는 이것을 하기위해 너무나 많은 삽질을 했었다.
우선 php.ini파일에다가 업로드 파일용량 제한(2M)로 되어 있는 것을 20M로 바꾸어 준다. 꼭 20M로 해줄 필요는 없다.
;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; file_uploads = On ; Whether to allow HTTP file uploads upload_tmp_dir = ; temporary directory for HTTP uploaded files (will use system default if not specified) upload_max_filesize = 20971520 ; Maximum allowed size for uploaded files
바로 위의 'upload_max_filesize = 20M' 로 같이 바꾸어 준다. 그리고 'upload_tmp_dir =' 이부분은 안 써준다. 필자가 '/tmp'로 적어 주었지만…… 구냥 안 적어 주는 편을 권하고 싶다.
이렇게 설정을 잡아 주었다면 다음의 아주(?) 간단한 예제파일을 보자!!
-----------------입력 폼(z.html)--------------------------------- <html> <body> <form method="post" enctype="multipart/form-data" action="./zz.html"> <input type="file" name="userfile" size="15"> <input type="submit" value="업로드"> <input type="reset" value="다시"> </form> </body> </html> ------------------------------------------------------------------ -----------------파일 업로드 스크립트(zz.html)--------------------------- <? $savedir = "/files"; <----------이 부분을 유심히 보라!!! if(strcmp($userfile,"none")){ if(copy($userfile,"$savedir/$userfile_name")){ echo("파일을 실패"); exit; } if(!unlink($userfile)){ echo("실패"); exit; } } ?> ---------------------------------------------------------------------
필자가 가장 애(?)를 먹었던 부분이 2째 줄이다. 이 것은 파일을 저장할 디렉토리를 적어주는 부분이다. 그런데 여기서 조심해야 할 것은 ‘$savedir = “./files”;’ 와 같이 절대 경로로 적어주지 말라는 것이다. 다시 말해 경로 앞에 ‘./’ 점을 쓰지 말라는 것이다. 이 점만 조심하면 별탈없이 파일은 지정된 디렉토리에 저장이 될 것이다.
※ 업로드한 파일을 저장할 디렉토리는 다음과 같은 조건을 만족해야 한다.
- 퍼미션이 777 이어야 할 것
- 소유권이 nobody 이어야 할 것(이것은 apache의 httpd.conf 파일을 보면 알 수 있다.)
Tex 이용해서 문서 작성하기
TEX는 수학식 작성을 위한 전문적인 텍스트 처리 시스템(솔직히 필자는 프로그램이라고 말하고 싶다)이다. TEX를 이용해서 문서를 작성하기 위해서는 우리가 HTML문서를 만들 때 태그를 넣듯이 TEX만의 태그를 알아야 된다. 여기서는 사용법에 대한 것은 언급하지 않겠다. 만일 더 자세한 것을 알고 싶다면 RUNING LINUX(한빛 미디어)나 KLDP에서 문서를 찾아보라!! TEX에 맞게 태그를 넣었다고 해도 작업이 끝난 것이 아니다. 형식에 맞게 작성되었는지 TEX 프로그램이 검사를 한다. 다음과 같이 하면 된다.
#latex letter <------여기서는 letter.tex이란 파일을 예로 들었다. This is TeX, Version 3.14159 (Web2C 7.3.1) (letter.tex LaTeX2e <1998/12/01> patch level 1 Babel <v3.6x> and hyphenation patterns for american, french, german, ngerman, n ohyphenation, loaded. (/usr/share/texmf/tex/latex/base/latex209.def Entering LaTeX 2.09 COMPATIBILITY MODE ************************************************************* !!WARNING!! !!WARNING!! !!WARNING!! !!WARNING!! ... ... ...
마치 컴파일을 하듯이 뭐라고(^^;;) 위와 같이 나온뒤에 자동으로 프롬프트로 빠져 나온다.
ls 명령을 내려보면 못 보던 파일들(letter.aux, letter.dvi, letter.log)이 생겨난 것을 볼 수 있다. 아직 끝나지 않았다. 다음과 같이 명령을 내려준다.
#dvips -o letter.ps letter.dvi <--필자가 보기에는 letter.dvi파일을 기반으로 해서 letter.ps 파일을 만드는 것 같다.
제대로 입력을 했다면 letter.ps파일이 생겨난 것을 볼 수 있을 것이다. 그럼 우리가 지금까지 작성한 문서를 봐야 할 텐데… 과연 어디서 볼까? 바로 ghostview 라는 프로그램이다.
#ghostview &
그럼 창이 하나 뜬다. 거기서 우리가 만들었던 letter.ps 파일을 불러들여서 보면 우리가 작성한 문서를 볼 수 있다.
웹메일에서 메일서버의 계정에게 메일 보낼 때
hanmail.net 같은 곳에서 나의 메일서버의 계정에게 메일을 보내면 메일이 오지 않는 경우가 있다. 왜일까? 다음과 보내기 때문이다.
받는사람 | fat81@myfeel.hoseo.ac.kr |
상위 DNS 서버에 나의 도메인이 등록이 안된 경우이다. 이럴 땐 어쩔 수 없이 IP 주소를 이용하는 방법밖에 없다. IP주소는 네트워크상의 모든 컴퓨터의 고유한 주소이기 때문에 가능하다. 방법은 다음과 같다.
받는사람 | fat81@203.241.128.94 |
웹서버 모니터링, 정보보기
리눅서라면 거의 아파치(apache)를 웹서버로 쓰고 있을 것이다. 이번엔 이 놈(?)의 아파치가 무엇을 하고 있는지 모니터링 해보자!! 이를 하기 위해서는 몇 가지 설정이 필요하다. 우선 아파치 설정파일의 꽃(?)이라 불리는 httpd.conf 파일을 보자. 그리고 다음과 같은 부분을 찾아보자!!
--------------------------httpd.conf---------------------------------------- <Location /server-status> <-----모니터링을 하기 위한 설정 SetHandler server-status Order deny,allow Deny from all Allow from .your_domain.com <---'.your_domain.com' 부분에 자신의 IP를 적는다. </Location> <Location /server-info> <-------서버의 설정을 보기 위한 설정 SetHandler server-info Order deny,allow Deny from all Allow from .your_domain.com <---'.your_domain.com' 부분에 자신의 IP를 적는다. /Location> --------------------------------------------------------------------------
아파치를 제대로 설치했다면 위의 부분에 '#' 주석이 되어 있을 것이다. 그러나 우리는 과감히 주석을 모두 제거하자! 위와 같이 말이다. 그리고 ‘.your_domain.com’ 부분에 자신의 IP를 적는다. 그리고 httpd.conf 파일을 저장하고 웹서버를 재시동 시키자! 그리고 웹브라우저에서 다음과 같이 적는다.
1. server-status (웹서버 모니터링)
http://203.241.128.94/server-status/
※ 다음과 같이하면 20초마다 모니터링을 할 수 있다.
http://203.241.128.94/server-status/?refresh=20
2. server-info (웹서버 설정보기)
http://203.241.128.94/server-info
httpd.conf 파일의 설정을 보여준다. 그 외에도 필자도 모르는 자세한 부분까지 보여준다.
웹 서버 로그파일 처리하기
필자가 어느 날 우연히 'usr/local/apache/logs/access_log' 파일을 보았다. 'access_log‘파일은 웹서버에 접근한 내용이 저장되는 파일이다. 파일 용량을 보니 무려 10M 가까이 되어가고 있다. 필자는 이것을 어떻게 해야하나? 하고 무척이나 당황해 했었다. 하지만 나의 그런 걱정은 이내 없어졌다. 'access_log‘파일을 지우고 새로 'access_log' 이란 이름으로 만들면 되기 때문이다. 하지만 전문가들의 이야기를 따르자면 로그(log)파일은 보안적으로도 매우 중요하다고 한다. 그래서 기업이나 그런데는 따로 백업을 한다고 한다.(하지만 개인적 용도라면…)
입력창에 자동으로 글자가 찍히게 하려면...??
다음과 같이 해주자!!
<input type='text' name='title' value=[re] size='50'>
여기서는 'value=[re]' 가 중요하다. 물론 위의 태그는 PHP를 기준으로 했다.
랜카드 한 개에 2개의 IP 주기
이런 일은 흔히 일어나지 않겠지만, 필자의 경우가 바로 이런 경우였다. IP가 남아돌다니!!
그래서 하나의 랜카드에 2개의 IP를 주기로 했다. 그 방법은 예상보다 수월했다. 그 방법은 다음과 같다.
$ifconfig eth0:0 123.456.789.123 up <----여기서 123.456.789.123은 임의로 준 IP이다. $route add default gw 123.456.789.123 eth0:0 <-----여기도 위와 같다.
위의 경우는 하나의 랜카드에 하나의 IP주소를 할당할 때를 예로 든 경우이고, 만일 하나의 랜카드에 IP를 계속 추가하고 싶다면 다음과 같이 해주면 된다.
$ifconfig eth0:1 123.456.789.123 up $route add default gw 123.456.789.123 eth0:1
늘어날 때마다
eth0:1 eth0:2
위와 같은 방식으로 해주면 된다.
여러 가지 RPM 한번에 지우기
RPM을 지우다 보면 의존성 때문에 우리가 지우려 했던 것을 지우려다가 다른 것을 먼저 지워야 할 때가 있다. 필자는 다음과 같은 상황에 놓여 있었다. 필자가 지우려는 던 것은 A 프로그램 이었다.
'A(B 프로그램에 의존) → B(C 프로그램에 의존) → C(A 프로그램에 의존)'
결국 이렇게 되면 아무것도 지울 수 없게 된다. 이럴 땐 이렇게 하자! 필자도 설마하고 했었는 데 되었다. 다음과 같다.
#rpm -e A B C
하드 디스크 속도 올리기
리눅스를 사용하다 보면 가끔 버벅거리는 때가 있다. 창을 많이 띠워 놔서, 램이 부족해서 그런 것일 지도 모르지만 하드가 윈도우에서 사용할 때보다 느리다는 생각을 하게 될 것이다. 이제 이런 하드디스크의 속도를 높여보자!
우선 현재 하드디스크의 설정을 확인해보자. 방법은 다음과 같다.
hdparm -c /dev/hda(#은 쉘 프롬프트를 가리킨다)
위와 같이 입력하면 아래와 같이 나올것이다.
/dev/hda I/O support = 1 (32bit)
위와 같이 나오면 I/O suppot 는 on 상태
/dev/hda I/O support = 0 (16bit)
위와 같이 나오면 I/O support 는 off 인 상태
다음으로 DMA 설정을 확인해보자
쉘 프롬프트상에서 아래와 같이 입력한다.
#hdparm -d /dev/hda
위와 같이 입력했으면 아래와 같이 나온다
/dev/hda using_dma = 1 (on) 또는 0 (off) (DMA가 off 상태이면 0 이 on 상태이면 1 이 된다 on 상태로 나오는 분은 설정할 필요가 없다)
마지막으로 현재 하드디스크의 Reading속도를 확인해 보자
쉘 프롬프트상에서 다음과 같이 입력하자
#hdparm -t /dev/hda
위와 같이 입력했으면 다음과 같이 속도 정보가 나온다
/dev/hda (이 text가 나타나고 조금 기다려야 아래와 같이 속도체크 결과가 나타나기 때문에 조금 기다려야 한다. 1시간을 기다려도 아래와 같은 텍스트가 나오지 않는다면 자기 컴퓨터를 의심해 보라.) Timing buffered disk reads : 64MB in 2.91seconds = 21.99MB/sec. (위의 2.91seconds 는 제가 DMA 설정을 하고 난 후의 체크결과이다. 설정하기 전의 체크결과는 20seconds(초)정도가 나왔다)
그럼 이제 설정을 바꿔보자! 쉘 프롬프트상에서 아래와 같이 입력한다.
#hdparm -c 1 -d 1 /dev/hda
위와 같이 입력했으면 아래와 같은 설정 text들이 나타날것이다.
setting 32-bit I/O support flag to 1 setting 32-bit using_dma to 1 (on) I/O support = 1 (32-bit) using_dma = 1 (ON)
이제 설정이 끝났다. 마지막으로 부팅할 때마다 자동으로 실행되도록 /etc/rc.d/rc.local 파일에다가 다음을 한줄 추가시켜준다.
hdparm -c 1 -d 1 /dev/hda
※ 새로 설정한 것을 확인해보자! 아마 전보다 5배는 빨라졌을 것이다.
#hdparm -t /dev/hda
계정 디렉토리 설정하기
만일 계정을 새로 만들 때마다 Linux 라는 디렉토리가 새로 생성되게 하고 싶을 때…..
어떻게 할까? 물론 스크립트로 하는 방법도 있을 수 있다. 하지만 더 간단한 방법이 있다.
/etc/skel 에 가면 우리가 평소에 보았던 계정 디렉토리가 보일 것이다. 필자가 짐작하기에 계정을 추가 할 때마다 이 디렉토리를 /home/ 에 복사하는 스크립트가 실행되는 것 같다.
그렇다면 여기에 우리가 원하는 Linux 라는 디렉토리를 만들어보자! 그리고 계정을 만들어 보자!!
#adduser 계정이름
그리고 /home/계정이름 에 가서 한번 확인해보자!
디렉토리 색깔 보이게 하기
우리가 ls 명령어를 치면 각기 색깔로 출력이 된다. 그래서 색깔 만으로도 디렉토리인지 안닌지를 쉽게 구별해 낼수 있다. 하지만 어느날 갑자기 ls를 쳤는데 색깔이 안 나온다면 어떻게 할까? 그럴땐 다음과 같이 하자
#ls --color=yes <---- ls 명령을 치면 색깔이 찍혀 나온다.
하지만 그후에 다시 ls를 치면 전 상태로 돌아가게 된다. 계속 상태를 유지하고 싶다면 각 계정 홈 디렉토리의 .bashrc 파일에다 다음을 추가해주자!!
------------------.bashrc------------------------------------------ alias ls='ls -F --show-control-chars --color=tty' -------------------------------------------------------------------
만일 색깔이 찍히는 것이 싫다면,
#ls --color=no <-------하지만 그후에는 다시 전 상태로 돌아간다. 역시 .bashrc 파일에다가 다음과 같이 해주자!! -------------------.bashrc------------------------------------------ alias ls='ls -F --show-control-chars' --------------------------------------------------------------------
뒷 부분만 지워주면 된다!
리눅스에서 도스 명령어쓰기
처음 리눅스를 쓰는 사람이라면 명령어를 도스명령어와 혼동하는 경우가 흔히있다. 이럴 때 도스 명령어를 리눅스에서 쓸 수 있다면 좀더 리눅스에 친숙해질 수 있을 것이다. 하지만 필자는 결고 이것을 초보자들에게 권하고 싶진 않다. 역시 각 계정디렉토리에 있는 .bashrc 파일에다가 다음과 같이 적어주자!!
-------------------.bashrc------------------------------------------- alias dir='ls -alNF --color=auto' alias dir/w='ls --color=auto' ---------------------------------------------------------------------
파일을 저장한 후 로그아웃하고 다시 접속해서
$dir $dir/w
입력해보자!!
아파치에서 계정 디렉토리에 있는 파일 모두 보이게 하기
전 세계적으로 아파치의 점유율이 80%를 넘어선 이유가 여러 가지가 있겠지만 필자는 간단하면서도 강력한 기능에 있다고 생각한다.
솔직히 계정 디렉토리에 있는 파일을 모두 보이게 하면 보안적으로 매우 위험해진다. 역시 설정을 하기 위해서는 httpd.conf 파일을 설정해주어야 한다.
----------------httpd.conf--------------------------------------------- # UserDir: The name of the directory which is appended onto a user's home # directory if a ~user request is received. # <IfModule mod_userdir.c> UserDir Data <---각 계정의 디렉토리 밑에 Data라는 디렉토리를 보여준다. </IfModule> # # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # <Directory /home/*/*> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> # # DirectoryIndex: Name of the file or files to use as a pre-written HTML # directory index. Separate multiple entries with spaces. # <IfModule mod_dir.c> DirectoryIndex index.html <-----가장 먼저 찾는 파일은 말한다.(여기선 효력을 발휘하지 못한다.) </IfModule> -------------------------------------------------------------------------- 만일 가상 호스트를 하고 있다면 다음과 같이 한다. -----------------------httpd.conf----------------------------------------- <VirtualHost 203.241.128.99> ServerAdmin root@myfeel.hoseo.ac.kr DocumentRoot /home/fat81/Data <--- 위에서 설정해준 것과 동일해야 한다. ServerName fat81.co.kr ServerAlias *.fat81.co.kr ErrorLog logs/fat81.co.kr-error_log CustomLog logs/fat81.co.kr-access_log common </VirtualHost> -------------------------------------------------------------------------
계정 디렉토리 변경하기
우리가 계정을 만들어 주면 자동으로 /home 디렉토리 아래 생긴다. 하지만 이것을 우리가 원하는 곳으로 바꿀수 있다. 다음과 같이 해보자!
#adduser fat81 -d /usr/local <-------/usr/local 디렉토리아래에 만들어 진다.
※위와 같이 설정해주면 /usr/local 아래에 그냥 계정 파일들이 복사되기 때문에 따로 계정 디렉토리를 만들어 주기 바란다.
##adduser fat81 -d /usr/local/fat81 <---자동으로 fat81이라는 디렉토리가 생긴다.
또한 계정의 특정한 UID를 주고 싶다면, 그리고 tch 쉘을 쓰고 싶다면,
#adduser fat81 -u 505 -d /usr/local/fat81 -s /bin/tcsh
같이 한다.
아파치에서 "http://호스트네임/~계정" 막기
아파치에서는 'http://abc.com/~계정' 이런 식으로 계정 디렉토리에 접근이 가능하다.
이것을 막으려면 역시 httpd.conf 파일을 수정해주어야 한다.
------------------httpd.conf----------------------------------------------- #<IfModule mod_userdir.c> # UserDir Data #</IfModule> ------------------------------------------------------------------------
위와 같이 주석(#)처리 해주면 된다.
계정 설정 바꾸기
#adduser -D
입력 해보면 지금 현재 설정이 보일 것이다.
GROUP=100 HOME=/home/ INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel
위의 설정은 다음과 같은 옵션으로 바꿀 수 있다.
-b 기본 홈 : 사용자의 기본 홈 디렉토리 위치 변경 -e 기본 만료일 : 사용자의 계정이 말소되는 만료일 -f 기본 비 작동일 : 패스워드가 만료되고, 계정이 말소되기까지의 기간 -g 기본그룹 : 사용자의 그룹변경 -s 기본 쉘 : 사용자의 로그인 쉘을 변경
만일 기본 홈 디렉토리를 바꾸고 싶다면
#adduser -D -b /usr/local #adduser -D 확인해보자!!
모든 계정들의 설정을 동일하게 설정하고 싶다면??
#edquota -p fat81 linux jason
fat81의 설정을 linux와 jason의 설정에도 똑같이 설정한다.
Alt + Del +Ctrl 로 재부팅 못하게 하기
솔직히 우리는 무의식적으로 Alt + Del +Ctrl로 재부팅 해왔다. 하지만 이것은 키보드를 칠줄 아는 사람이면 누구나 할 수 있었다. 보안적으로도 좋지 못하다
----------------------------/etc/inittab------------------------------------ # Trap CTRL-ALT-DELETE #ca::ctrlaltdel:/sbin/shutdown -t3 -r now <-----주석을 붙여준다. --------------------------------------------------------------------------
그리고 재부팅 시키면 Alt + Del +Ctrl를 눌러도 재부팅되지 않는다.
특정 하드 디스크의 파티션 전체를 백업하는 방법은?
#cat /dev/hda2 > /backup/hda2_bak
X 윈도우 시스템 설정하기
#Xconfigurator ---> 그래픽 카드 설정잡기(자동설정) #XF86Setup ---> 그래픽 카드 설정잡기(자동설정) #xf86config ---> 수동설정잡기
부팅시 X 윈도우로 시작하기
/etc/inittab 파일을 보면 아래와 같은 부분이 있다.
-----------/etc/inittab------------------------------------------------------ id:3:initdefault: --------------------------------------------------------------------------
다음과 같이 수정해준다.
id:5:initdefault:
저장후에 재부팅해보자. 그래픽 인터페이스로 부팅하게 될 것이다!
원격 모니터링 하기
솔직히 필자는 리눅스에 이런 기능이 있다는 것을 깨닫고 너무 놀라워 했다. 정말 리눅스의 한계는 어디일까?(^^) 이제 기가 막힌 이 기능을 눈으로 확인해보자!! 우선 하기전에 한가지 설정을 하자. 만일 나에게 두 개의 리눅스 박스가 있는데 하나의 컴퓨터에는 모니터에는 없다. 그럼 어떻게 할 것 인가? 이런때 바로 이 기능을 이용한다. 우선 모니터가 없는 컴퓨터를 A라 하자! 그리고 모니터가 있는 컴퓨터를 B라 하자!
모니터 없는 컴퓨터 | A(IP:aaa.aaa.aaa.aaa) | |
모니터 있는 컴퓨터 | B(IP:bbb.bbb.bbb.bbb) |
우선 B에서 A로 접속을 해야 한다. 다음과 같이..
#xhost + aaa.aaa.aaa.aaa
그 다음 B에서 A로 텔넷 접속을 해야 한다.
#telnet aaa.aaa.aaa.aaa
B컴퓨터로 접속했다면 다음을 입력해주자!
#export DISPLAY=a.a.a.a:0.0
그런 다음 X에 실행되는 프로그램을 실행시켜 보자! (필자의 경우에는 B컴퓨터에 한글이 깔려 있었다. 그래서 한글을 실행시켜 보았다. 만일 마땅한 프로그램이 없다면 한텀을 실행시켜보자! 다음과 같이 말이다!!
#hanterm &
그럼 모니터가 있는 B컴퓨터에서 한텀창이 뜰 것이다. 참으로 신기하지 않은가!? 놀라운 기능은 이 뿐만이 아니다. B컴퓨터에서 A컴퓨터의 화면을 캡처할 수 있다. 방법은 다음과 같다.
#DISPLAY=aaa.aaa.aaa.aaa:0 xwd -root | convert - screen.png #ls
screen.png 라는 파일이 보일 것이다. 브라우저를 띠워 눈으로 확인해보자!! 놀랍지 않은가??
※ 참고로 지금 접속해있는 클라이언트 목록을 보고 싶다면 다음과 같이 하자!
#xhost access control disabled, clients can connect from any host INET:bbb.bbb.bbb.bbb <---bbb.bbb.bbb.bbb 의 컴퓨터가 접속해 있다.
만일 접속을 차단하고 싶다면 다음과 같이 한다.
#xhost - bbb.bbb,bbb,bbb
RPM 억지로 깔아보기!!
이건 솔직히 필자가 보기에도 정말 권하고 싶지 않은 팁(Tip)이다. 하지만 하고 싶다면 다음과 같이 한다.
#rpm -ivh --force 프로그램.rpm
who 의 히스토리보기
who 명령어는 지금 현재 접속해있는 사용자의 목록을 보여주는 기능을 한다. 하지만 지난 시간별로 접속했던 사용자를 보고 싶다면 다음과 같이 하자!
#who /var/log/wtmp
배너 설정해주기
여기서 말하는 배너란 우리가 흔히 홈페이지에서 보는 배너가 아니다. 우리가 서버에 텔넷으로 접속하면 기본적으로 아래와 같은 메시지가 뜨게 된다.
Welcome to WOW Linux (Puberty) -------------- 1
그리고 우리가 로컬에서 부팅하면
WOW Linux release 6.2 (Puberty) Kernel 2.2.16-3kr2 on an I686 ----------------- 2
위와 같은 메시지가 뜬다. 어찌보면 위와 같은 메시지는 자칫 보안적으로 문제를 일으킬수 있다. 시스템의 정보를 보여주기 때문이다. 위에서 보면 와우리눅스 6.2를 OS로 사용하고 커널 버전과 CPU도 나와있기 때문이다. 그리고도 각자 시스템의 개성을 고려한다면, 모든 시스템이 모두 저와 같은 메시지를 가지고 있다면 보는 사람도 지루해할 것이다. 그럼 우리가 각자의 개성에 맞게 설정해주자!!
우선 설정하는 파일이 어디있는지부터 알아야 한다. 우선 외부에서 로컬로 접속할 때 보이는 화면(1)을 설정하는 파일은 /etc/issue.net 이다. 파일을 보면 위와 같은 메시지가 있는 것을 볼 수 있다. 지우고 직접 설정해주자!
2 같은 경우는 우리가 직접 로컬로 로그인 할 때 보게 되는 화면이다. 역시 이 파일은 /etc/issue 이다. 역시 기존의 멘트를 지우고 직접 설정해주자!! 마지막으로 우리가 로그인을 하고 들어가면 역시 메시지를 보여줄 수 있는데, 그 설정 파일은 /etc/motd 이다. 역시 위와 같이 설정해준다.
ifconfig와 route 사용법
필자가 랜카드를 잡기 위해 가장 많이 사용했던 명령어가 바로 이것 이었다. 그 만큼 ifconfig를 잘 사용한다면 리눅스에 네트워크를 설정하는 것은 누워서 떡먹기보다 쉬운 일이 될 것이다. 사용법은 다음과 같다.
#ifconfig 인터페이스 IP [넷마스크] [브로드캐스트주소] up/down ex) #ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up #ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 down
다음 route 사용법을 알아보도록 하죠!! 리눅스에서 라우팅 테이블의 중요성은 필자가 강조하지 않아도 알 것이다. 그 중요한 라우팅 테이블을 추가 및 삭제 편집을 하기 위해서는 route 명령어의 사용법은 필수적으로 알아야 한다. 다음과 같다.
#route add/del -net/-host network/host address -----1 #route add/del default gw IP dev interface ------2 ex) 1) route add -net 192.168.1.0 dev eth0 , route add -host 192.168.1.1 dev eth0 route del 192.168.1.1 dev eth0 2) route add default gw 192.168.1.1 dev eth0 route del default
부팅시 자동으로 랜카드 잡기
필자는 솔직히 부팅할 때 리눅스에서 자동으로 랜카드를 잡아주는 것이라고 생각했었다. 그런데 이런 나의 생각이 틀리다는 것을 나는 DHCP를 하면서 깨달았다.
내가 netcfg를 써서 인터페이스 프로토콜을 DHCP로 바꾸었는데 그 이후 부팅부터는 자동으로 랜카드를 잡아주지 않는 것이었다.
당연히 랜카드를 잡지 못한 클라이언트는 DHCP서버로부터 IP를 부여 받지 못했다. 필자는 안되는 머리를 쥐어뜯어 가며 고민했었다.
하지만 문제는 의외로 간단하게 풀렸다. 필자가 ONBOOT=OFF 로 준것이었다.
이것을 ON 으로 바꾸어 주어야만 부팅할 때 자동으로 랜카드를 찾는 다는 것을 그제서야 깨달은 것이다.
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
위의 파일을 보면 'ONBOOT' 라는 항목이 보일 것이다. 그 항목이 ON 으로 되어 있는지 반드시 확인하자!!
시작할 때 부팅로그 보이게 하기
리눅스는 윈도우와는 달리 부팅할 때 부팅 메시지를 보여준다. 근데 계속 보이다가 화면이 clear 되고 로그인 화면이 뜬다. 이렇게 되면 'Shift+Page Up'를 이용해서 부팅 메시지를 볼수 있지만 마지막에 ‘rc.local' 파일에 의해서 실행되는 결과는 볼 수가 없다. 만일 rc.local 파일에 설정을 잘못해줘서 에러가 났는데 그 에러 메시지를 볼 수 없다면 참으로 곤란할 것이다. 이와 같은 불편함을 없애기 위해 로그인 화면을 보여주기 전에 부팅 메시지 화면이 clear 되는 것을 막을 수 있다. 다음과 같이 설정하자!! 우선 /etc/inittab 파일을 수정해주어야 한다.
-------------------/etc/inittab---------------------------------------------- # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 --------------------------------------------------------------------------
위와 같은 부분을 아래와 같이
------------------------/etc/inittab----------------------------------------- # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty --noclear tty1 --------------------------------------------------------------------------
수정해준다.
Q-mail에서 pop3 데몬 띠우기
모든 메일 프로그램이 그렇듯 메일을 보내고 받기 위해서는 SMTP 와 POP3 프로토콜을 이용한다. 그래서 리눅스 박스에서는 각각의 데몬을 띠워 주어야 한다. 하지만 필자는 POP3데몬이 띠워지지 않았다. 원래 Q-mail 에서는 /etc/rc.d/rc.local 파일에다가
---------------------/etc/rc.d/rc.local--------------------------------------- #start qmail POP3 server /usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup myfeel.hoseo.ac.kr \ /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir & --------------------------------------------------------------------------
위와 같이 적어주었다. 하지만 부팅할 때 마다 다음과 같은 에러가 뜨면서 POP3 데몬이 뜨지 않았다.
tcpserver: fatal: unable to bind: address already used
필자는 위의 에러를 보고 첨에는 bind 때문인 줄 알았다. 하지만 관련 문서를 뒤지다가 우연히 전에 설치했었던 sendmail 과 qpopper 가 생각났다. 역시 문제는 여기에 있었다. /etc/inetd.conf 파일을 보니 qpopper 부분이 활성화 되어 있었다. 얼른 그 부분에 주석을 첨가하고 다시 inetd을 치고 나서, 다시 부팅을 하니 에러 없이 데몬이 실행 되었다. 그러니까 결과 적으로 한 포트에 2개의 POP3 프로그램을 띠우려다가 문제가 발생한 것이었다. 참고로 qpopper은 POP3 프로그램의 일종이다.
-dist 로 끝나는 파일???
우리가 PHP를 설치하면 PHP의 설정을 잡아주기 위해 php.ini 파일을 찾는다. 하지만 find 명령어를 이용해서 찾으면 결과는 그런 파일은 없다라고 나온다. 필자는 이것 때문에 너무나 많은 시간을 소비했다. 하지만 다음과 같이
#find -name php.ini*
명령을 내려주면 결과중에 ‘php.ini-dist'라는 파일이 보일 것이다. 이것의 이름을 ’php.ini'로 바꾸어서 사용하면 된다. 그래서 ‘-dist'로 끝나는 파일은 파일명을 바꾸어서 사용하면 되는 것이다.
특정 계정이 su 명령어 못 쓰게 하기
su 라는 명령어는 계정을 바꿀 때 쓰는 명령어이다. 하지만 이것은 보안적으로 취약할 수 있다는 점을 내포하고 있다. 왜냐하면 이 명령어를 실행하는 중은 root 권한으로 실행되기 때문이다. 그래서 이러한 점을 사전에 방지하기 위해서 우리는 특정계정에게 아예 su 라는 명령어를 못쓰게 할 수 있다. 방법은 다음과 같다.
- 우선 su 라는 명령어를 허용하는 계정들의 그룹을 만들자!!(아무거나 만들어도 된다. 여기서는 ‘wheel'라는 그룹을 예로 들었다.)
- /bin 디렉토리에 가면 su 라는 파일이 있다. 'll su'라고 치면, 아래와 같이 나온다!!
-rwsr-xr-x 1 root root 14188 3월 7 2000 su* #chown root.wheel su #chmod 4770 su
위와 같이 소유권과 퍼미션을 정해주면 'wheel'라는 그룹에 속한 계정은 su 라는 명령어를 사용할 수 있다!!
스니핑 당하는지 감지하는 방법
ifconfig | 현재 시스템의 네트워크 상황을 알려주는 명령어다. |
[oracle@web1 oracle]$ ifconfig eth0 Link encap:Ethernet HWaddr 00:B0:D0:B0:D3:36 inet addr:211.115.213.46 Bcast:211.115.213.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4044402 errors:0 dropped:0 overruns:0 frame:3 TX packets:99955 errors:0 dropped:0 overruns:0 carrier:6 collisions:419 txqueuelen:100 Interrupt:16 Base address:0xecc0
이것은 정상적인 시스템에서 나오는 내용이다. 만약에 스니핑 공격을 당하고 있는 시스템이라면 eth0 부분의 3번째 라인이 다음과 같이 변할 것이다.
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500
여기서 PROMISC 는 현재 이더넷 인터페이스가 'Promiscuous Mode'로 되어있다는 의미이다. 즉, 스니핑을 돌릴 때 변한다.
fsck 로 시스템 복구하기
며칠전 필자는 황당한 일을 경험했다. 그것은 바로 갑자기 정전이 된 것이다. 정말 황당했다!! 하지만 문제는 그것이 아니었다. 정전되었던 서버를 다시 켜는 순간, 시스템 에러가 난 것이었다. 원래 갑자기 시스템이 종료되고 난 뒤 다시 부팅시키면 자동으로 fsck가 실행되어 오류를 고쳐준다.
/dev/hda1 : ========================================================= 99%
위와 같이 나온다. 하지만 fsck로 안되는 것들은 오류메세지를 내보낸다.
Faled root password : Ctrl + D reboot
이럴때는 침착하게 루트 패스워드를 입력해서 쉘로 빠져 나온다. 그리고
#fdisk -l
명령을 치고
#mount
해서 현재 마운트되어 있는 파티션이 어느 것인지를 알아본다. 그리고 마운트가 안되어 있는 파티션이 있다면 그 것은 오류수정에 실패를 했다는 것이다. 이제 내 손으로 오류를 수정해줄 차례다. 다음과 같이 말이다.
#fsck /dev/hda5 <---만일 /dev/hda5 파티션이 마운트가 안되어 있을 때
여기서 주의할 점은 반드시 /dev/hda5 파티션을 언마운트 해주어야 한다는 점이다. 다른 것도 마찬가지이겠지만, fsck를 이용하려면 해당 파티션을 언마운트 시킨 상태에서 해야만 한다. 다른 마운트 안된 파티션들도 해준다. 제대로 오류가 수정되었다면, 재부팅을 시키거나, 재부팅 시킬 수 없는 상황이라면 일일이 마운트를 시켜주자!!
※ 참고로 필자는 위와 같은 방법을 사용해서 문제를 해결했다… 도움이 되었길…
ping를 이용해서 브로드캐스팅하기
브로드 캐스팅이란 일-대-모두(one-to-all)간의 통신을 말한다. 기존에는
#ping 203.241.128.91 <- 특정한 IP에다가 ping을 보냈다.
하지만 203.241.128.0, 203.241.0.0 과 같이 네트워크에다가 ping을 보낼 수가 있다. 방법은 다음과 같다.
#ping 203.241.128.0 -b #ping 203.241.0.0 -b PING 203.241.128.0 (203.241.128.0) from 203.241.128.94 : 56(84) bytes of data. 64 bytes from myfeel.hoseo.ac.kr (203.241.128.94): icmp_seq=0 ttl=255 time=0.1 ms 64 bytes from info.hoseo.ac.kr (203.241.128.91): icmp_seq=0 ttl=255 time=2.2 ms (DUP!) 64 bytes from 203.241.128.145: icmp_seq=0 ttl=255 time=3.0 ms (DUP!) 64 bytes from 203.241.128.146: icmp_seq=0 ttl=255 time=7.7 ms (DUP!) 64 bytes from 203.241.128.41: icmp_seq=0 ttl=255 time=9.1 ms (DUP!) 64 bytes from 203.241.128.40: icmp_seq=0 ttl=255 time=10.4 ms (DUP!) 64 bytes from 203.241.128.95: icmp_seq=0 ttl=255 time=11.5 ms (DUP!) 64 bytes from 203.241.128.254: icmp_seq=0 ttl=32 time=12.7 ms (DUP!) 64 bytes from 203.241.128.102: icmp_seq=0 ttl=63 time=13.8 ms (DUP!) 64 bytes from myfeel.hoseo.ac.kr (203.241.128.94): icmp_seq=1 ttl=255 time=0.2 ms ... ...
※ 참고로 ping 203.241.128.0 와 ping 203.241.128.255를 결과는 똑같다. ping을 보내주는 IP도 같다.
Mysq에서 에트리뷰트의 속성 바꾸기
원래 만들어져 있는 테이블의 에트리뷰트의 변수형이나 이름을 바꾸는 것은 ‘alter table'로 가능했었다. 하지만 기존의 에트리뷰트에다가 primary key 이나 널 값을 주지는 못했다. 이것은 순전히 필자의 얘기다. 원래 방법은 있었지만 필자는 몰랐다. 방법은 다음가 같다.
mysql>alter table users(테이블명) add (constraint uk_id_right unique (id_right));
참고로 위에서 users는 테이블명이고, id_right는 에트리뷰트 이름이다.
터미널에서 MP3 듣기
엑스윈도우에서는 XMMS 가 있지만 그냥 일반 터미널 창에서는 XMMS를 실행시킬 수가 없다. 그 이유는 X window가 아니기 때문이다. 하지만 그렇다고 MP3를 못 듣는 것은 결코 아니다. 방법은 아래와 같다.
#cd /music --> 여기서 music은 듣고 싶은 MP3 파일이 있는 디렉토리를 뜻한다. #mpg123 * --> music 디렉토리에 있는 모든 MP3 파일을 차례대로 들을 수 있다.
만일 다음 곡으로 넘어가고 싶다면 'Ctrl + D'를 누른다. 그리고 그만 듣고 싶다면, 다른 터미널을 띄워서 로그인 한 뒤 kill 명령어를 이용해서 프로세스를 죽인다.
[필독] 복구하는 방법 !!
이 내용만큼은 필독하기를 권한다! 다른 것도 필독했으면 하는 마음이지만, 이것만큼은 꼬~옥 말이다. 필자의 경험을 예로 들겠다. 필자는 쉘을 업그레이드하고 나서 재부팅을 했더니 부팅이 안되는 문제에 부딪혔다. 부팅디스켓이 있었다면 문제는 간단했겠지만 그것마저도 없는 절박한 상황이었다. 다음은 필자가 행했던 일들을 순서대로 나열한 것이다.
- 와우 6.2(필자가 설치한 버전) CD를 넣고 부팅 한다. 이때 당연히 CD부팅으로 설정돼 있어야 한다.
- 설치화면이 뜨면 ‘linux rescue' 라고 입력하고 부팅 한다.
- bash쉘로 빠져 나올 것이다. (※ 여기서부터는 램 디스크를 사용한다.)
- 설정을 바꾸어줄 디바이스를 마운트 한다. 그 전에 마운트할 디렉토리를 만들어 준다!!
ex) mount -t ext2 /dev/hdb2 /d <-- 여기서는 d 디렉토리에다가 마운트한다.
- 작업을 다했다면 'sync' 내린다. 참고로 이 명령은 램디스크에서 작업했던 것을 하드디스크에 저장하게 된다!!
로그파일 실시간 보기
freebsd에서는 누군가가 서버에 접속을 하려고 시도할 때 실시간으로 메시지를 띄워준다. 그럼으로써 관리자는 어떤 사람이 어떤 서비스 접근을 위해 시도를 했는지 알 수 있다. 물론 리눅스에서도 할 수 있다. 방법은 다음과 같다.
#tail -f filename ex) /var/log/secure
하나의 콘솔에서 자동으로 파일에 변화가 있을 때마다 출력해준다!!
SSH를 Tcp Wrapper와 연동하게 설치하기
텔넷이나 FTP는 기본적으로 Tcp Wrapper 연동이 된다. 그런데 나중에 추가로 설치하는 SSH나 아파치는 따로 설정을 해주어야 연동이 된다. SSH를 Tcp Wrapper와 연동하게 하기 위해서는 설치할 때 설정을 잡아주어야 한다. 아래와 같이 말이다!!
#configure --with-libwrap
그리고 나서 'make' , 'make install'을 입력하여 설치한다. 그리고 '/etc/hosts.allow'와 '/etc/hosts.deny'파일에다가 설정을 해준다!!
init 스크립트 만들기!!
프로그램을 소스와 RPM으로 설치하는 것의 가장 큰 차이점이 있다면 RPM으로 설치하면 자동으로 '/etc/rc.d/init.d/' 아래에 파일이 자동으로 설치되어서, 서비스를 시작하고 싶으면 'start|stop|restart' 해주면 쉽게 데몬을 제어가 가능하다. 하지만 소스로 설치할 경우에는 파일이 자동을 생성되지 않기 때문에 우리 손수 만들어 주어야 한다. 필자의 경우는 bind를 설치하는 과정에서 손수 스크립트를 만들어 주었다. 아래를 참조하자!!
------------------------------name---------------------------------------- #! /bin/sh . /etc/rc.d/init.d/functions [ -f /usr/local/sbin/named ] || exit 0 RETVAL=0 # See how we were called. case "$1" in start) echo -n "Starting NAME services: " daemon named RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/name ;; stop) echo -n "Stopping NAME services: " killproc named RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/name ;; restart) $0 stop $0 start RETVAL=$? ;; *) echo "Usage: inet {start|stop|status|restart|reload}" exit 1 esac exit $REVAL --------------------------------------------------------------------------
FreeBSD에서 윈도우 메니져 바꾸기
리눅스에서는 switchdesk 라는 명령어가 있어서 손쉽게 바꿀 수 있었다. 하지만 프비에서는 좀 다르다. 각 계정마다 '.xinitrc'라는 파일이 있다. 이 파일에다가 윈도우 메니져 마다 각각 아래와 같이 적어준다.
--------------.xinitrc---------------------------------------------------- exec startkde <--------- KDE의 경우 gnome-session & exec afterstep <------------- GNOME + AfterStep의 경우 exec gnome-session <------------GNOME + Enlightenment의 경우 xterm & exec afterstep <------------AfterStep의 경우 xterm & [ ! -d $HOME/GNUstep/Library/WindowMaker ] && /usr/X11R6/bin/wmaker.inst exec /usr/X11R6/bin/wmaker <-------- WindowMaker의 경우 xterm & exec fvwm2 <--------- fvwm2의 경우 --------------------------------------------------------------------------
이 밖에도 X 초기화 파일은 아래와 같다.
/root/.xinitrc /root/.xsession /usr/share/skel/dot.xinitrc /usr/share/skel/dot.xsession
'※ 부팅할 때 자동으로 X윈도우로 로그인하게 할려면?'
'/etc/ttys' 파일에 다음을 고쳐준다!
------------/etc/ttys------------------------------------------------- ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure --------------------------------------------------------------------
재부팅해보자!
프비에서 X윈도 시작 파일 만들기
윈도에서도 시작 프로그램이라는 것이 있다. 프비에서도 X윈도가 시작할 때 자동으로 실행하게 해줄 수 있다.
'.xinitrc'나 '.xsession' 파일에다가
---------------------------.xinitrc .xsession-------------------------------- hanterm -geometry 80*25+64+64 & <----반드시 ‘&’를 붙여준다!! exec gnome-session --------------------------------------------------------------------------
적어준다.
프비에서 사운드 카드 잡기(es_1371)
우선 모듈을 띠워야 한다. 이 것은 기존의 리눅스에서 사운드카드를 잡는 방법과 같다.
프비에서 모듈은 ‘/modules' 디렉토리에 있다. 필자는 운이 좋은 것인지(?) 모듈 디렉토리에 모델에 맞는 모듈이 있었다. 있다면 어서 올려보자!!
# kldload -v /modules/snd_es137x.ko
무슨 'pcm'이라는 하드웨어를 찾았다는 식으로 메시지가 뜰 것이다.
# kldstat <--- 현재 올라가 있는 모듈을 출력해주는 명령이다.
성공적으로 올라가 있다면,
# cat /dev/sndstat
쳐보자!! 사운드 카드를 잡았다는(?) 메시지가 뜰 것이다. 그리고
# cd /dev/ # ./MAKEDEV snd0
위의 과정까지 제대로 따라왔다면 사운드카드를 잡기위한 작업을 성공적으로 마쳤다고 봐도 될 것이다.
이제는 직접 음악을 들어보자! 가장 많이 쓰이고 있는 'xmms'를 설치하자!
# cd /usr/ports/audio/xmms # make install clean
제대로 설치했다면, 터미널에서
# xmms &
낮 익은 xmms가 뜰 것이다. 그리고 거기서 ‘options → preferences → output plugin → esound output plugin 1.2.4'로 바꾸어 준다. 이제 모든 설정이 끝났다. 음악을 들어보자!
삼바로 연결할 수 있는 윈도 컴퓨터 찾기
그냥 프롬프트 상에서
# findsmb
라고 치면 현재 삼바로 연결할 수 있는 윈도 컴퓨터 목록과 이름이 출력된다.
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION ---------------------------------------------------------- 210.119.108.71 unknown nis name 210.119.108.91 unknown nis name 210.119.108.121 unknown nis name .. ..
NTFS 파일시스템 마운트하기
처음 필자는 NTFS 파일시스템은 리눅스에서 마운트가 안되는 줄 알고있었다. 후에 나의 이런 생각은 잘못된 것임을 알게 되었다. 마운트 하는 방법은 기존의 방법과 같다. 마치 VFAT 형식을 마운트 하듯 말이다.
#mount -t ntfs /dev/hda1 /dosa
X매니저 사용 할 때...
X매니저라는 프로그램을 리눅스를 쓰는 사람이라면 알고 있을 것이다. X서버에 접속해서 윈도우에서도 리눅스 X윈도우를 쓸 수 있게 만들어주는 프로그램이다.
필자는 랜카드를 두 개 꽂아 쓰고 있다. 마스커레이드 때문이었다. 하지만 이것이 X매니저에서는 호스트를 검색하는데 문제가 되는 원인이었다. 필자는 처음에 왜 호스트가 안 찾아지는지 원인을 알 수가 없었다. 하지만 두 개의 랜카드 중에서 하나를 빼고 재부팅 후 찾아보니 그제야 호스트를 찾을 수 가 있었다. 랜카드를 빼지않고 제어판의 장치관리자에서 랜카드를 삭제시켜도 된다. 참고로 리눅스 서버의 설정을 살펴보자!!
- gdm 사용 시 설정법(GNOME 환경)
/etc/X11/gdm/gdm.conf 파일의 [xdmcp] 섹션에서 Enable의 값을 1로 설정하고 gdm 또는 리눅스를 다시 시작합니다. - kdm 사용 시 설정법(KDE 데스크탑)
/etc/X11/xdm/xdm-config 파일의 다음 라인을 코멘트로 막습니다.
DisplayManager.requestPort: 0 ==> !DisplayManager.requestPort: 0
/etc/X11/xdm/Xaccess 파일의 다음 줄에 코멘트 기호(#)를 삭제합니다.
#* #any host can get a login window ==> * #any host can get a login window
위와 같이 두 개의 파일을 수정한 후 시스템을 리부팅 한다.
LILO 복구하기
필자는 얼마전 리눅스를 설치한 뒤 윈도우를 설치했다가 리로가 지워지는 일이 있었다. 순간 당황하지 않을 수 없었다. 복구 디스크도 없는 상태였기 때문이었다. 나에게 주어진 것은 리눅스 설치 CD와 아무 것도 들어 있지 않은 빈 디스켓이었다. 이곳저곳을 찾아다니다가,
CD만으로도 복구가 가능한 방법을 알게 되었다. 그 방법은 다음과 같다.
우선 CD 부팅을 한다. 그러면 ‘boot:'라는 프롬프트가 떠 있을 것이다. 거기서 아래와 같이
boot : linux root=/dev/hda6 initrd=
여기서 중요한 것은 루트 파티션을 알아야 한다. 위의 경우에는 hda6에 루트 파티션이 있는 경우이다. 만일 루트 파티션을 잘못 정해주었다면 부팅과정에서 'kernel panic' 이라는 메시지가 뜨면서 다운된다. 이때 크게 걱정하지 않아도 된다. 다시 재부팅해서 다른 파티션으로 시도 한다. 만일 제대로 정해주었다면 부팅이 될 것이다. 부팅 했다면 로그인해서 프롬프트에서 'lilo'라고 쳐주면 다음 부팅 때부터 반가운 LILO를 보게 될 것이다.
패치하기
솔직히 말해서 필자는 패치에 소홀해왔던 것이 사실이었다. 왜냐하면, 귀찮은 것두 귀찮은 것이었지만, 하는 방법을 몰랐기 때문이었다. 하지만 패치는 매우 중요한 작업임을 깨닫고, 지금은 될 수 있는 한 최신 패치가 나오는 대로 할려구 하고 있다. ㅡ.ㅡ;
방법은 다음과 같다.
#cat /usr/local/ftp/linux-2.4.12-ipvs-0.9.4.patch | patch -p1
위의 예를 보시면 패치하는 형식을 아실 수 있을 겁니다. 패치하는 순서을 설명하자면,
- 우선 패치(.patch)의 압축을 풀어준다.
- 그리고 난 뒤에 패치를 적용시킬 디렉토리에 가서 위의 명령을 실행시켜주면 됩니다.
제대로 패치가 되었다면,
patching file include/net/ip_vs.h patching file net/Makefile .. .. ..
이런 식으로 출력되어 나옵니다.
레드햇 7.2에서 윈도우 매니저 빠꿀 때
/etc/sysconfig/desktop를 열어보면 GNOME 라고 되어있는데 KDE로 바꾸면 된다.
레드햇 8.0 에서의 한텀 배경 색깔 바꾸기
레드햇 8.0을 설치하면, 바탕이 회색으로 나온다. 이것을 예전 처럼 바꾸기 위해서는
echo "hanterm*background: black" >> /usr/X11R6/lib/X11/ko/app-default/Hanterm echo "hanterm*foreground: white" >> /usr/X11R6/lib/X11/ko/app-default/
이런 식으로 해준다..
윈도우 폰트 사용할 때 (레드햇 8.0)
나는 윈도우 폰트를 가져와서 쓸 수 있는 문서를 보고 했었던 적이 있다. 하지만 이상하게도 KDE 제어판에서 글꼴 등록이 안되는 것이었다. 아무리 확인해봐도 결과는 마찬가지였다. 결국 인터넷의 Q&A란을 뒤져 답을 찾았다. 해결책은 아래와 같다.
#vi /etc/fonts/fonts.conf --------------------------------------------------- <dir>/usr/X11R6/lib/X11/fonts/ms-gulim</dir> <---- 이줄을 추가해준다. <dir>/usr/X11R6/lib/X11/fonts/Type1</dir> <dir>/usr/share/fonts</dir> <dir>~/.fonts</dir> ---------------------------------------------------
위와 같이 폰트 경로를 추가해준다.
그리고
#fc-cache
모질라에서 인터넷상의 뮤직비디오 보기!~
여기서는 xine라는 프로그램을 이용해서 볼 것이다.
우선 현재 xine라는 프로그램이 설치되어 있다면, 지우도록 하자!
rpm으로 설치되어 있다면, xine, xine-ui 를 삭제한다.
xine-lib 1beta2 설치
다음의 사이트에서 받도록 하자!
xine-lib-1-beta2.tar.gz을 받았다. 하지만 이번 버전은 버그가 있어서 패치파일을 따로 받아서 패치해주어야 한다.
ftp://ftp.mizi.com/incoming/xplug/xine-lib-input_http.patch
#cd xine-lib-1-beta2 #patch -p0 < xine-lib-input_http.patch #./configure #make #make install
xplug 컴파일 및 설치
아래의 사이트에서 받도록 한다.
ftp://ftp.mizi.com/incoming/xplug/xplug-20030127-2.tar.gz
압축을 풀고나서.
#cd xplug #make #install -m555 xplayer /usr/bin #install -m555 xplug.so /usr/lib/mozilla/plugins/
설치 되는 디렉토리(/usr/bin , /usr/lib/mozilla/plugins/)는 현재 환경에 맞게 수정하면 된다.
이제 직접 제대로 보이는 지 확인해보자!!
http://cafe61.daum.net/_c21_/bbs_read?grpid=LN5q&fldid=AkbA&list=N&listval=0001Czzzzzzzzzzzzzzzzzzzzzzzzz&topid=0001 rzzzzzzzzzzzzzzzzzzzzzzzzz&contentval=0001Bzzzzzzzzzzzzzzzzzzzzzzzzz&datanum= 73&head=&subj=%3Cfont+color%3D%22%23B0008F%22%3E%B9%C2%C1%F7%BA%F1%B5%CD... %A2%DD+%B4%C0%B3%A6%B5%B5+%C1%C1%B1%B8...%B3%EB%B7%A1%B5%B5+%C1%C1%B3%D7%BF% E4....%5E%5E%3C%2Ffont%3E&nick=mina0425&id=fxRZ163Wo-k0&smsnum=- 1&smsvalid=0&count=51&day=20021204000134&datatype=9&selectyn=N&avatarcate=1
윈도우 설치 후 부트 매니저 지워졌을 때~~
전에는 이럴때 부트 디스켓이 필수적으로 필요했다. 하지만 요즘 나오는 배포판에서는 부팅 디스켓을 만들 필요가 없다. 왜냐하면 CD로 하면 되기 때문이다.
CD를 넣고 부팅을 한후에
LILO : vmlinuz root=/dev/hda2
위에서 참고로 /dev/hda2 는 root 파티션을 나타냈다. 이것은 충분히 여러분들과 다를 수 있다는 점에 유의하자! 만일 맞지 않으면 커널 패닉을 낼 것이고 제대로 되었다면, 부팅이 될 것이다.
여기서 또 한가지!!
만일 엄청난 모듈 오류를 내고 엄췄다면, linux rescue 로 부팅하자!
그래서 루트 파티션을 찾아서 마운트해주고
#chroot (루트 파티션을 마운트한 디렉토리명)
설정을 고쳐주고 'sync' 를 해주고 재 부팅한다.
VI 에서 syntax 먹게 하는 방법
1. syntax 란 무엇인가?
syntax란 파일의 종류에 따라 그에 알맞은 파일의 문법을 보고 문장에 색을 넣어 사용자가 보기 쉽게 한다.
보통 프로그래밍을 할때 많이 쓰인다.
2. syntax 의 지원
syntax 는 예전의 vi 에서는 사용이 되지 아니한다.
vi 가 아닌 vim에서 사용이 되어지며, vi에서 그냥 사용하려고 하면 알수 없는 명령어라는 에러 메시지가 나온다.
일반적으로 리눅스에서 vi라고 입력하였을때 실행되는 vi는 vim이 일반적이면 다른 유닉스일 경우 vim이 없거나 아니면 vi와 vim이라는 두개의 다른 프로그램으로 존재한다.
3. 사용법
vim 의 명령 모드에서 syntax on 을 입력함으로서 바로 사용될수가 있다.
해제하고 싶으면 syntax off 라는 명령을 사용한다.
4. Q & A
만일 php라는 확장자는 화면의 글들이 색이 변화하지 않는다.(하지만 php3 나 다른파일은 syntax 명령이 듣는다.)
매뉴얼에 보면 이에 대해서 언급을 하고 있다.
기본적으로 vim은 php3라는 확장자는 인식하지만 php는 알수 없는 파일이라고 인식을 하여 알맞은 파일을 찾을수 없기 때문에 파일의 알맞은 속성을 몰라서 이런 일들이 발생을 한다.
리눅스에서는 /usr/share/vim 하위 디렉토리와 FreeBSD에서는 /usr/local/share/vim 하위 디렉토리에서 설정을 해줄수가 있다. 하위 디렉토리에 보면 filetype.vim 이라는 설정file이 존재하는데
그 파일에 확장자에 해당하는 tag들을 지정할 수 있다.
먼저 php라는 단어로 검색하여 php3와 연결된 곳을 찾는다. 그런다음 *.php3 라는 글 대신에 *.php3,*.php 라는 글로 대치 시키게 된다면 간단히 문제가 해결이 될것이다.
VMware 에서 레드햇 9 설치시 네트워크 문제
다른 배포판들은 상관없지만, 유독 레드햇 9 에서만 부팅시 네트워크 설정이 안되는 문제가 있다. 해결하기 위해서는 /etc/sysconfig/network-scripts/ifcfg-eth0 파일에 다음을 추가하면 된다.
check_link_down() { return 1; }
TAR 에서 특정 파일 이름만 압축 해제 하기
tar 를 이용해서 백업을 할 때, 대부분 디렉토리를 통채로 하는 경우가 많다. 물론 전체 묶음 파일을 풀 때는 문제가 없겠지만, 만일 전체 묶음 파일에서 특정 파일만 압축 해제하고 싶을 때는 어떻게 해야 할까?
이럴 때는 다음과 같이 실행한다.
#tar xvf fat.tar "test*"
위의 예는 fat.tar 파일에서 test 로 시작하는 파일만 압축해제 할 때 사용한다.
VMware 에서 Guest OS IP 바꾸기
VMware 에서 지원하는 네트워크 방식은 모두 4가지 이다. 그 중에서 가장 많이 사용되는 것이 Bridged 와 NAT 방식이다. 처음 VMware 를 설치하면, 가상 네트워크 인터페이스(VMnet1, VMnet8) 이 생성된다. Bridged 방식의 경우에는 외부에서 IP 를 받아오기 때문에 상관이 없지만, NAT 방식의 경우 WMware 자체적을 제공하는 DHCP 서버에 의해 IP 가 할당된다. 자동으로 할당된 IP 를 바꾸고 싶다면, 다음과 같이 한다.
'Edit → Virtual Network Settings → Host Virtual Network Mapping → VMnet8' 에서 '>' 를 클릭하면, 할당받는 네트웍 설정을 바꿀 수 있다.
데비안에서 랜카드 static 으로 설정하기
데비안 설치시에 자동으로 IP 를 유동 IP 로 잡기 때문에 설치시나 설치한 후에도 설정이 auto 로 되어있다.
만일 고정 IP 환경에서 사용한다면 /etc/network/interfaces 파일을 열고 다음과 같이 추가해주면 된다.
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address <사용하려는 IP> netmask <해당 netmask 값> gateway <해당 gateway 값>
VMware 에서 특정 포트 포워딩하기
먼저 설명하기 전에, 나의 문제점은 다음과 같다.
나에게 주어진 IP 는 총 2개이다. 그런데 vmware 를 이용해서 설치한 guest os(리눅스) 의 웹서버를 외부에서도 접속할 수 있게 하고 싶다. 물론 여기서는 NAT 를 사용해도 되지만, 네트워크 여건상 이것은 불가능하다. IP 가 2개이기 때문에 guest os 외부 IP 를 부여할 수 없다.
이런 상태에서 해결 방법은 포트 포워딩 뿐이다.
vmware 의 guest os 에서 host os 의 특정 포트를 할당 받기 위해서는 다음과 하면 된다.
'Edit → Virtual Network Settings → NAT → Edit → Port Forwarding' 를 선택한다. 'Add' 버튼을 눌러서 다음과 같이 입력한다.
Host port | 80 |
Virtual Machine IP Address | 192.168.125.129(guest os ip) |
Port | 80 |
Description | web server |
입력한 후에 확인을 눌러서, 외부 PC 에서 접속해보자!! 예를 들어 host os 의 IP 가 166.104.144.101 이라면, 브라우저 창에 http://166.104.144.101 를 입력하면 된다.
데비안 Etch 소스 리스트
데비안의 경우, 소스 리스트를 참조해서 프로그램 설치를 하기 때문에 무엇보다도 중요하다. 또한 각 버전마다 소스리스트가 다르기 때문에 주의해야 한다. 현재 http://debianusers.org 데비안 사용자 모임 에 있는 소스 리스트는 거의 작동하지 않는 것들이다.
인터넷 상에서 잘 작동하는 소스 리스트를 찾았다.
deb ftp://ftp.kreonet.re.kr/pub/Linux/debian etch main contrib non-free deb-src ftp://ftp.kreonet.re.kr/pub/Linux/debian etch main contrib non-free deb ftp://ftp.kreonet.re.kr/pub/Linux/debian-security etch/updates main contrib non-free deb-src ftp://ftp.kreonet.re.kr/pub/Linux/debian-security etch/updates main contrib non-free
GDB 에서 인자가 있는 프로그램 디버깅 하기
GDB 에서 디버깅을 할 때, 프로그램 실행시에 인자와 함께 실행되는 프로그램을 디버깅 할 경우에는 다음과 같이 한다.
예를 들어 test 라는 프로그램이 있고, 인자값이 a.out 이라면,
#gdb test (gdb)set args a.out (gdb)b main ...
위와 같이 명령어를 실행해주면 된다.
ISO 파일 마운트 하기
확장자가 iso 로 끝나는 CD 이미지 파일의 경우, 아래와 같이 마운트 시킬 수 있다.
#mount -o loop eldk-arm-linux-x86.iso /mnt/cdrom
모듈 이미지(.img) 파일 만들기
언제부턴가, 커널 컴파일 후에 새로운 커널로 부팅을 하면 커널 모듈을 찾을 수 없다는 에러 메세지를 자주 보게 되었다. 물론 정상적으로 부팅하는 데 문제가 없고, 게다가 커널 컴파일 시에 해당 모듈을 선택하지 않았다면 모듈을 찾을 수 없는 것이 당연하다. 이럴 때는 mkinitrd 명령어를 이용해서 모듈 이미지 파일을 만들어주어야 한다.
커널과 모듈 컴파일을 수행하고, 설치(make modules_install) 했다면, 다음과 같이 실행한다.
#mkinitrd /boot/initrd-2.4.22.img 2.4.22
에러없이 수행되었다면, /boot 아래에 .img 파일이 생성되었을 것이다. 이제 부팅시에 읽어들일 수 있도록 grub.conf 파일에 추가해주면 된다.
title RedHat (2.4.22) root (hd0,0) kernel /bzImage ro root=/dev/hda3 initrd /initrd-2.4.22.img // 추가
모니위키(moniwiki) 에서 달력과 속담 없애는 방법
자우르스와 같은 PDA 에서는 최대한 한 화면에 많은 내용을 출력해야 한다.
그래서 모니위키에서 기본적으로 출력되는 달력과 속담은 굳이 출력해야할 필요가 없다.
없애는 방법은 footer.php 파일을 수정해야 한다.
#cd /hdd2/usr/local/apache/htdocs/theme/blog #vi footer.php
아래와 같이 주석 처리를 한다.
</td><td width='200'> <div id='wikiSideMenu'> <?php print '<div style="font-size:10px">'; #if ($options['id']=='Anonymous') # print macro_calendar($this,"'Blog',blog,noweek,archive",'Blog'); #else # print macro_calendar($this,"'$options[id]',blog,noweek",$options['id']); print '</div>'; print "<br />\n"; print '<font style="font-size:12px;"><b>'; #print macro_RandomQuote($this); print '</b></font>'; print "<br /><br />\n"; print '<font style="font-size:11px">'; #print macro_RandomPage($this,"4,simple"); print '</font>'; ?> </div> </td>
Source Insight 에서 어셈블리 파일 파싱하기
Source Insight 에는 기본적으로 어셈 파일(*.s, *.a) 에 대해서 파싱이 되지 않는다.
하지만, 간단하게 파싱이 가능하도록 하는 방법이 있다. 우선 http://likewind.org/pds/ARM9_ADS_assembly_language.clf 을 다운로드 받는다.
- SourceInsight의 Preference → Languages에서 import… 버튼을 눌러서 첨부파일을 import 한다.
- Language 리스트박스에서 “ARM9 ADS assembly language” 항목을 마우스로 한번 클릭한다.
- Preference→Doc Types… 버튼을 눌러 “Document Options” 대화상자를 띄운다.
- Document Options 대화상자의 Add Type…버튼을 눌러 “ARM9 ADS assembly File”이라는 이름으로 새로운 도큐먼트 타입을 생성한다.
- ARM9 ADS assembly File 도큐먼트 타입의 확장자를 지정합니다. Document Options 대화상자의 File filter 테스트박스에 “*.a;*.s”을 입력한다.
- Document Options 대화상자 왼쪽 아래의 Language: 리스트 박스에서 ARM9 ADS assembly language를 선택한다.
- 그리고 “ARM9 ADS assembly File”(Document Type)과 “ARM9 ADS assembly language”(Parsing method)가 연결 된다.
- 이후 ADS assembly file을 SourceInsight에 등록하면 C 파일처럼 심볼 클릭하여 점프 가능하다.
시스템 시간 변경하기
시스템 시간이 현재 시간보다 느리거나 빠르다면, 다른 호스트로부터 파일을 복사해오거나, 압축을 풀때 다음과 같은 메세지가 뜬다.
tar: scvos/tool/defconfig: time stamp 2008-05-11 10:06:54 is 845969 s in the future
현재 시스템 시간을 알기 위해서는 'date' 라는 명령어를 사용한다. 만일 현재 시간과 맞지 않다면, 역시 'date' 명령어로 시스템 시간을 조정할 수 있다.
#date 05130209 // 5월 13일 2시 9분으로 설정
컴파일시 출력되는 메세지 파일로 저장하기
빠르게 지나가는 컴파일 오류 메세지를 보기 위해서 스크롤을 해야 하는데, 이를 파일에 저장하면 나중에 살펴보기가 한결 수월해진다.
컴파일할 때, 아래와 같이 '>& 저장할 파일이름' 를 추가하면 된다.
gcc -o test test.c >& test.txt
사진 사이즈 크기 조절하기
사진을 사이즈를 줄이고자 할때, 사용하는 명령어는 아래와 같다.
#apt-get install imagemagick #convert *.jpg -resize 640 -quality 90 output.jpg // 가로길이 640 으로 하고, 화질은 90% 로 설정
모니위키에서 리스트 시작 번호 변경하기
1이나 a 로 시작하는 목록의 시작 번호를 변경하고 싶을 때는 아래와 같이 사용한다.
1.#6 // 6 부터 시작하고 싶을 때
ls 에서 파일의 사이즈 출력하기
각각의 파일의 사이즈를 알기쉽게 출력하고 싶을 때, -lh 옵션을 사용한다.
#ls -lh 합계 1.9G -rw-r--r-- 1 root root 24M 2월 4 14:41 PCMData.raw -rw-r--r-- 1 root root 7.6M 2월 4 20:04 Processing-Sample-070607.pdf -rwxr-xr-x 1 root root 720M 2월 4 22:31 W2K3AIO_KO.iso -rw-r--r-- 1 root root 21K 7월 11 1996 WAV2DB.EXE -rwxr-xr-x 1 root root 561M 2월 5 00:01 XP_WOW.iso -rw-r--r-- 1 root root 21M 2월 4 10:41 arduino-1.0.3-linux64.tgz -rw-r--r-- 1 root root 30K 2월 4 21:32 arribba.raw -rw-r--r-- 1 root root 41K 2월 4 21:30 arribba.wav -rw-r--r-- 1 root root 191M 2월 1 23:31 debian-6.0.6-i386-netinst.iso
grep 사용하기
검색 시, 대소문자 구별없이 하기
-i 옵션을 사용하면, 검색할 때 대소문자를 구별하지 않는다.
#grep -i ftp abc // abc 파일에서 ftp 를 찾아라(대소문자 상관없이) FTP ftp Ftp
일치하는 문자를 포함한 파일만 출력하기
-l 옵션을 사용하면, 검색된 파일명만 출력된다.
grep -l ftp * abc // abc 파일에 ftp 라는 문자가 포함됨
ifconfig 결과 분석하기
#ifconfig wlan0 Link encap:Ethernet HWaddr 8c:70:5a:83:44:8c inet addr:192.168.100.22 Bcast:192.168.100.255 Mask:255.255.255.0 inet6 addr: fe80::8e70:5aff:fe83:448c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:11431 errors:0 dropped:0 overruns:0 frame:0 TX packets:11735 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10911475 (10.9 MB) TX bytes:3588017 (3.5 MB)
Link encap
네트워크에서 사용하는 encapsulation(캡슐화, 요약화)의 타입에 대한 내용이다.
Hwaddr
네트워크 인터페이스의 MAC 주소로서 16진법으로 쓰여진다. 이것은 네트워크 상의 모든 장치마다 다르다. 각각의 타겟보드는 공장에서 세팅된 자신만의 MAC 주소를 갖게 된다.
inet addr
네트워크 인터페이스의 IP 주소. 이것은 만약 웹서버나 파일 서버 같은 네트워크 접근 서비스(network-accessible service)를 사용하고 있다면 네트워크 상에서 타겟보드를 찾을 방법을 보여준다.
Bcast
타겟보드가 연결되어 있는 네트워크의 브로드캐스트 주소. 네트워크 상의 모든 장치들은 이 주소로 발송된 메시지를 받게 된다.
Mask
네트워크 마스크. 타겟보드와 연결된 네트워크의 규모(최대 사이즈)를 조절한다. 대부분 가정의 사용자들의 경우, 255.255.255.0 이 될 것이다(C 클래스).
MTU
최대 전송 단위(Maximum transmission unit size). 시스템이 다수의 패킷으로 나뉘기 전에 하나의 패킷 데이터의 크기가 얼마인지를 나타낸다.
RX
수신한 네트워크 트래픽에 대한 에러 발생 건수와 빠뜨린 패킷에 대한 기록부분을 포함하여 피드백을 제공한다. 만약 이 섹션에 에러가 보이기 시작하면 네트워크 상에 뭔가 문제가 발생한 것이다.
TX
RX 섹션과 동일한 정보를 제공하지만 전송된 패킷에 대한 정보를 제공한다. 즉 여기에 나타나는 에러들 역시 네트워크에 문제가 생겼음을 알려준다.
Collisions
만약 네트워크 상에서 두 시스템들이 동시에 정보전달을 시도한다면 collision(충돌)이라는 사인을 받게 되는데, 이때는 패킷들을 재전송해야 한다.
충돌의 수가 적을 경우에는 별 문제가 되지 않지만 그 수가 많을 때에는 네트워크에 문제가 있는 것이다.
Txqueuelen
전송 큐(transmission queue)의 길이로서 보통 1000 으로 세팅이 되어 있으며 거의 변경할 필요가 없을 것이다.
RX bytes, TXX bytes
네트워크 인터페이스를 거쳐간 트래픽 양에 대한 간략한 설명.
iwconfig 결과 분석하기
wlan0 IEEE 802.11abgn ESSID:"linux" Mode:Managed Frequency:2.432 GHz Access Point: 00:30:3F:51:16:C2 Bit Rate=48 Mb/s Tx-Power=15 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=58/70 Signal level=-52 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:278 Missed beacon:0
wlan0
인터페이스 이름. 유선 네트워크 때와 마찬가지로 각각의 장치는 고유한 인터페이스 네임을 가진다. 만약 무선 연결 인터페이스라면 추가로 세부 사항들이 더 나타날 것이다. 타겟보드의 디폴트 무선 연결 인터페이스 네임은 wlan0 이다.
IEEE 802.11abgn
Standard. IEEE 802.11 무선 접속 표준은 매우 다양한 종류가 있는데, 끝에 오는 문자를 달리해서 구별하도록 되어 있다. 이 부분은 USB 무선 어댑터에 의해 지원되는 표준들에 대해서 그 목록을 제시한다. 예로든 어댑터의 경우, 네트워크 타입으로 IEEE 802.11abgn 을 지원하고 있다고 표시하고 있다.
ESSID
어댑터가 연결되어 있는 네트워크의 SSID, 만약 어댑터가 현재 네트워크에 연결되어 있지 않다면 off/any 라고 나타날 것이다.
Mode
어댑터가 현재 동작하고 있는 모드. 다음 설명하는 타입들 중 하나가 될 것이다.
Managed | 클라이언트들이 액세스포인트에 연결되는 표준 무선 네트워크. 거의 모든 가정과 기업 네트워크에 사용되는 모드이다 |
Ad-Hoc | 액세스포인트가 없는 장치간 무선연결 |
Monitor | 카드가 수신지(addressee)인지 아닌지에 상관하지 않고 모든 트래픽을 듣는 특수한 모드. 이 모드는 무선 네트워크 트래픽을 수집하여 네트워크의 문제를 진단하는데 주로 사용한다 |
Repeater | 신호의 강도를 높이기 위해 무선 카드로 하여금 다른 네트워크 클라이언트로 트래픽을 전달하게 만드는 특별한 모드 |
Secondary | Repeater 모드의 일종으로 무선 카드가 백업 리피터의 역할을 하도록 만드는 모드 |
Access Point
무선 어댑터가 현재 연결되어 있는 접속 포인트 주소. 만약 어댑터가 무선 접근점에 연결되어 있지 않다면 Not-Associated 라고 나타날 것이다.
Tx-Power
무선 어댑터의 전송력. 이때 숫자는 어댑터가 보내고 있는 신호의 강도를 나타낸다. 숫자가 높을 수록 신호가 높다.
Retry
네트워크 상태가 복잡할 때 무선 어댑터의 전송을 다시 시도하게 하는 설정. 일반적으로 변경할 필요가 없으며 일부 어떤 카드들은 아예 변경을 허용하지 않는다.
RTS
복잡한 네트워크 상에서 충돌을 방지하기 위해 사용되는 것으로써, Ready To Send 와 Clear To Send(RTS/CTS) 핸드쉐이킹에 대한 어댑터의 설정 상태. 데이터의 흐름을 제어하기위한 것으로 일반적으로 연결된 액세스 포인트에 의해 설정된다.
Fragment
최대 단편 크기(maximum fragment size). 혼잡한 네트워크 상에서 패킷을 다수의 조각으로 나누기 위해서 사용된다. 일반적으로 연결된 액세스 포인트에 의해 설정된다.
Power Management
어댑터의 전원 관리 성능에 대한 상황을 나타낸다. 무선 네트워크가 대기중일 때 해당 장치의 전력 수요를 줄인다. 타겟보드에는 거의 영향을 미치지 않지만 일반적으로 랩탑처럼 배터리로 움직이는 장치들의 경우는 필요하다.
두 디렉토리 비교하는 방법
서로 다른 디렉토리에 있는 파일들의 다른 점을 확인할 때는 다음과 같이 명령한다. src_0419 라는 디렉토리와 src_0419-bcm 이라는 디렉토리 안에 있는 파일들의 서로다른 파일들을 출력한다.
#diff -rq src_0419 src_0419-bcm | sort Files src_0419/src/dhd/linux/build.sh and src_0419-bcm/src/dhd/linux/build.sh differ Files src_0419/src/dhd/sys/dhd_linux.c and src_0419-bcm/src/dhd/sys/dhd_linux.c differ Files src_0419/src/dhd/sys/dhd_sdio.c and src_0419-bcm/src/dhd/sys/dhd_sdio.c differ Files src_0419/src/shared/bcmutils.c and src_0419-bcm/src/shared/bcmutils.c differ Files src_0419/src/wl/sys/wl_iw.c and src_0419-bcm/src/wl/sys/wl_iw.c differ Only in src_0419/src: SSID_len Only in src_0419/src: a
반복 동작 테스트 실행할 때
특정한 동작을 반복해서 에이징(aging) 테스트를 해야할 때, 수작업을 하기에는 너무 많은 무리가 따른다. 그래서 이럴 때, 사용하는 프로그램이 있다.
바로 http://www.autohotkey.com/ AutoHotkey 라는 프로그램이다. 반복하려는 작업을 사전에 정의된 스크립트 파일로 만들어야 하는데, 여기 예제 파일(http://likewind.org/pds/AutoHotkey_Script.ahk) 이 있다.
이를 참고한다. 내용은 웹 페이지에 공유기 설정 페이지가 로딩되어 있고, 특정 옵션을 수정한 후, 몇 초 이후, 다시 원래대로 옵션을 설정하는 것이다.
우분투에서 부팅 시, 부트로더 메뉴 보이게 하기
언젠가부터 우분투를 설치하고 나서, 부트로더 메뉴 없이 바로 부팅된다. 여러 버전의 커널을 빌드하여 이를 선택하여 부팅해야 할 경우, 부트로더 메뉴는 필요하다.
우분투의 경우, 아래와 같이 파일(/etc/default/grub)을 수정하면 된다.
... GRUB_DEFAULT=0 #GRUB_HIDDEN_TIMEOUT=0 // 주석처리 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=2 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="ipv6.disable=1" ...
CSS 중복시 최우선 순위 적용하기
CSS 에서 한번 이상의 태그 속성을 지정했을 경우, 서로 충돌이 발생할 수 있다. 이런 경우, 최우선 순위를 정해주면, 충돌이 발생하더라도 지정된 속성만 적용되게 된다.
방법은 다음과 같다.
body { font-family: gulim; font-size:9pt; color:block; line-height:150%; background-color:#90B7DC; color:#000; margin: 0; padding: 0; } em { font-family: gulim; font-size:9pt; color:block; line-height:150%; font-style: normal !important; // 최우선 순위 적용 }
em 태그의 font-style 속성에 대해 최우선 순위를 적용하였다. 다른 CSS 파일에서 같은 속성에 다른 값을 지정했더라도, 'normal' 이라는 값만 적용될 것이다.
rfkill 사용하기
많은 컴퓨터 시스템에는 Wi-Fi, 블루투스, 3G 장치와 같은 전파 송수신 장치가 포함되어 있습니다. 이러한 장치들은 전력을 소비합니다. 만약 장치가 사용중이 아니라면, 이는 낭비입니다.
RFKill은 리눅스 커널의 서브시스템으로 컴퓨터의 전파 송수신 장치들에 대해 질의하고, 활성화하고, 비활성화 할 수 있도록 해주는 인터페이스를 제공합니다. 송수신 장치가 비활성화되는 경우, 소프트웨어가 그 장치를 재활성화 시킬수 있는 상태(소프트 블럭(soft block))나 소프트웨어로는 그 장치를 재활성화 시킬 수 없는 상태(하드 블럭(hard block)) 중 하나로 장치의 상태가 변화됩니다.
RFKill 핵심부는 서브시스템에 API를 제공합니다. RFkill을 지원하는 것으로 서명된 커널 드라이버는 이러한 API를 활용해 커널에 자신을 등록하고, 장치를 활성화하고 비활성화하는 방법을 제공합니다. 또한, RFKill 핵심부는 사용자 어플리케이션이 이해할 수 있는 통지를 제공하며, 사용자 어플리케이션이 송수신 장치의 상태를 질의할 수 있는 방법을 제공합니다.
RFKill 인터페이스는 /dev/rfkill에 위치하며, 그 안에는 시스템의 모든 전파 송수신 장치의 상태정보가 포함되어 있습니다. 각각의 장치는 현재의 RFKill 상태를 sysfs에 등록해 둡니다. 추가적으로, RFKill이 활성화되어 있는 장치의 상태가 변화되면 RFKill은 uevents 이벤트를 발생시킵니다.
Rfkill은 명령행 도구로 시스템의 RFKill-지원 장치에 질의를 하고, 상태를 변경할 수 있도록 해줍니다. 이 도구를 사용하시려면, rfkill 패키지를 설치하십시오.
rfkill list를 사용해 장치의 목록을 얻습니다. 각각의 장치는, 0번 부터, 연관된 인덱스 번호를 부여받습니다. 이 인덱스 번호를 사용해 rfkill에 어떤 장치를 블럭하거나 블럭을 해제해도록 지정할 수 있습니다. 예를 들면,
rfkill block 0
은 시스템의 첫번째 RFKill-지원 장치를 블럭합니다.
또한 rfkill를 사용해 특정 종류의 장치들이나 모든 RFKill-지원 장치들을 블럭할 수도 있습니다. 예를 들어,
rfkill block wifi
은 시스템의 모든 Wi-Fi 장치를 블럭합니다. 모든 RFKill-지원 장치를 블럭하려면, 다음과 같이 합니다:
rfkill block all
블럭된 장치를 해제하려면 rfkill block 대신 rfkill unblock를 사용합니다. rfkill이 블럭할 수 있는 장치들의 종류를 확인하려면 rfkill help를 실행하십시오.
ifconfig MAC 주소 변경하기
네트워크 인터페이스의 MAC 주소를 변경할 때는 아래와 같이 실행한다.
#ifconfig eth0 hw ether 00:11:22:33:44:55 up
find 명령어 활용하기
find 명령어를 통해 검색한 파일들을 처리할 수 있는 옵션이 있다. 바로 exec 인데, 예를 들어 파일 확장자 끝에 '~' 가 있는 파일들을 삭제하는 명령어는 아래와 같다.
#find -name *.*~ -exec rm -f {} \;
암호없이 ssh 로그인 하기
기본적으로 ssh 접속 시에는 id 및 password 가 필요하지만, 공개키를 사용하면, 매번 암호를 입력할 필요없이 바로 접속이 가능하다.
여기서는 두대의 PC 를 예로 들어 설명하겠다.
PC | IP 주소 |
A | 192.168.0.100 |
B | 192.168.0.50 |
우리가 하려고 하는 것은 A 에서 B 로 ssh 접속을 할 때, 암호 입력없이 접속을 가능하게 하는 것이다.
ssh 공개키 생성하기
먼저 A 에서 ssh 공개키를 만들기 위해 아래와 같이 명령한다.
# ssh-keygen -t rsa // 이후 모든 입력에 대해 엔터만 친다
위 과정이 끝나면, 해당 계정 디렉토리 아래에 .ssh 디렉토리가 생성되는데, id_rsa.pub 파일을 USB 메모리에 저장한다(마운트 포인트는 /mnt 이다).
#cp ~/.ssh/id_rsa.pub /mnt/
공개키 파일 설치하기
B 로 와서, 앞서 사용한 USB 메모리를 아래와 같이 마운트를 하고, A 의 공개키를 추가한다.
#mount /dev/sdc /mnt // USB 메모리 마운트 #cat /mnt/id_rsa.pub >> ~/.ssh/authorized_keys
접속하기
A 에서 B 로 아래와 같이 접속해보자.
#ssh root@192.168.0.50
맨 처음 접속 시에는 '(yes/no)' 를 묻지만, 'yes' 로 답한 이후에는 암호 입력 없이 로그인 된다.
putty 환경 설정 저장하기
putty 를 사용할 때, 접속할 서버의 IP 주소만 프로파일로 저장하는 경우가 많은 데, 이뿐만 아니라 폰트나 터미널의 크기, 히스토리 크기등을 함께 저장할 수 있다.
방법은 먼저 프로파일을 불러온 뒤에 환경 설정을 한다. 그리고 나서 프로파일을 저장하면 된다.
무선 환경 확인하는 프로그램
무선 성능이 주변 환경에 영향을 받는다는 사실은 이미 알려져있다. 따라서 무선관련 테스트 시에 주어진 환경에 대한 조사가 선행되어야 한다.
inSSIDer(http://inssider.en.softonic.com/) 라는 프로그램을 사용하면, 현재 무선 환경에 대한 정보를 시각적으로 확인할 수 있다.
이 프로그램으로 확인할 수 있는 정보는 다음과 같다.
- 주변 AP 의 갯수
- 각 채널별 사용하는 AP 갯수 및 신호세기
GRUB2 소개
설정 파일
GRUB Legacy 의 설정 파일은 menu.1st 이고, GRUB 2의 주 설정 파일은 grub.cfg(/boot/grub/grub.cfg)이다.
grub.cfg 의 내용은 자동적으로 생성되기 때문에 직접 편집해서는 안 된다. GRUB 메뉴의 설정을 위해 여러 파일들이 사용된다. 그리고 그 중 일부 파일들은 다음과 같이 /etc/grub.d 디렉토리 아래에 저장된다.
- 00_header : 그래픽 모드, 기본 선택사항, 타임아웃 등, 일반적인 GRUB 변수의 기본값들을 설정한다.
- 10_linux : 루트 장치에 존재하는 모든 커널을 찾도록 도와준다. 발견한 모든 커널에 대해 GRUB 항목을 자동적으로 생성해준다.
- 30_os-prober : 시스템에 설치된 다른 운영체제를 자동으로 탐색한다. 특히 이중 부팅 시스템에 유용하다(예를 들어 리눅스와 함께 설치된 윈도우).
- 40_custom : 사용자가 직접 메뉴 항목과 지시자를 편집하고 저장할 수 있는 곳
파티션 번호
GRUB2 장치명의 파티션 번호는 장치명의 번호와 달리 0 이 아닌 1부터 시작한다. 예를 들어 (hd0,1)는 첫번째 드라이브의 첫 번째 파티션을 가리킨다.
파일 시스템
GRUB2 는 기본적으로 GRUB Legacy 보다 더욱 많은 파일들을 지원한다.
이미지 파일
GRUB2 는 Stage1, Stage1.5, Stage2 파일을 더 이상 사용하지 않는다. Stage* 파일들이 제공했던 대부분의 기능은 core.img 파일로 옮겨졌다. 이 파일은 커널 이미지와 모듈로부터 동적으로 생성된다.
설정 팁
GRUB2 를 사용 중인 시스템에서 자동적으로 생성된 특정 메뉴 항목을 원치 않는다면, 그 항목을 생성한 /etc/grub.d 디렉토리의 해당 스크립트를 지우거나 비활성해야 한다.
예를 들어 부팅 메뉴에서 MS 윈도우 같은 다른 운영체제의 항목들을 보고 싶지 않다면 /etc/grub.d/30_os-prober 를 삭제하거나 다음 명령으로 실행 권한을 제거해야 한다.
#chmod -x /etc/grub.d/30_os-prober
장치 정보보기
윈도우에 장치 관리자가 있다면, 리눅스에서는 무엇이 있을까?
다음 명령을 통해 PCI 버스에 연결된 모든 하드웨어 목록을 가져올 수 있다.
#lspci
하드웨어 설정에 관한 좀 더 자세한 정보를 알고 싶다면 lshw 명령을 사용하면 된다.
#lshw PCI (sysfs) wjkim81.cafe24.com description: Computer product: KVM () vendor: Red Hat version: RHEL 6.2.0 PC width: 64 bits capabilities: smbios-2.4 dmi-2.4 vsyscall32 configuration: boot=normal family=Red Hat Enterprise Linux uuid=EBFCEF9E-4136-B3BE-582C-0229BCB31FCD *-core description: Motherboard physical id: 0 *-firmware description: BIOS vendor: Seabios physical id: 0 version: 0.5.1 date: 01/01/2007 size: 96KiB *-cpu:0 description: CPU product: QEMU Virtual CPU version (cpu64-rhel6) vendor: Intel Corp. physical id: 401 bus info: cpu@0 slot: CPU 1 size: 2GHz capacity: 2GHz width: 64 bits capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 nopl pni cx16 hypervisor lahf_lm *-cpu:1 description: CPU product: QEMU Virtual CPU version (cpu64-rhel6) vendor: Intel Corp. physical id: 402 bus info: cpu@1 slot: CPU 2 size: 2GHz capacity: 2GHz width: 64 bits capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 nopl pni cx16 hypervisor lahf_lm *-cpu:2 description: CPU product: QEMU Virtual CPU version (cpu64-rhel6) vendor: Intel Corp. physical id: 403 bus info: cpu@2 slot: CPU 3 size: 2GHz capacity: 2GHz width: 64 bits capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 nopl pni cx16 hypervisor lahf_lm *-cpu:3 description: CPU product: QEMU Virtual CPU version (cpu64-rhel6) vendor: Intel Corp. physical id: 404 bus info: cpu@3 slot: CPU 4 size: 2GHz capacity: 2GHz width: 64 bits capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 nopl pni cx16 hypervisor lahf_lm *-cpu:4 description: CPU product: QEMU Virtual CPU version (cpu64-rhel6) vendor: Intel Corp. physical id: 405 bus info: cpu@4 slot: CPU 5 size: 2GHz capacity: 2GHz width: 64 bits capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 nopl pni cx16 hypervisor lahf_lm *-cpu:5 description: CPU product: QEMU Virtual CPU version (cpu64-rhel6) vendor: Intel Corp. physical id: 406 bus info: cpu@5 slot: CPU 6 size: 2GHz capacity: 2GHz width: 64 bits capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 nopl pni cx16 hypervisor lahf_lm *-cpu:6 description: CPU product: QEMU Virtual CPU version (cpu64-rhel6) vendor: Intel Corp. physical id: 407 bus info: cpu@6 slot: CPU 7 size: 2GHz capacity: 2GHz width: 64 bits capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 nopl pni cx16 hypervisor lahf_lm *-cpu:7 description: CPU product: QEMU Virtual CPU version (cpu64-rhel6) vendor: Intel Corp. physical id: 408 bus info: cpu@7 slot: CPU 8 size: 2GHz capacity: 2GHz width: 64 bits capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 nopl pni cx16 hypervisor lahf_lm *-memory description: System Memory physical id: 1000 size: 512MiB capacity: 512MiB *-bank description: DIMM RAM physical id: 0 slot: DIMM 0 size: 512MiB width: 64 bits *-pci description: Host bridge product: 440FX - 82441FX PMC [Natoma] vendor: Intel Corporation physical id: 100 bus info: pci@0000:00:00.0 version: 02 width: 32 bits clock: 33MHz *-isa description: ISA bridge product: 82371SB PIIX3 ISA [Natoma/Triton II] vendor: Intel Corporation physical id: 1 bus info: pci@0000:00:01.0 version: 00 width: 32 bits clock: 33MHz capabilities: isa bus_master configuration: latency=0 *-ide description: IDE interface product: 82371SB PIIX3 IDE [Natoma/Triton II] vendor: Intel Corporation physical id: 1.1 bus info: pci@0000:00:01.1 version: 00 width: 32 bits clock: 33MHz capabilities: ide bus_master configuration: driver=ata_piix latency=0 resources: irq:0 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:c000(size=16) *-usb description: USB controller product: 82371SB PIIX3 USB [Natoma/Triton II] vendor: Intel Corporation physical id: 1.2 bus info: pci@0000:00:01.2 version: 01 width: 32 bits clock: 33MHz capabilities: uhci bus_master configuration: driver=uhci_hcd latency=0 resources: irq:11 ioport:c020(size=32) *-bridge description: Bridge product: 82371AB/EB/MB PIIX4 ACPI vendor: Intel Corporation physical id: 1.3 bus info: pci@0000:00:01.3 version: 03 width: 32 bits clock: 33MHz capabilities: bridge configuration: driver=piix4_smbus latency=0 resources: irq:9 *-display UNCLAIMED description: VGA compatible controller product: GD 5446 vendor: Cirrus Logic physical id: 2 bus info: pci@0000:00:02.0 version: 00 width: 32 bits clock: 33MHz capabilities: vga_controller configuration: latency=0 resources: memory:f0000000-f1ffffff memory:f2000000-f2000fff memory:f2010000-f201ffff *-network description: Ethernet interface product: Virtio network device vendor: Red Hat, Inc physical id: 3 bus info: pci@0000:00:03.0 logical name: eth0 version: 00 serial: 00:16:3e:f2:c4:3b width: 32 bits clock: 33MHz capabilities: msix bus_master cap_list rom ethernet physical configuration: broadcast=yes driver=virtio_net driverversion=1.0.0 ip=1.234.65.206 latency=0 link=yes multicast=yes resources: irq:10 ioport:c040(size=32) memory:f2020000-f2020fff memory:f2030000-f203ffff *-multimedia description: Audio device product: 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller vendor: Intel Corporation physical id: 4 bus info: pci@0000:00:04.0 version: 01 width: 32 bits clock: 33MHz capabilities: bus_master configuration: driver=snd_hda_intel latency=0 resources: irq:11 memory:f2040000-f2043fff *-scsi description: SCSI storage controller product: Virtio block device vendor: Red Hat, Inc physical id: 5 bus info: pci@0000:00:05.0 version: 00 width: 32 bits clock: 33MHz capabilities: scsi msix bus_master cap_list configuration: driver=virtio-pci latency=0 resources: irq:10 ioport:c080(size=64) memory:f2044000-f2044fff *-memory description: RAM memory product: Virtio memory balloon vendor: Red Hat, Inc physical id: 6 bus info: pci@0000:00:06.0 version: 00 width: 32 bits clock: 33MHz (30.3ns) capabilities: bus_master configuration: driver=virtio-pci latency=0 resources: irq:11 ioport:c0c0(size=32)
busybox 로 ftp 서버 구동하기
임베디드 장비 상에서 파일을 전송하기 위해서 가장 많이 사용하는 것이 busybox 인데, 안타깝게도 기본적으로 ftp 명령어가 포함되어 있지 않다.
기본적인 build configuration 을 사용하여 빌드하면, 포함되는 것 중에 tcpsvd 와 ftpd 가 있다. 이를 이용해서 간단하게 나마 ftp 서버를 구동할 수 있다. 사용 방법은 아래와 같다.
#./busybox tcpsvd -vE 0.0.0.0 21 /root/busybox ftpd /root/ # busybox 파일의 위치가 /root/ 아래라고 가정한다
위의 명령어는 /root 디렉토리를 FTP 서버로 공유할 때이다.
클라이언트 측에서는 기존과 동일하게 ftp 명령어를 사용하여 접속하면 된다.
iperf UDP 측정하기
일반적으로 iperf 로 TCP 를 측정하지만, UDP 를 사용할 수도 있고 이를 지원하고 있다.
UDP 는 TCP 에 비해 가볍기 때문에 수치상으로는 TCP 보다 더 잘 나와야 한다. 이 값을 통해 현재 환경에서 보낼 수 있는 최대값을 알 수 있다. 실제 대부분의 통신이 TCP 기반이기 때문에 이 값을 그대로 받아들이기에는 무리가 있으며, 그냥 최대값이 이 정도 나오는 구나 하는 정도 이해하면 된다.
server 모드
#iperf -s -u
client 모드
#iperf -c 192.168.x.x -u -b 700M -t 60 -i 1 // 700Mbit 를 전송한다