Posted
Filed under Linux

리눅스 tar압축하는 방법
tar -cvf test.tar *    //압축
tar xvf test.tar       //해지


tar xvzf test.tar.gz




[압축할 때] tar cvzf 파일명.tar.gz <디렉토리> 또는 파일
[압축 해제] tar xvzf 파일명.tar.gz

[예제]
tar -xvvf foo.tar : foo.tar 파일을 푼다.
tar -xvvzf foo.tar.gz : gzip으로 압축된 foo.tar.gz 파일을 푼다.
tar -cvvf foo.tar foo/ : foo 디렉토리에 있는 내용물을 foo.tar 파일로 묶는다.
[출처] 리눅스 tar압축하는 방법 |작성자 지우개

2009/07/17 20:33 2009/07/17 20:33
Posted
Filed under Linux



리눅스는 Redhat9 Kernel 2.4.20버전을 사용하였습니다.
또한 가능하면 이 문서에 있는 소스를 받으세요. 이문서상외의 소스나 기타 프로그램들은
작동여부를 장담할 수 없습니다.

설치 기초 작업은 /root/src라는 곳에서 작업을 합니다.

설치순서는
openssl - mysql BerkelyDB - qmail - ucspi - daemon tools - checkpassword - imap - phpmail
순으로 설치를 합니다.

#################
설치 기초 공사#########################
1. openssl
설치
1)
가능하면 기본 설정으로 설정하시기 바랍니다. 기본을 /usr/local/ssl로 잡고 있고 다른 소스들도 ssl을 쓸시 저 기본 디렉토리를 사용합니다. 그러니 고치지 마시고 기본 그대로의 사용을 적극 권장드립니다.
-
http://www.openssl.org/source/ 에서 openssl-0.9.7a.tar.gz 이버전을 받으세요.
qmail
홈페이지에서 faq를 보시면 위 버전 이상은 어떤 이유에서인지 에러가 난다고하네요. 정확하게 어디서 보기는 봤는데 출처는 정확히 모르겠습니다. 아시는분 리플달아주세요.

2) Install
./config
make; make install

- mysql
설치
http://downloads.mysql.com/archives/...3.23.58.tar.gz 타볼소스로 다운받습니다.

3)
컴파일 옵션 / 설치
./configure --prefix=/usr/local/mysql --with-openssl --with-charset=ecu_kr
make; make install
(
기타 다른 옵션이 필요하시다면 붙이셔도 상관은 없습니다.)

4)
약간의 환경설정이 필요합니다.
cp support-files/my-huge.cnf /etc/my.cnf
groupadd mysql
adduser -g mysql mysql
vi /etc/passwd
mysql:x:522:523::/home/mysql:/sbin/nologin // nologin
으로 수정
rm -rf /home/mysql
cd /usr/local/mysql/share/mysql
vi mysql.server
134
줄의 부분을 약간 변경합니다.
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file --language=korean &

$bindir/safe_mysqld --datadir=$datadir --language=korean --pid-file=$pid_file --language=korean &
--language를 추가합니다.
cp mysql.server /usr/local/mysql/bin
cp mysql.server /etc/rc.d/init.d/mysqld
ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S55mysqld <-
시작번호는 알아서 편한번호로 지정하십시요.

5)
디비 생성
cd /
설치디렉토리 (나의 경우엔 cd /usr/local/mysql)
./bin/mysql_install_db (base
디비를 생성하세요~~)
chown -R mysql.mysql /usr/local/mysql/var

- mysqladmin
암호설정
/etc/rc.d/init.d/mysqld start
/usr/local/mysql/bin/mysqladmin -u root password
암호


2. BerkeleyDB
설치
특별히 쓰지는 않지만 이 않에 들어있는 몇가지 라이브러리가 좀 필요하다고 하네요. 솔직하게 어디서 쓰이는지는 모르겠습니다. 하지만 나중에 qmail들어가서 make 해보시면 아시겠지만 설치와 미설치의 make오류는 참 차이가 나는것 같습니다.(기분상...^^; 또한 여러 프로그램에서 많이 쓰인다고 합니다. 저두 언젠가는 써볼 생각입니다.
1)
설치
http://www.sleepycat.com/docs/ref/build_unix/intro.html ->버클리 DB설치법.
그러나 영문사이트인 관계로...

http://dev.sleepycat.com/downloads/r...istorybdb.html -4.2.52버전을 받습니다.
cd /root/src/db-4.2.52/build_unix
../dist/configure
make
make install

2)
동적 라이브러리링크
vi /etc/ld.so.conf
에서
/usr/local/mysql/lib/mysql
추가
/usr/local/BerkeleyDB.4.2/lib
추가
프롬프트에서
ldconfig
엔터

###################qmail
설치#######################
/root/qmailsrc/src <-
이곳에 qmail관련된 모든 소스를 넣어둡니다.
/root/qmailsrc/patch <-
패치에 관련된 모든 파일을 이곳에 넣어둡니다.
이제 본격적인 작업에 들어갑니다. 이제부터가 본게임의 시작입니다.

선작업
# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h

큐메일이 좀 오래된지라 time.h파일이 문제가 됩니다.
그래서 구버전의 time.h로 링크를 걸어서 컴파일 하는 것입니다.
나중에 apache php컴파일시 원상복구해야합니다.

1. qmail Install
1) qmail
및 해당 패치 다운로드
http://cr.yp.to/qmail.html 에서 qmail-1.03 다운로드
(Mirror
사이트중 빠른곳에서 받으시면 됩니다. 참고로 일본 사이트가 제일 빠르네요)
http://qmail.kldp.org/phpbb/viewtopic.php?t=5798 에서
cocktail14+mysql+chkuser+quota.patch_20041116
다운로드 (2004 1116일자 패치)
참고)
캌테일 패치는 qmail에 필요한 여러가지의 패치를 모아놓은 패치 입니다. 패치 이름중에 mysql+chkuser 이것이 마이에스큐엘을 연동하여 사용하고, 유저를 체크할 수 있게 해주는 것 입니다. 하지만 이것이 좀 말이 많기도 합니다. 워낙 많은 패치를 해 놓다보니 쓸데 없는 기능이 들어가기도 하고 자신에게는 필요없는 패치가 되기도 합니다. 하지만 굉장히 좋기도 합니다. 필요한 패치를 모두 해주기 때문이죠. 만약 칵테일 패치를 하지 않는다면
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서 qmail-1.03.errno.patch qmail-1.03.qmail_local.patch 다운받아 패치를 해주어야 합니다. 하지만 우리는 캌테일 패치를 해주신다면 위의 2개의 패치는 하지 않으셔도 됩니다.
(
에러 납니다.!!!!!)

주의!!!!!
혹시 나중에 설치후 SMTP 기능이 제대로 동작이 되지 않는다면 칵테일 패치를 하지 마시고 위의 2가지 패치로 하시기 바랍니다. 간혹 칵테일 패치로 동작이 되지 않는수도 있습니다.

2)
설치
- qmail
을 위한 그룹 및 계정 생성
mkdir /var/qmail
mkdir /var/qmail/alias

- qmail
설치
qmail
의 압축을 풉니다.
vi INSTALL.ids

첫 부분에 보시면 Linux라는 부분에 다음과 같은 부분이 있습니다.

groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails

그 파일을 참고로 해서 다음과 같이 붙여넣기를 하셔서 파일 하나를 만듭니다.
그리고 실행을 하시면 됩니다.
ex)
vi user.sh

groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
저장후 빠져나온 후...
sh user.sh
하면 디렉토리와 사용자 계정이 추가가 됩니다.

3) qmail
패치
cd /root/qmailsrc/src/qmail-1.3.0
patch -p1 < ../../patch/cocktail14+mysql+chkuser+quota.patch_20041116

4)
일부 파일 수정
vi mysql.c
#include <mysql/mysql.h>
#include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi qmail-getpw.c
#include </mysql/mysql.h>
#include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi Makefile
MYSQL_INCLUDE=-I/usr/local/include
MYSQL_INCLUDE=-I/usr/local/mysql/include 로 수정
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl

MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl
로 수정
vi conf-cc
cc -O2 -DTLS=20021228 -I/usr/local/ssl/include

gcc -O2 -march=i686 -funroll-loops -DTLS=20021228 -I/usr/local/ssl/include
로 수정

수정필수사항은 mysql include, lib 경로와 openssl의 경로 입니다.

5)
컴파일 및 설치
make
make setup check
- control
파일들 생성
./config

실행후 정상적인 결과의 화면은 다음과 같습니다.
./config
Your hostname is chsd.
Your host's fully qualified name in DNS is chsd.chonnam.ac.kr.
Putting chsd.chonnam.ac.kr into control/me...
Putting chonnam.ac.kr into control/defaultdomain...
Putting ac.kr into control/plusdomain...
Checking local IP addresses:
127.0.0.1: Adding localhost to control/locals...
168.131.34.167: Adding chsd.chonnam.ac.kr to control/locals...
If there are any other domain names that point to you,
you will have to add them to /var/qmail/control/locals.
You don't have to worry about aliases, i.e., domains with CNAME records.
Copying /var/qmail/control/locals to /var/qmail/control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to those hosts.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

혹시 만약 ./config를 쳣을때 에러가 나온다면 반듯이 보셔야 할 부분이 있습니다.

/etc/resolv.conf
search chonnam.ac.kr <---
이 부분이 굉장히 중요합니다.
nameserver 168.126.63.1
nameserver 168.126.63.2

특히, search [domain name] 라인이 반드시 있어야 합니다.
/etc/hosts
127.0.0.1 localhost localhost.localdomain
123.234.123.234 chsd.chonnam.ac.kr chsd
123.234.123.231 other.chonnam.ac.kr other

위 파일의 내용을 확인하고, 내용에 맞추어 수정합니다.
/etc/sysconfig/network
..........
..........
HOSTNAME=chsd
DOMAINNAME=ultraqmail.com
..........
..........

위의 라인을 확인하여, 없으면 추가합니다.
위의 수정사항을 다 적용하였는데도, 정상적인 config 가 수행되지 않는다면,
그때는 이렇게 합니다.

./config-fast ultraqmail.com

config-fast
다음에 서버의 DNS 등록 호스트네임을 다 써주면 됩니다.
그러면, 정상적으로 다음 설치가 가능합니다.

이 단계를 거치고 나면 /var/qmail/control/ defaultdomain, locals, me, plusdomain, rcpthosts 이 생성되는데 차후 메일서버를 운영함에 있어 중요한 파일들이니 뭐하는 파일들인지 꼭 알아두시기 바랍니다.


2. ucspi-tcp
설치 (tcp커넥션을 만들어주는 것이죠)
1) ucspi-tcp
및 해당 패치 다운로드
http://cr.yp.to/ucspi-tcp/install.html 에서
ucspi-tcp-0.88.tar.gz
다운로드
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서
ucspi-tcp-0.88.errno.patch, ucspi-tcp-0.88.a_record.patch, ucspi-tcp-0.88.nobase.patch
다운로드
(
참고로 사이트가 깜빡깜빡(?)합니다. 만약 접속 않되시면 몇 시간후 접속을 하세요...^^)
http://sylvestre.ledru.info/howto/qm...88-mysql.patch
를 받습니다.

2)
설치
-
원래는 rblsmtpd를 깔아야 합니다. 그러나 ucspi-tcp-0.88버전이상은
이것을 포함하고 있다고 합니다. 또한 굳이 깔때 문제가 생길지도 모른다고 하니 않까시는게
좋을듯 합니다.
- ucspi-tcp
패치
patch -p1 < ../patch/ucspi-tcp-0.88.errno.patch
patch -p1 < ../patch/ucspi-tcp-0.88.nobase.patch
patch -p1 < ../patch/ucspi-tcp-0.88.a_record.patch
patch -p0 < ../patch/ucspi-tcp-0.88-mysql.patch

-
일부 파일 수정
vi conf-cc
gcc -O2 -I/usr/include/mysql

gcc -O2 -march=i686 -funroll-loops -I/usr/local/mysql/include/mysql
로 수정

vi db.c
#include <mysql.h>
#include </usr/local/mysql/include/mysql/mysql.h>로 수정

vi conf-ld
gcc -s -I/usr/include/mysql -L/usr/local/lib/mysql -lmysqlclient

gcc -s -I/usr/local/mysql/include/mysql -lmysqlclient -L/usr/local/mysql/lib/mysql
로 수정

-
컴파일 및 설치
make
make setup check


3. demontool
설치
1) demontool
및 해당 패치 다운로드
http://cr.yp.to/daemontools/install.html 에서
daemontools-0.76.tar.gz
다운로드
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서
daemontools-0.76.errno.patch
다운로드

2)
설치
-
설치 디렉토리 생성
mkdir -p /package
chmod 1755 /package
cd /package
cp /root/qmailsrc/src/daemontools-0.76.tar.gz /package
tar -zxvf daemontools-0.76.tar.gz
rm -rf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /root/qmailsrc/patch/daemontools-0.76.errno.patch
package/install


4. chechpasswd
1) chechpasswd
및 해당 패치 다운로드
http://cr.yp.to/checkpwd/install.html 에서 checkpassword-0.90.tar.gz 다운로드
http://download.softagency.net/mysql/Downloads/Contrib/
checkpassword-0.90-mysql-0.6.6.patch.gz
다운로드 후 압축푼다.
http://qmail.kldp.org/src/patches/glibc-2.3.1/
checkpassword-0.90.errno.patch
다운로드
************************************************** **********
checkpassword-0.90-mysql-0.7.4.patch
가 있으나 에러가 난다고 알려져 있습니다.
참고사이트입니다.
http://qmail.kldp.org/phpbb/viewtopi...ql-0.6.6.patch
************************************************** ************

chechpasswd
는 말 그대로 메일 계정의 패스워드를 체크할 수 있게 해주는겁니다.
여기에 마이에스큐엘 패치를 하여 디비에 들어있는 가상계정의 패스워드체크도 가능하게 됩니다.

2)
설치
- checkpassword
패치
patch -p1 < ../../patch/checkpassword-0.90-mysql-0.6.6.patch
patch -p1 < ../../patch/checkpassword-0.90.errno.patch

-
일부 파일 수정
vi mysql.c
#include <mysql.h>
#include </usr/local/mysql/include/mysql/mysql.h>로 수정

vi Makefile
MYSQL_INCLUDE=-I/usr/local/include
MYSQL_INCLUDE=-I/usr/local/mysql/include 로 수정
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl

MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl
로 수정

vi conf-cc
gcc -O2
gcc -O2 -march=i686 -funroll-loops 로 수정

vi error.h
#include <errno.h>
추가

-
컴파일 및 설치
make
make setup check

-
소유권 및 퍼미션 변경
참고사이트
http://qmail.kldp.org/phpbb/viewtopi...=checkpassword
chown root.nofiles /bin/checkpassword
chmod 4110 /bin/checkpassword


5. qmail
설정
1) qmail-pop3, qmail-send, qmail-smtp
구동 / 로거 파일 생성
-
디렉토리 생성 및 권한설정
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3d

- qmail-send
구동(run) 파일 생성
vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc

- qmail-send
로거(run) 파일 생성
vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/send

- qmail-smtp
구동(run) 파일 생성
vi /var/qmail/supervise/qmail-smtp/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 5000000 /usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd `hostname -f` /bin/checkpassword /bin/true 2>&1

- qmail-smtp
로거(run) 파일 생성
vi /var/qmail/supervise/qmail-smtp/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtp

- qmail-pop3
구동(run) 파일 생성
vi /var/qmail/supervise/qmail-pop3/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 5000000 /usr/local/bin/tcpserver -v -R -H -l 0 0 pop3 /var/qmail/bin/qmail-popup ultraqmail.com(
메일서버도메인명) /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1

- qmail-pop3
로거(run) 파일 생성
vi /var/qmail/supervise/qmail-pop3/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3

-
각 구동 및 로거파일 권한 설정
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

-
디폴트 알리아싱 설정
cd /var/qmail/alias
echo
임의의사용자아이디 > .qmail-mailer-daemon
echo
임의의사용자아이디 > .qmail-postmaster
echo
임의의사용자아이디 > .qmail-root

ex)
cd /var/qmail/alias
echo alias > .qmail-mailer-daemon
echo alias > .qmail-postmaster
echo alias > .qmail-root

- /var/qmail/rc
파일 생성
cp /var/qmail/boot/proc /var/qmail/rc
vi /var/qmail/rc
* 7
라인을 다음과 같이 수정
qmail-start '|preline procmail ./Maildir/' splogger qmail

-
로그 디렉토리 생성및 소유권 변경
(
차후 이쪽에서 로그를 볼 수 있도록 변경함)
mkdir -p /var/log/qmail/send
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
chown -R qmaill /var/log/qmail

- qmail
실행파일 생성

아래의 스크립트를 그대로 복사, 저장하거나 새로 받습니다.
http://kltp.kldp.org/tmp/qmail.txt
이 파일을 /etc/rc.d/init.d/ qmail 이라는 이름으로 저장한 후, 실행 퍼미션을 줍니다.

vi /etc/init.d/qmail
=====================
요기서부터============== ======
#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 80 80
# description: qmail MTA
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
case "$1" in
start)
echo -n "Starting qmail: svscan"
cd /var/qmail/supervise
env - PATH="$PATH" svscan &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping qmail: svscan"
kill `cat /var/run/svscan.pid`
echo -n " qmail"
svc -dx /var/qmail/supervise/*
echo -n " logging"
svc -dx /var/qmail/supervise/*/log
echo "."
;;
stat)
cd /var/qmail/supervise
svstat * */log
;;
doqueue|alrm)
echo "Sending ALRM signal to qmail-send."
svc -a /var/qmail/supervise/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /var/qmail/supervise/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /var/qmail/supervise/qmail-send
echo "Pausing qmail-smtp"
svc -p /var/qmail/supervise/qmail-smtp
echo "Pausing qmail-pop3"
svc -p /var/qmail/supervise/qmail-pop3
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtp"
svc -c /var/qmail/supervise/qmail-smtp
echo "Continuing qmail-pop3"
svc -c /var/qmail/supervise/qmail-pop3
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtp."
svc -d /var/qmail/supervise/qmail-smtp
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtp"
svc -u /var/qmail/supervise/qmail-smtp
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp*
echo "Reloaded /etc/tcp.smtp."
;;
help)
cat << HELP
stop -- stops mail service (smtp connections refused, nothing goes out)
start -- starts mail service (smtp connection accepted, mail can go out)
pause -- temporarily stops mail service (connections accepted, nothing leaves)
cont -- continues paused mail service
stat -- displays status of mail service
cdb -- rebuild the tcpserver cdb file for smtp
restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont |cdb|queue|help}"
exit 1
;;
esac
exit 0
======================
요기까지================ =====


chmod 755 /etc/init.d/qmail

-
릴레이 설정(파일을 생성합니다)
vi /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
서버아이피:allow,RELAYCLIENT=""
:allow

- tcp.smtp
cdb형식으로 변환
/etc/init.d/qmail cdb
**
보통은 tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
사용하지만 /etc/init.d/qmail에 스크립트를 넣어줬기때문에 요걸루 변환합니다.


- sendmail
죽이기
이제 qmail로 모든 메일을 처리할 것이므로, 구형의 sendmail을 제거합니다.
우선 당신의 sendmail 데몬을 찾아서 그것을 kill합니다. 리눅스에서는

# ps ax | grep sendmail <--- sendmail
데몬이 있는지를 확인합니다.
# killall -TERM sendmail <--- sendmail
데몬을 제거합니다.

# ps ax | grep sendmail <---
다시 sendmail 데몬이 살아있는지를 확인합니다.

위의 명령은 현재 실행중인 sendmail만을 제거할 뿐입니다.
서버가 재시동되면, 다시 sendmail도 재시동되므로, 다음과 같은 명령어로 qmail로 모든 sendmail을 대체합니다.

mv /usr/lib/sendmail /usr/lib/sendmail.snd
mv /usr/sbin/sendmail /usr/sbin/sendmail.snd
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -sf /var/qmail/bin/qmail-qread /usr/bin/mailq

-
디비접속 컨트롤 파일 생성
vi /var/qmail/control/sqlserver
mysql_use yes
server localhost
login phpmail
password phpmail
db phpmail
table mailuser
port 3306
check_host yes
quota yes
ignore_validity yes
swap_check_order yes


-
디비설정
사용자 추가를 할때 grant명령을 써서 하는것이 아니고 밑과 같은 식으로 하시는것을 권합니다.

몇가지 옵션이 틀리게 나오더군요. 물론 사용하는데 큰 지장은 없지만 약간 찝찝한 기분을 지울 수 없더군요.

(
이부분은 mysql를 좀 아셔야 합니다. 완전 고생을 각오하셔야 합니다...)
mysql -u root -p
암호
use mysql;

insert into user values ('localhost', 'phpmail', password('phpmail'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N','N', 'N', 'N', 'N', 'N', 'N', 'N','','','','',0,0,0);

insert into db values ('localhost', 'phpmail', 'phpmail', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y','Y', 'Y');

create database phpmail;
flush privileges;
use phpmail;

create table mailuser (
mbox_host varchar(32) binary null,
id varchar(32) binary not null,
passwd varchar(32) binary not null,
crypt varchar(32) binary not null,
uid int(5) unsigned not null default '99',
gid int(5) unsigned not null default '99',
shell varchar(16) not null default '/bin/false',
home varchar(64) binary not null,
quota_size int(10) null,
start_date date not null default '0000-00-00',
expire_date date not null default '0000-00-00',
active enum('Y','N') not null default 'Y'
);

insert into mailuser (mbox_host, id, passwd, crypt, uid, gid, shell, home) values
('
서버도메인', 'phpmail', 'phpmail', encrypt('phpmail'), 99, 99, '/bin/false', '/메일박스가들어갈위치/서버도메인/phpmail');
** /
메일박스가들어갈위치/서버도메인은 /home/phpmail/ultraqmail.com 이런식 입니다.

-
메일디렉토리 설정
mkdir -p /
메일박스가들어갈위치/서버도메인/phpmail
/var/qmail/bin/maildirmake /
메일박스가들어갈위치(/home/phpmail)/서버도메인(ultraqmail.com)/phpmail(id)/Maildir
chown -R 99:99 /
메일박스가들어갈위치

만든 메일 홈으로 들어갑니다.

- .qmail
작성
================================================== ======================
%
|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/ultraqmail.com/phpmail/.procmailrc
================================================== ======================
**
쿼타설정인데요.. 패치에 따라 설정이 좀 다르네요...
일반적으론 |/var/qmail/bin/qmail-quota 요렇게 설정하는데요
cocktail14+mysql+chkuser+quota.patch_20041116
패치를 사용했을경우는 쿼타를 디비의 값을 읽어 바로 처리 하네요 해서
%
.qmail안에 써 주시면 쿼타설정 됩니다.
또한 소유자과 그룹을 nobody.nobody로 바꾸어 주어야 합니다.

- .procmail
작성
================================================== ======================
PATH=/bin:/usr/bin:/usr/local/bin
DEFAULT=/home/phpmail/ultraqmail.com/phpmail/Maildir/
MAILDIR=/home/phpmail/ultraqmail.com/phpmail/Maildir/
LOGFILE=/var/log/qmail/procmail
VERBOSE=no
SHELL=/bin/sh

# korean code decode
:0 Efhw
*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
|formail -c | hcode -dk -m
:0 Efhw
*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
|formail -c | hcode -dk -m
:0

#:0 BfHw
#*^*.filename=.*(\?euc-kr\?)
#|formail -c | hcode -dk -m

# rejection from emailaddress
#* ^From: .*()
#/home/phpmail/ultraqmail.com/phpmail/Trash/rejection

# delete spam filter
#:0
#* ^Subject: .*()
#/dev/null

# move spam filter
#:0
#* ^Subject: .*()
#/home/phpmail/ultramail.com/phpmail/Trash/spam

#:0 Efhw
#* ^From: .*()
#|/script/my_vacation
================================================== ====================
** procmail
에서 필터링을 하시려면 요 파일에 설정해주면 됩니다.
또한 소유자과 그룹을 nobody.nobody로 바꾸어 주어야 합니다.

그런데 우리는 매일 이런것들을 만들어 준다면 굉장히 불편할 겁니다.

그래서 사용자가 추가될 때마다 자동으로 이런 과정이 되도록 다음과 같이 합니다.
# cd /etc/skel
# /var/qmail/bin/maildirmake Maildir
# echo ./Maildir/ > .qmail
# echo ./Maildir/ > .procmail

이제부터는 추가되는 모든 사용자에게 자동으로 Maildir 디렉토리와 .qmail .procmail파일이 생기게 될 것입니다.

-
시스템을 리부팅하고, qmail의 정상적인 동작을 확인합니다.
리부팅되고나서, /var/log/maillog 파일내용을 살펴보면, 끝부분에서 다음과 같은 라인이 보여야 합니다.

qmail: status: local 0/10 remote 0/20

그렇지 않다면, qmail 설정에 문제가 있는 것이므로, 앞의 과정들을 다시 한번 꼼꼼히 살펴보고,
설정파일들을 자세히 검토해야만 합니다.
ps ax
명령을 내리고나서, 다음과 같은 라인들이 보이는 지를 확인합니다.

#ps ax
562 ? S 0:00 svscan
563 ? S 0:00 supervise qmail-send
564 ? S 0:00 supervise log
565 ? S 0:00 supervise qmail-smtpd
566 ? S 0:00 supervise log
567 ? S 0:00 qmail-send
568 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail
569 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail/smtpd
570 ? S 0:00 /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb -u 501 -g 501 0 25 /var/qmail/bin/qmail-smtpd
576 ? S 0:00 splogger qmail
577 ? S 0:00 qmail-lspawn |preline procmail
578 ? S 0:00 qmail-rspawn
579 ? S 0:00 qmail-clean

모양이나 숫자들이 약간씩 틀리더라도, 반드시 13개의 프로세서가 동작하고 있어야 합니다.
위와 동일한 프로세서가 없다면, qmail 설정에 문제가 있는 것이다.
위와 같은 메시지와 프로세서들이 보이지 않는다면, 문서 앞의 과정에서 만든 설정파일들을 잘못 만든것
입니다. 대표적으로 자주 하는 실수는 /var/qmail/supervise/qmail-send/log/run 파일과
/var/qmail/supervise/qmail-smtpd/log/run
파일을 만들 때, qmaill qmail 로 잘못 쓰는 것입니다.
이 문서에 쓰여진 설정파일의 내용은 절대로 오타나 탈자가 없으므로, 잘 보고 틀린 곳을 찾아내기 바랍니다.

-
가상계정 테스트
/var/qmail/bin/qmail-getpw phpmail(id)
서버도메인(ultraqmail.com)
이렇게 했을때
phpmail9999/
메일박스가들어갈위치/서버도메인/phpmail
이렇게 떨어지면 정상입니다.
여기서 phpmail은 메일유저입니다. phpmail은 실 계정이 아닌 가상계정으로 디비에 저장됩니다.
이렇게 설정해 놓으면 차후 새로운 메일들은 phpmail 아랫쪽으로 쌓이게 됩니다.

================================================== =============
여기까지 하면 일단 아웃룩으로 메일 서비스를 이용할 수 있습니다.
물론 스팸메일이나 바이러스 등을 걸러주는 기능은 빠져있습니다.
================================================== ==============


6. imap
설치
1) imap-4.7c
및 해당 패치 다운로드
http://www.au.horde.org/pub/imap/old/ 에서 imap-4.7c2.tar.Z 를 다운로드
http://www.davideous.com/imap-maildir/distrib/imap-4.7/ 에서
imap-4.7-maildirpatched-1.00.tar.gz
를 다운로드
http://www.softagency.co.jp/products/mysql/imap.html 에서
imap-mysql-0.0.2.patch.gz
를 다운로드
** imap
을 사용하기 위해선 mysql패치와 maildir패치가 필요합니다. 두번째 링크에 보면
각 패칭들이 모두 있기는 하지만 일일이 다 패치해주려면 중복되는것두 있구 해서 어렵습니다.
그래서 imap-4.7-maildirpatched-1.00.tar.gz 이 파일을 선택했는데요. 요넘은 imap-4.7 maildir이 패치된 소스입니다. 이 두개가지구 설치합니다.

2) imap
소소 및 패치 구하기
imap-4.7c.tar.gz
imap-mysql-0.0.2.patch
imap-4.5_maildirpatched-1.00.tar.gz
imap-4.5-qmail.patch
imap-4.5-mdirlist.patch
imap-4.5-maildir980721-rename.patch
imap-4.5-maildir980721-delete.patch
imap-4.5-createproto.patch

-
소스의 압축을 풉니다.

tar xvf imap-4.7c.tar
cd imap-4.7c


패치는 patch 디렉토리에 모아놓습니다.

패치를 하기전에 다음과 같은것을 숙지하셔야 합니다.
위의 노가다는 이것을 위한 전초전에 불과합니다. 좀 고생을 더 심하게 하셔야 합니다.
다운받은 Maildir패치는 전부 4.5버전이므로 patch 명령어를 써서 패치를 할 수가 없고 반드시 해당 패치를 열어 내용을 실제 소스 코드에서 찾아서 적용시켜야 합니다.

패치방법은 다음과 같습니다.
예를 들어서...
imap-4.5-qmail.patch
을 패치를 한다면....
vi imap-4.5-qmail.patch
-> vi src/osdep/unix/env_unix.c
를 수정함을 알수 있습니다.

(diff
로 시작하는 문구로 시작해서 패치를 할 경로와 파일명이 나와있습니다.)

{
char tmp[MAILTMPLEN];
if (!sysInbox) { /* initialize if first time */
- sprintf (tmp,"%s/%s",MAILSPOOL,myusername ());
+ sprintf (tmp,"%s/Mailbox",myhomedir ());
sysInbox = cpystr (tmp); /* system inbox is from mail spool */
}
return sysInbox;
}
-> env_unix.c
의 해당 위치를 찾아 - 로 표시된 줄은 없애고 + 로 된줄은 추가
, 이런식으로 하시면 됩니다.

그럼 본격적으로 패치를 들어가도록 하죠.

cp imap-mysql-0.0.2.patch imap-mysql-0.0.2.patch.01
vi imap-mysql-0.0.2.patch.01
이곳에서 몇줄을 좀 지워주셔야 합니다.
36
번째 줄에서부터 148번째 줄까지 삭제를 합니다.

보시면 아시겠지만 그곳이 env_unix.c 부분을 패치하는 곳입니다. 이곳 전부를 삭제합니다.
그리고 난후에

patch -p1 < ../../patch/imap-mysql-0.0.2.patch.01

그리고 아까 지웠던 39-148줄 부분을 위에서 말씀드린 패치법으로 일일이 손으로 적용시켜줘야
합니다. 만약 그냥 넘어가시면 나중에 make시 에러 납니다.

*
참고사항 *
나와있는 Maildir패치가 4.5버전용이구 이미 mysql패치를 적용해 버려서 그냥 patch명령으로 수정이 안됩니다.
imap-4.5_maildirpatched-1.00.tar.gz
파일을 압축을 풉니다.
(MAP 4.5
Maildir patch를 적용해 놓은 패키지 인데... 이놈을 보고 풀면 도움이 됩니다. 나중에 patch시에 일부 파일은 사용합니다.)

4) imap-4.5-qmail.patch
위의 방법으로 패치합니다.

5) imap-4.5-mdirlist.patch
이것두 위의 a)와 마찬가지로 열어서 원하는 파일을 직접 수정하면 됩니다.

6) imap-4.5-maildir980721-rename.patch, imap-4.5-maildir980721-delete.patch
이 패치는 직접 수정하지 않고 아까 풀어놓은 imap-4.5_maildirpatched-1.00/src/osdep/unix/
에서 maildir.c maildir.h 두개를 복사해오면 패치는 적용이 된 상태이므로 특별히 수정해 줄 필요는 없습니다.

cp ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/maildir.c ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/maildir.h src/osdep/unix/

7) imap-4.5-createproto.patch
이것두 마찬가지로 열어서 원하는 파일을 직접 수정하면 됩니다.

8) make
전 추가 수정 사항
maildir.c
파일이 들어갔으니 이놈을 makefile에 추가해야합니다.
vi ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/Makefile
vi src/osdep/unix/Makefile

위의 Makefile maildir 이란 글자를 찾아 그것을 참조하여 아래의 Makefile의 해당 위치에 입력하면 된다. ( 4 5군데 정도)

9) src/c-client/mail.h
수정
mail.h
를 보시면 MESSAGECACHE라는 structure(구조체)가 있습니다.

unsigned int spare : 1; /* first spare bit */
unsigned int spare2 : 1; /* second spare bit */
unsigned int spare3 : 1; /* third spare bit */
void *sparep; /* spare pointer */
unsigned long user_flags; /* user-assignable flags */
} MESSAGECACHE;


이렇게 되어있는 부분에 포인터를 하나 추가시켜줍니다.

unsigned int spare : 1; /* first spare bit */
unsigned int spare2 : 1; /* second spare bit */
unsigned int spare3 : 1; /* third spare bit */
void *sparep; /* spare pointer */
void *maildirp; /* for the Maildir driver */ <--
요놈.
unsigned long user_flags; /* user-assignable flags */
} MESSAGECACHE;

- src/osdep/unix/Makefile
수정
SQLSERVERFILE=/var/qmail/control/sqlserver

10)
몇가지 ssl에 관련된 파일 복사
cp /usr/kerberos/include/krb5.h /usr/include/openssl/
cp /usr/kerberos/include/com_err.h /usr/include/openssl/
cp /usr/kerberos/include/profile.h /usr/include/openssl/

11) vi src/osdep/unix/env_unix.c
다음과 같은 부분을(비슷하게 되었습니다.)
----------------------------------------------------------------------------------------
+# for MySQL
+MYSQL_INCLUDE=-DUSE_MYSQL -I/usr/local/mysql/include
+MYSQL_LIBS=-L/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl
+MYSQL_OBJS=mysql.o
+SQLSERVERFILE=/var/qmail/control/sqlserver
----------------------------------------------------------------------------------------
이렇게 변경해 주세요.
----------------------------------------------------------------------------------------
+# for MySQL
+MYSQL_INCLUDE=-DUSE_MYSQL -I/usr/local/mysql/include
+MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl
+MYSQL_OBJS=mysql.o
+SQLSERVERFILE=/var/qmail/control/sqlserver
----------------------------------------------------------------------------------------

12)
수정을 다 했으면 make를 한다.
make slx

--
주의 --
만약 아래의 error가 발생한다면 Linux 7.1이상에서는 ucspi-tcp, imap 설치시에 time.h가 문제가 됩니다.
따라서, 아래와 같이 수정하신다음에 다른 패키지를 컴파일하거나 설치하실때는 원래대로 되돌려 놓으면 됩니다.

-- error message --

make[3]: *** [osdep.o] Error 1
make[3]: Leaving directory `/home/test/webmail/imap-4.7b/c-client'
make[2]: *** [slx] Error 2
make[2]: Leaving directory `/home/test/webmail/imap-4.7b/c-client'
make[1]: *** [OSTYPE] Error 2
make[1]: Leaving directory `/home/test/webmail/imap-4.7b'

make: *** [slx] Error 2

# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h

그러나 우리는 애초부터 변경을 해서 사용했기 때문에 왠만해서는 에러가 안날겁니다.
만약 그래도 에러가 나신다면 패치를 잘못하신겁니다....
그렇다면 완전 생 노가다죠....

13)
추가환경 설정

cd /temp
cp -r imap4.7c /usr/local/imap
ln -s /usr/local/imap/c-client /usr/local/imap/include
ln -s /usr/local/imap/c-client /usr/local/imap/lib
cp /usr/local/imap/imapd/imapd /usr/sbin

이들은 xinetd 슈퍼데몬에 의해서 실행되므로 클라이언트 쪽에서 접속하여 사용할 수 있도록
하려면 환경설정을 수정해 주어야 합니다.

cd /etc/xinetd.d
vi imapd

service imap
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += HOST DURATION
log_on_failure += HOST
}

서비스가 제대로 등록되었는지 확인한다.
vi /etc/services
imap2 143/tcp imap # Interim Mail Access Proto v2
imap2 143/udp imap
주석으로 막혀 있는경우 제거해줍니다.

슈퍼데몬을 재가동한다.
/etc/init.d/xinetd restart

14)
설정 테스트

telnet
을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트한다.

telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK POP3 localhost.localdomain v2000.70 server ready
user test@
도메인
초 주요사항입니다.
로그인 아이디는 반듯이 id@도메인입니다. 이 부분을 무시하시는 경향이 있는데 굉장히 중요한
사항입니다. 반듯이 id@도메인입니다.
아웃룩을 쓰실때에도 반듯이 id@도메인입니다. 꼭 기억하세요.

+OK User name accepted, password please
pass 1234

+OK Mailbox open, 0 messages
quit
+OK Sayonara
Connection closed by foreign host.

telnet
을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트한다.
telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK localhost IMAP4rev1 v12.264 server ready
a00 login test@
도메인 암호

a00 OK LOGIN completed

a01 list mbox *
* LIST (\NoInferiors) NIL INBOX
a01 OK LIST completed

a02 logout
################################################## ##


#######################
후설치################## #####3
컴파일전 작업

rm /usr/include/sys/time.h ->
메세지 확인하세요 반듯이 심볼릭 링크 time.h입니다!!!
mv /usr/include/sys/time.h.ori /usr/inlcude/sys/time.h

1. apache
설치
1)
http://httpd.apache.org/download.cgi<SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 돋움; ms

2009/07/17 20:33 2009/07/17 20:33
Posted
Filed under Linux

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

<<<  LINUX 에서 Domain Name Server 설정하기 >>>

--------------------------------------------------------------------------------------------------------------------
※ 네임서버를 설정하기 전에 네임서버에 관련된 파일을 살펴보도록 하자.

 1. Resolver

   1.1. /etc/host.conf
     - 해석(Resolution) 방법 및 순서를 지정하는 파일 [ vi /etc/host.conf 로 확인 ]

   1.2. /etc/resolv.conf
     - 네임서버 위치를 지정하는 파일 [ vi /etc/resolv.conf 로 확인 ]


 2. Name Daemon : 실제 도메인 서버 설정시 편집해야 하는 파일들

   2.1. /etc/named.conf 

     - 네임서버 기본 설정 파일
     - /etc/init.d/named 네임서버 데몬이 참조하는 환경(설정) 파일

   2.2. /var/named

     - /etc/named.conf 파일에 등록된 지역(zone)에 대한 실제 .zone 파일들이 위치하는 곳.
     - 정방향 파일 설정을 위한 파일들의 위치.

   2.3. /var/named/*.zone

     - /etc/named.conf 설정 파일에서 정방향 조회에 대한 도메인(zone)을 추가한 후,
     - /var/named 디렉토리로 이동하여 도메인.zone 파일을 만들고, 적절히 수정해야 한다.
     - 예 : meimay7.co.kr.zone 파일을 생성하면 네임서버 동작시 /etc/named.conf 에서는 지정된
             디렉토리(/var/named)에 있는 meimay7.co.kr.zone 파일 내용을 참조하여 네임서버가
             작동하게 된다.

--------------------------------------------------------------------------------------------------------------------
 /etc/resolv.conf
--------------------------------------------------------------------------------------------------------------------

1. resolv.conf 파일은 자신의 호스트(내 로컬 컴퓨터)가 네임서버가 아니더라도 도메인 해석을
    위하여 어느 네임서버를 사용할 것인가를 설정해 주는 파일이다.


2. 따라서 이 파일이 존재하지 않으면 사용자의 호스트에서는 네임서버를 찾을 수 없으므로 접속
    하고자 하는 호스트 주소를 알 수 없게 되어 도메인 이름으로는 외부 네트워크에 접근할 수 없
    게 된다.


3. resolv.conf 파일 설정 옵션

   3.1. domain
     - 사용자 호스트의 로컬 도메인 이름을 넣는다.
     - 즉, 자신의 호스트 이름이다
     - # uname -a  또는 hostname 으로 자신의 호스트 명 확인

   3.2. search
     - 자동으로 찾을 도메인 주소를 입력.
     - 이 옵션으로 지정한 도메인에 대해서는 호스트명만 입력하면 자동으로 FQDN 으로 인식하여
       해당 사이트를 찾습니다. 예를 들어 search naver.com 으로 지정해 주면 웹 브라우저에서
       www 를 치면 www.naver.com 으로 인식한다.

   3.3. nameserver
     - IP 주소로 네임서버를 사용할 호스트를 입력합니다. 첫번째 네임서버에 장애가 발생되면
       두번째 네임서버, 세번째 네임서버 순으로 작동한다. ( 최대 3개지 지정 가능 )


4. 일단 /etc/resolv.conf 파일의 내부를 보자.

   4.1. 최초의 파일 내용

      # cat /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       nameserver 168.126.63.1
       nameserver 168.126.63.2

  4.2. 도메인이 없는 경우 /etc/resolv.conf 를 다음과 같이 설정하자.

      # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain localhost                       --         추가부분
       search localhost                       --         추가부분
       nameserver 168.126.63.1             -- 자기 IP
       nameserver 168.126.63.2             -- 자기IP
      
   4.3. 도메인이 있는 경우 /etc/resolv.conf 를 다음과 같이 설정하자.   

      # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain www.meimay7.co.kr                       --         추가부분
       search meimay7.co.kr                                --         추가부분
       nameserver 168.126.63.1
       nameserver 168.126.63.2


   4.4. /etc/hosts 와 /etc/resolv.conf: 와의 차이점 ☆★☆★☆★

     - /etc/hosts 는 로컬 시스템에서 작동하는 간이 네임서버 파일이라 할 수 있습니다.
       로컬 시스템에서는 도메인 검색 질의를 할 경우 이 파일에서 해당 도메인이 있는지
       체크하여 없으면 /etc/resolv.conf 파일에 지정되어 있는 네임서버에게 도메인 검색
       을 질의하여 IP 주소로 변환이 이루어집니다. 그러므로 /etc/hosts는 엄밀히 말하자면,
       네이서버라 할 수 없지만, 로컬 시스템상에서는 도메인이나 IP 주소를 해석해 주는
       기능을 하므로, 간이 네임서버라 할 수 있습니다.

       /etc/hosts 파일에 인터넷 사이트의 도메인 주소를 단축시켜 단축시킨 이름으로 웹
       서핑이나 텔넷, FTP등에서 사용할 수 있는 이점은 있지만, 이용하는 사이트가 많아지면
       많아 질수록 이 파일에서 추가해 주는 것이 한계가 있으므로, 도메인에 대한 맣은 데이터
       베이스를 가지고 있는 네임서버가 필요하게 되는 것입니다.

       따라서 /etc/resolv.conf 파일에 nameserver 옵션으로 네임서버 주소를 지정해 주면
       수많은 도메인에 대해서 쉽게 변환이 이뤄지게 됨으로써 클라이언트 환경에서 인터넷을
       사용하는데 그만큼 편리하게 됩니다.


--------------------------------------------------------------------------------------------------------------------
☆★☆★☆★  Domain Name Server 설치  ☆★☆★☆★
--------------------------------------------------------------------------------------------------------------------

1. /etc/named.conf 파일에 정방향 조회를 위해서 다음 내용을 추가.

   1.1. 이 작업은 윈도우에서 DNS -> 정방향 조회 영역 -> meimay7.co.kr 도메인을 생성하는
          것과 같은 작업니다.

   1.2. /etc/named.conf 파일의 추가된 내용

 // generated by named-bootconf.pl

 options {
  //------------- /ver/named 디렉토리의 .zone 파일을 참조한다. -----------------------//
  directory "/var/named";
  //--------------------------------------------------------------------------------------------------//
  /*
   * If there is a firewall between you and nameservers you want
   * to talk to, you might need to uncomment the query-source
   * directive below.  Previous versions of BIND always asked
   * questions using port 53, but BIND 8.1 uses an unprivileged
   * port by default.
   */
  // query-source address * port 53;
 };

 //
 // a caching only nameserver config
 //
 controls {
  inet 127.0.0.1 allow { localhost; } keys { rndckey; };
 };
 zone "." IN {
  type hint;
  file "named.ca";
 };

 zone "localhost" IN {
  type master;
  file "localhost.zone";
  allow-update { none; };
 };
 
 //---------------------- 추가부분 -----------------------//
 zone "meimay7.co.kr" IN {
  type master;
  file "meimay7.co.kr.zone";
  allow-update { none; };
 };

 zone "0.0.127.in-addr.arpa" IN {
  type master;
  file "named.local";
  allow-update { none; };
 };

 include "/etc/rndc.key";

2. zone "meimay7.co.kr" 도메인을 추가하였으므로 /etc/named.conf 내용중 디렉토리가 지정한 곳에서
    .zone 파일을 참조할 수 있도록 "meimay7.co.kr.zone" 파일을 생성한다.

   2.1. # cp localhost.zone meimay7.co.kr.zone


3. meimay7.co.kr.zone 파일을 열어 SOA 부분 설정가 도메인(meimay7.co.kr)이 사용할 호스트를 추가하자

   3.1. 이 작업은 윈도우의 DNS -> 정방향 조회역역 -> meimay7.co.kr 탭에서 SOA 등의 각종 설정과
          www , mail 등의 호스트를 지정하는 부분과 같은 작업니다.

   3.2. vi meimay7.co.kr.zone 으로 파일을 열자

   3.3. meimay7.co.kr.zone 파일을 다음과 같이 되도록 설정하자. ( 문자뒤에는 꼭 . 을 붙인다!!!!!!!!!! )

 $TTL 86400                                                        (name 서버이름)     (name서버 관리자)
 @   1D IN SOA ns.meimay7.co.kr. meimay7.hotmail.com. (
      42  ; serial (d. adams)
      3H  ; refresh
      15M  ; retry
      1W  ; expiry
      1D )  ; minimum

     IN NS ns.meimay7.co.kr.
 @    IN A  172.15.0.19 ; 호스트 지정부분
 www    IN A  172.15.0.19 ; 호스트 지정부분


4. 설정이 완료되었으면 네임서버를 재시작 하자.

   4.1. # cd /etc/init.d 명령으로 디렉토리 이동

   4.2. # ./named stop | restart | start      (네임서버 중지 또는 재시작 또는 시작 )

   4.3. # nslookup
          > server 172.15.0.19 ( 도메인 서버 지정 : 로컬 IP )
          > www.meimay7.co.kr;
            => 도메인에 해당하는 IP 가 출력되는 정상 셋팅된 것!


5. 기본 DNS 설정이 완료되었으므로 내 컴퓨터의 IP가 도메인 서비스를 할 수 있도록
    /etc/resolv.conf 파일에 다음과 같이 되도록 추가하자
  
   5.1. 파일 내용 추가

   # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain localhost09
       search localhost09
       nameserver 172.15.0.19                  -- 추가부분 (자신의IP) : 가장 위쪽에 추가하자[ 로컬 도메인이 1순위가 되도록 ]
       nameserver 168.126.63.1
       nameserver 168.126.63.2

   5.2. 이 과정은 윈도우2000 에서 "네트워크설정 -> TCP/IP -> 도메인 등록" 과정중 실제 도메인을 자신의
          컴퓨터에 등록하는 과정과 같다.


6. 5번과정까지 끝나면 도메인 설정이 완료된 것이다. " /usr/local/apache2/bin/httpd -k start "
    명령으로 apache 데몬을 실행시키고 웹 브라우저에서 5번과정까지 설정한 도메인으로
    브라우저 접속이 가능한지 테스트 해보도록 하자.

    http://www.meimay7.co.kr


7. 여러개의 도메인 추가하기

   7.1. 여러개의 도메인 등록도 도메인 하나를 등록하는 방식과 동일힌다.

   7.2. /etc/named.conf 에 zone 영역을 추가한다.

 // generated by named-bootconf.pl

 options {
  //------------- /ver/named 디렉토리의 .zone 파일을 참조한다. -----------------------//
  directory "/var/named";
  //--------------------------------------------------------------------------------------------------//
  /*
   * If there is a firewall between you and nameservers you want
   * to talk to, you might need to uncomment the query-source
   * directive below.  Previous versions of BIND always asked
   * questions using port 53, but BIND 8.1 uses an unprivileged
   * port by default.
   */
  // query-source address * port 53;
 };

 //
 // a caching only nameserver config
 //
 controls {
  inet 127.0.0.1 allow { localhost; } keys { rndckey; };
 };
 zone "." IN {
  type hint;
  file "named.ca";
 };

 zone "localhost" IN {
  type master;
  file "localhost.zone";
  allow-update { none; };
 };
 
 zone "meimay7.co.kr" IN {
  type master;
  file "meimay7.co.kr.zone";
  allow-update { none; };
 };

 //---------------------- 추가 도메인 부분 -----------------------//
 zone "meimay7.pe.kr" IN {
  type master;
  file "meimay7.pe.kr.zone";
  allow-update { none; };
 };
 //---------------------- 추가 도메인 부분 끝 -----------------------//

 zone "0.0.127.in-addr.arpa" IN {
  type master;
  file "named.local";
  allow-update { none; };
 };

 include "/etc/rndc.key";

   7.2. /etc/named.conf 에 zone 영역이 추가 되었으면, /var/named 디렉토리에
         "추가도메인명.zone" 파일을 생성하자.

       # cp meimay7.co.kr.zone meimay7.pe.kr.zone

   7.3. /var/named/meimay7.pe.kr.zone 파일을 다음과같이 만들자.


 $TTL 86400                                                        (name 서버이름)     (name서버 관리자)
 @   1D IN SOA ns.meimay7.pe.kr. meimay7.hotmail.com. (
      42  ; serial (d. adams)
      3H  ; refresh
      15M  ; retry
      1W  ; expiry
      1D )  ; minimum

     IN NS ns.meimay7.co.kr.
     IN NS 172.15.0.19.           <====== IP 도 등록하자.
 @    IN A  172.15.0.19 ; 호스트 지정부분
 www    IN A  172.15.0.19 ; 호스트 지정부분

    7.4. 여러개 도메인 추가후 nslookup으로 테스트시 정상적으로 동작이 안될경우,
           " # /etc/init.d/named start " 명령으로 네임서버를 재시작 한 후 테스트 하자.

    7.5 새로 등록된 도메인으로 홈페이지가 뜨는지 웹브라우저에서 확인하자.

2009/07/17 20:33 2009/07/17 20:33
Posted
Filed under Linux

1. /etc/named.conf 셋팅  - 다음과 같이 zone 파일 위치 지정
---------------------------------   
zone "ubicomp.co.kr" IN {
        type master;
        file "ubicomp.co.kr.zone";
        allow-update { none; };
      };
---------------------------------
 
2. /var/named/셋팅도메인.zone 파일을 연다
-----------------------------------------------------------
 $TTL 86400
@       IN      SOA     ns.ifu.co.kr.   admin.ifu.co.kr.        (
                                        20040602        ;Serial
                                        10800           ;Refresh
                                        3600            ;Retry
                                        432000          ;Expire
                                        86400           ;Minimum
                                        )
        IN      NS      ns.ifu.co.kr.
        IN      MX 10   ifu.co.kr.

@       IN      A       211.198.225.184
ns      IN      A       211.198.225.180
;Alias
www             IN      A       211.198.225.184
webmail         IN      A       211.198.225.184
2차도메인명           IN      A       211.198.225.181
 
------------------------------------------------------------
 
3. service named restart  을 해 준다.
 
4. 지정된 서버에 가서 Httpd.conf 파일을 수정해 준다.
 <VirtualHost 211.198.225.182>
    ServerAdmin webmaster@mpro.ifu.co.kr
    DocumentRoot /home/mpro/public_html/
    ServerName mpro.ifu.co.kr
    ErrorLog logs/mpro.ifu.co.kr-error_log
    CustomLog logs/mpro.ifu.co.kr-access_log common
</VirtualHost>
 
 
5. /usr/local/apache/bin/apachectl restart
 
6. nslookup 도메인명    하여 확인

2009/07/17 20:32 2009/07/17 20:32
Posted
Filed under Linux

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

<<<  LINUX 에서 Domain Name Server 설정하기 >>>

--------------------------------------------------------------------------------------------------------------------
※ 네임서버를 설정하기 전에 네임서버에 관련된 파일을 살펴보도록 하자.

 1. Resolver

   1.1. /etc/host.conf
     - 해석(Resolution) 방법 및 순서를 지정하는 파일 [ vi /etc/host.conf 로 확인 ]

   1.2. /etc/resolv.conf
     - 네임서버 위치를 지정하는 파일 [ vi /etc/resolv.conf 로 확인 ]


 2. Name Daemon : 실제 도메인 서버 설정시 편집해야 하는 파일들

   2.1. /etc/named.conf  

     - 네임서버 기본 설정 파일
     - /etc/init.d/named 네임서버 데몬이 참조하는 환경(설정) 파일

   2.2. /var/named

     - /etc/named.conf 파일에 등록된 지역(zone)에 대한 실제 .zone 파일들이 위치하는 곳.
     - 정방향 파일 설정을 위한 파일들의 위치.

   2.3. /var/named/*.zone

     - /etc/named.conf 설정 파일에서 정방향 조회에 대한 도메인(zone)을 추가한 후,
     - /var/named 디렉토리로 이동하여 도메인.zone 파일을 만들고, 적절히 수정해야 한다.
     - 예 : meimay7.co.kr.zone 파일을 생성하면 네임서버 동작시 /etc/named.conf 에서는 지정된
             디렉토리(/var/named)에 있는 meimay7.co.kr.zone 파일 내용을 참조하여 네임서버가
             작동하게 된다.

--------------------------------------------------------------------------------------------------------------------
 /etc/resolv.conf
--------------------------------------------------------------------------------------------------------------------

1. resolv.conf 파일은 자신의 호스트(내 로컬 컴퓨터)가 네임서버가 아니더라도 도메인 해석을
    위하여 어느 네임서버를 사용할 것인가를 설정해 주는 파일이다.


2. 따라서 이 파일이 존재하지 않으면 사용자의 호스트에서는 네임서버를 찾을 수 없으므로 접속
    하고자 하는 호스트 주소를 알 수 없게 되어 도메인 이름으로는 외부 네트워크에 접근할 수 없
    게 된다.


3. resolv.conf 파일 설정 옵션

   3.1. domain
     - 사용자 호스트의 로컬 도메인 이름을 넣는다.
     - 즉, 자신의 호스트 이름이다
     - # uname -a  또는 hostname 으로 자신의 호스트 명 확인

   3.2. search
     - 자동으로 찾을 도메인 주소를 입력.
     - 이 옵션으로 지정한 도메인에 대해서는 호스트명만 입력하면 자동으로 FQDN 으로 인식하여
       해당 사이트를 찾습니다. 예를 들어 search naver.com 으로 지정해 주면 웹 브라우저에서
       www 를 치면 www.naver.com 으로 인식한다.

   3.3. nameserver
     - IP 주소로 네임서버를 사용할 호스트를 입력합니다. 첫번째 네임서버에 장애가 발생되면
       두번째 네임서버, 세번째 네임서버 순으로 작동한다. ( 최대 3개지 지정 가능 )


4. 일단 /etc/resolv.conf 파일의 내부를 보자.

   4.1. 최초의 파일 내용

      # cat /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       nameserver 168.126.63.1
       nameserver 168.126.63.2

  4.2. 도메인이 없는 경우 /etc/resolv.conf 를 다음과 같이 설정하자.

      # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain localhost                       --         추가부분
       search localhost                       --         추가부분
       nameserver 168.126.63.1             -- 자기 IP
       nameserver 168.126.63.2             -- 자기IP
       
   4.3. 도메인이 있는 경우 /etc/resolv.conf 를 다음과 같이 설정하자.   

      # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain www.meimay7.co.kr                       --         추가부분
       search meimay7.co.kr                                --         추가부분
       nameserver 168.126.63.1
       nameserver 168.126.63.2


   4.4. /etc/hosts 와 /etc/resolv.conf 와의 차이점 ☆★☆★☆★

     - /etc/hosts 는 로컬 시스템에서 작동하는 간이 네임서버 파일이라 할 수 있습니다.
       로컬 시스템에서는 도메인 검색 질의를 할 경우 이 파일에서 해당 도메인이 있는지
       체크하여 없으면 /etc/resolv.conf 파일에 지정되어 있는 네임서버에게 도메인 검색
       을 질의하여 IP 주소로 변환이 이루어집니다. 그러므로 /etc/hosts는 엄밀히 말하자면,
       네이서버라 할 수 없지만, 로컬 시스템상에서는 도메인이나 IP 주소를 해석해 주는
       기능을 하므로, 간이 네임서버라 할 수 있습니다.

       /etc/hosts 파일에 인터넷 사이트의 도메인 주소를 단축시켜 단축시킨 이름으로 웹
       서핑이나 텔넷, FTP등에서 사용할 수 있는 이점은 있지만, 이용하는 사이트가 많아지면
       많아 질수록 이 파일에서 추가해 주는 것이 한계가 있으므로, 도메인에 대한 맣은 데이터
       베이스를 가지고 있는 네임서버가 필요하게 되는 것입니다.

       따라서 /etc/resolv.conf 파일에 nameserver 옵션으로 네임서버 주소를 지정해 주면
       수많은 도메인에 대해서 쉽게 변환이 이뤄지게 됨으로써 클라이언트 환경에서 인터넷을
       사용하는데 그만큼 편리하게 됩니다.


--------------------------------------------------------------------------------------------------------------------
☆★☆★☆★  Domain Name Server 설치  ☆★☆★☆★
--------------------------------------------------------------------------------------------------------------------

1. /etc/named.conf 파일에 정방향 조회를 위해서 다음 내용을 추가.

   1.1. 이 작업은 윈도우에서 DNS -> 정방향 조회 영역 -> meimay7.co.kr 도메인을 생성하는
          것과 같은 작업니다.

   1.2. /etc/named.conf 파일의 추가된 내용

 // generated by named-bootconf.pl

 options {
  //------------- /ver/named 디렉토리의 .zone 파일을 참조한다. -----------------------//
  directory "/var/named";
  //--------------------------------------------------------------------------------------------------//
  /*
   * If there is a firewall between you and nameservers you want
   * to talk to, you might need to uncomment the query-source
   * directive below.  Previous versions of BIND always asked
   * questions using port 53, but BIND 8.1 uses an unprivileged
   * port by default.
   */
  // query-source address * port 53;
 };

 //
 // a caching only nameserver config
 //
 controls {
  inet 127.0.0.1 allow { localhost; } keys { rndckey; };
 };
 zone "." IN {
  type hint;
  file "named.ca";
 };

 zone "localhost" IN {
  type master;
  file "localhost.zone";
  allow-update { none; };
 };
 
 //---------------------- 추가부분 -----------------------//
 zone "meimay7.co.kr" IN {
  type master;
  file "meimay7.co.kr.zone";
  allow-update { none; };
 };
 //---------------------- 추가부분 끝 -----------------------//

 zone "0.0.127.in-addr.arpa" IN {
  type master;
  file "named.local";
  allow-update { none; };
 };

 include "/etc/rndc.key";

2. zone "meimay7.co.kr" 도메인을 추가하였으므로 /etc/named.conf 내용중 디렉토리가 지정한 곳에서
    .zone 파일을 참조할 수 있도록 "meimay7.co.kr.zone" 파일을 생성한다.

   2.1. # cp localhost.zone meimay7.co.kr.zone


3. meimay7.co.kr.zone 파일을 열어 SOA 부분 설정가 도메인(meimay7.co.kr)이 사용할 호스트를 추가하자

   3.1. 이 작업은 윈도우의 DNS -> 정방향 조회역역 -> meimay7.co.kr 탭에서 SOA 등의 각종 설정과
          www , mail 등의 호스트를 지정하는 부분과 같은 작업니다.

   3.2. vi meimay7.co.kr.zone 으로 파일을 열자

   3.3. meimay7.co.kr.zone 파일을 다음과 같이 되도록 설정하자. ( 문자뒤에는 꼭 . 을 붙인다!!!!!!!!!! )

 $TTL 86400                                                        (name 서버이름)     (name서버 관리자)
 @   1D IN SOA ns.meimay7.co.kr. meimay7.hotmail.com. (
      42  ; serial (d. adams)
      3H  ; refresh
      15M  ; retry
      1W  ; expiry
      1D )  ; minimum

     IN NS ns.meimay7.co.kr.
 @    IN A  172.15.0.19 ; 호스트 지정부분
 www    IN A  172.15.0.19 ; 호스트 지정부분


4. 설정이 완료되었으면 네임서버를 재시작 하자.

   4.1. # cd /etc/init.d 명령으로 디렉토리 이동

   4.2. # ./named stop | restart | start      (네임서버 중지 또는 재시작 또는 시작 )

   4.3. # nslookup
          > server 172.15.0.19 ( 도메인 서버 지정 : 로컬 IP )
          > www.meimay7.co.kr
            => 도메인에 해당하는 IP 가 출력되는 정상 셋팅된 것!


5. 기본 DNS 설정이 완료되었으므로 내 컴퓨터의 IP가 도메인 서비스를 할 수 있도록
    /etc/resolv.conf 파일에 다음과 같이 되도록 추가하자
  
   5.1. 파일 내용 추가

   # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain localhost09
       search localhost09
       nameserver 172.15.0.19                  -- 추가부분 (자신의IP) : 가장 위쪽에 추가하자[ 로컬 도메인이 1순위가 되도록 ]
       nameserver 168.126.63.1
       nameserver 168.126.63.2

   5.2. 이 과정은 윈도우2000 에서 "네트워크설정 -> TCP/IP -> 도메인 등록" 과정중 실제 도메인을 자신의
          컴퓨터에 등록하는 과정과 같다.


6. 5번과정까지 끝나면 도메인 설정이 완료된 것이다. " /usr/local/apache2/bin/httpd -k start "
    명령으로 apache 데몬을 실행시키고 웹 브라우저에서 5번과정까지 설정한 도메인으로
    브라우저 접속이 가능한지 테스트 해보도록 하자.

    http://www.meimay7.co.kr


7. 여러개의 도메인 추가하기

   7.1. 여러개의 도메인 등록도 도메인 하나를 등록하는 방식과 동일힌다.

   7.2. /etc/named.conf 에 zone 영역을 추가한다.

 // generated by named-bootconf.pl

 options {
  //------------- /ver/named 디렉토리의 .zone 파일을 참조한다. -----------------------//
  directory "/var/named";
  //--------------------------------------------------------------------------------------------------//
  /*
   * If there is a firewall between you and nameservers you want
   * to talk to, you might need to uncomment the query-source
   * directive below.  Previous versions of BIND always asked
   * questions using port 53, but BIND 8.1 uses an unprivileged
   * port by default.
   */
  // query-source address * port 53;
 };

 //
 // a caching only nameserver config
 //
 controls {
  inet 127.0.0.1 allow { localhost; } keys { rndckey; };
 };
 zone "." IN {
  type hint;
  file "named.ca";
 };

 zone "localhost" IN {
  type master;
  file "localhost.zone";
  allow-update { none; };
 };
 
 zone "meimay7.co.kr" IN {
  type master;
  file "meimay7.co.kr.zone";
  allow-update { none; };
 };

 //---------------------- 추가 도메인 부분 -----------------------//
 zone "meimay7.pe.kr" IN {
  type master;
  file "meimay7.pe.kr.zone";
  allow-update { none; };
 };
 //---------------------- 추가 도메인 부분 끝 -----------------------//

 zone "0.0.127.in-addr.arpa" IN {
  type master;
  file "named.local";
  allow-update { none; };
 };

 include "/etc/rndc.key";

   7.2. /etc/named.conf 에 zone 영역이 추가 되었으면, /var/named 디렉토리에
         "추가도메인명.zone" 파일을 생성하자.

       # cp meimay7.co.kr.zone meimay7.pe.kr.zone

   7.3. /var/named/meimay7.pe.kr.zone 파일을 다음과같이 만들자.


 $TTL 86400                                                        (name 서버이름)     (name서버 관리자)
 @   1D IN SOA ns.meimay7.pe.kr. meimay7.hotmail.com. (
      42  ; serial (d. adams)
      3H  ; refresh
      15M  ; retry
      1W  ; expiry
      1D )  ; minimum

     IN NS ns.meimay7.co.kr.
     IN NS 172.15.0.19.           <====== IP 도 등록하자.
 @    IN A  172.15.0.19 ; 호스트 지정부분
 www    IN A  172.15.0.19 ; 호스트 지정부분

    7.4. 여러개 도메인 추가후 nslookup으로 테스트시 정상적으로 동작이 안될경우,
           " # /etc/init.d/named start " 명령으로 네임서버를 재시작 한 후 테스트 하자.

    7.5 새로 등록된 도메인으로 홈페이지가 뜨는지 웹브라우저에서 확인하자.

2009/07/17 20:32 2009/07/17 20:32
Posted
Filed under etc
 ftp 서버에 접속하기

c:\> ftp 100.10.1.1 또는 c:> ftp ftp.test.com

Connected to 100.10.1.1.
220 djsun FTP server (SunOS 5.6) ready.
User (100.10.1.1:(none)): handsome  <-- 사용자명
331 Password required for root.
Password:*******                             <-- 패스워드 입력
230 User root logged in.
ftp>                                                 <-- 접속 되었습니다.


2. ftp 사용중지

ftp> bye                         <-- bye 또는 by 라고 쓰면됨
221 Goodbye.

c:\>


3. ftp 서버에 접속하여 디렉토리 내용 확인하기

ftp> pwd                            <--현재 디렉토리 확인

257 "/tmp" is current directory.


ftp> ls -al          또는 dir     <-- 디렉토리 내용보기

200 PORT command successful.
150 ASCII data connection for /bin/ls (100.10.1.1,1336) (0 bytes)
total 732
drwxr-xr-x 8   root    other  659    2월 1일 13:47 .
drwxr-xr-x 44 root    root   1536   2월 1일 13:47 ..
-rw-r--r--   1  root    other 11045  2월 1일 11:26 a
drwxr-xr-x 11 root     other 487    1월 19일 09:52 b


4. ftp 사용중 현재 내컴퓨터의 디렉토리 확인

ftp> !dir                 <-- ! 를 사용하여 dos 명령을 수행함

ZATEMP      LST       122    01-02-01 13:24 ZATEMP.LST
NCDTREE   <DIR>              01-01-08 15:54 NCDTREE
SVPTRACE    00     256,256 01-01-18 19:38 SVPTRACE.00
SVPTRACE    01              0 01-01-16 12:48 SVPTRACE.01

3개 파일 385,874 바이트
1개 디렉터리 1,507,024,896 바이트 사용 가능

5. 전송 모드 변경 

전송모드라 하면 파일을 전송할때 binary 또는 ascii 모드
를 말하며 일반 txt 파일은 ascii 로 전송하고
실행파일 또는 압축 파일은 binary 로 전송하여야 함
만일 이를 어길시는 특히 txt 파일의 내용이 이상하게됨

ftp> bi                  또는 binary
200 Type set to I.           <-- binary 모드로 변경됨

ftp> as                  또는 ascii
200 Type set to A.           <-- ascii 모드로 변경됨

6. 한 개의 파일을 보내기


화일을 보낼때는 put 명령을 실행합니다.
txt 파일을 보냅니다.

ftp> !dir     SETUPXLG.TXT     <-- 보낼 파일을 확인함.
드라이브 C에 레이블이 없습니다
볼륨 일련 번호 1A71-1C08
디렉터리 C:\

SETUPXLG TXT   228   00-12-17 21:43   SETUPXLG.TXT
1개 파일 228 바이트
0개 디렉터리 1,502,801,920 바이트 사용 가능


SETUPXLG.TXT 파일은 txt 파일이므로 모드를 ascii 변경합니다.

ftp> as
200 Type set to A.

ftp> put   SETUPXLG.TXT     <-- 파일을 보냅니다.
200 PORT command successful.
150 ASCII data connection for SETUPXLG.TXT (100.1.1.10,1371).
226 Transfer complete.
ftp: 228 bytes sent in 0.00Seconds 228000.00Kbytes/sec.

ftp> dir   SETUPXLG.TXT      <-- 잘 보냈는지 확인함
200 PORT command successful.
150 ASCII data connection for /bin/ls (100.1.1.10,1374) (0 bytes).
-rw-r--r--  1  root  other  222   2월 1일  14:37 SETUPXLG.TXT
226 ASCII Transfer complete.
ftp: 72 bytes received in 0.00Seconds 72000.00Kbytes/sec.

7. 한개의 파일을 가져오기

파일을 가져 올때는 get 을 사용합니다.

우선 어떤 파일을 가져올지 확인합니다.
ftp> ls -al
200 PORT command successful.
150 ASCII data connection for /bin/ls (100.10.1.1,1336) (0 bytes)
total 732
drwxr-xr-x    8 root  other    659   2월 1일  13:47 .
drwxr-xr-x  44 root  root    1536   2월 1일  13:47 ..
-rw-r--r--     1 root  other 11045  2월 1일   11:26 a
drwxr-xr-x   11 root  other    487  1월 19일 09:52 b

a 라는 파일을 가져오겠습니다.

ftp> bi              <-- a 라는 파일은 binary 이기 때문
200 Type set to I.

ftp> get  a
200 PORT command successful.
150 Binary data connection for a (100.10.1.1,1378) (11045 bytes).
226 Binary Transfer complete.
ftp: 11045 bytes received in 0.33Seconds 33.47Kbytes/sec.


정말 가져왔는지 확인합니다.
ftp> !             <-- ! 만 사용하면 dos 로 잠시 빠져나감니다.

Microsoft(R) Windows 98
(C)Copyright Microsoft Corp 1981-1998.

C:\> dir  a

드라이브 C에 레이블이 없습니다
볼륨 일련 번호 1A71-1C08
디렉터리 C:\

A 11,045 01-02-01 14:46 a
1개 파일 11,045 바이트
0개 디렉터리 1,506,938,880 바이트 사용 가능


c:\>exit        <-- 다시 ftp 모드로 바꿉니다.
ftp>


8. 여러개의 파일을 보내고 받으려면 ??

여러개의 파일을 보내려면?  mput  을 사용
 
ftp> mput diff*    <-- diff 로 시작되는 모든화일을 보냄
mput diff1?         <-- 이름을 diff1 으로 하겠냐고 물음 (엔터)
mput diff2?         <-- diff2 를 보냄
mput diffrt?         <-- diffrt 를 보냄

여러개의 파일을 받으려면 ? mget 을 사용

ftp> mget  * <-- 모든 파일을 보냄
mget cca?   <-- cca 을 이름그대로 받겠는가?
mget ts? ii    <-- ts 파일을 ii 란 이름으로 받음
mget aa?     <-- aa 를 받음

여러개의 파일을 보내고 받을때 파일 하나하나 '?' 로
물어보는 것이 정말 짜증날 때가 있습니다.
물어보지 않고 단번에 모든 파일을 받고 보내고자 할경우
prompt 라고 기입하면됩니다.

ftp> prompt
Interactive mode Off .

위와같이 off 으로 나오면 됩니다.
다시 원위치 하려면 prompt 라고 명령을 내리면 됩니다.

ftp> prompt
Interactive mode On .

9. 혹여 위의 명령이 기억이 나지 않으면 ? 명령을 내린다.

ftp> ?

Commands may be abbreviated. Commands are:

!             delete             literal         prompt           send
?             debug             ls             put                 status
append    dir                  mdelete     pwd                trace
ascii        disconnect     mdir                quit       type
bell          get                 mget         quote             user
binary      glob               mkdir         recv                verbose
bye         hash               mls            remote            help
cd           help               mput          rename
close       lcd                 open          rmdir

ftp> ? mget
mget Get multiple files

2009/07/17 20:32 2009/07/17 20:32
Posted
Filed under Linux
'APM 설치'란 리눅스에서 웹 서버 구축에 사용되는 Apache 프로그램 과 서버에서 데이터(자료)를
저장,관리하는 데이터베이스 서버 구축에 사용되는 MySQL 프로그램 그리고 서버에서 프로그램을 작
성할 수 있는 서버측 언어인 PHP 프로그램을 소스로 다운로드 받아 위 3개 프로그램이 연동될 수 
있도록 설치하는과정입니다.

앞에서 RPM 명령어를 사용하여 팩키지 프로그램을 설치하고 삭제하는 방법에 대해서 공부했지만,
이 장에서는 최신 버젼의 소스(Source)프로그램을 다운받아 설치하는 방법을 공부하겠습니다. 소스
설치는 RPM 방법 보다 다소 어렵고 까다로운 점이 있지만 그 남름다로 장점이 있습니다. 예를 들면
사용자의 임의 설치가 가능합니다. 
여러 프로그램을 함께 연동되도록 하기 위해서는 소스 설치가 불가피한 경우가 많이 있습니다.


준비 과정

- 프로그램 Download할 디렉토리 생성

# mkdir   /temp   [Enter]

- 프로그램 다운받기

Apache  : apache_1.3.22.tar.gz( www.apache.org )
MySQL   : mysql-3.23.49.tar.gz( www.mysql.com )
PHP     : php-4.1.2.tar.gz( www.php.net )

- 기존에 설치된 RPM 삭제

# rpm  -qa  |  grep  apache  [Enter]
# rpm  -e  --nodeps  apache (팩키지이름)

# rpm  -qa  |  grep  mysql  [Enter]
# rpm  -e  --nodeps  mysql (팩키지이름)

# rpm  -qa  |  grep  php  [Enter]
# rpm  -e  --nodeps  php (팩키지이름)
※ -e 옵션으로 삭제가 않되면 의존성을 무시하는 --nodeps 옵션을 사용함.


- 기존에 사용된 디렉토리 및 파일 삭제

# rm -rf  /var/lib/mysql       [Enter]
# rm -rf  /var/www       [Enter]
# rm -rf  /var/log/httpd  [Enter]
# rm -rf  /etc/httpd  [Enter]

1. 설치 순서 MySQL -> PHP -> Apache 2. 압축 풀기 [root]# cd /temp [Enter] [temp]# tar xzvf mysql-3.23.49.tar.gz [temp]# tar xzvf php-4.1.2.tar.gz [temp]# tar xzvf apache_1.3.22.tar.gz [temp]# ls apache_1.3.22 mysql-3.23.49 php-4.1.2 apache_1.3.22.tar.gz mysql-3.23.49.tar.gz php-4.1.2.tar.gz 3. mySQL 설치 [temp]# cd mysql-3.23.49 [Enter] [mysql-3.23.49]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr ; mysql 설치 위치(/usr/local/myslq) , 한글 사용을 가능하게 (charset=euc_kr) ※ 참고: 설정이 잘못된 경우에는 config.cache 파일을 제거한 후 다시 위 단계를 진행합니다. [mysql-3.23.49]# make // 소스 파일들을 컴파일하는 명령어(약 5~10分 소요) [mysql-3.23.49]# make install // 컴파일된 소스 파일들을 /usr/local/mysql 디렉토리 밑에 설치 MySQL이 설치되었으면 아래와 같이 실행하여 초기테이블을 작성합니다. 초기 테이블에는 MySQL이 데이터베이스를 관리하기 위한 여러 정보 (사용자, mysql 데이터베이스, test 데이터베이스, 사용 권한 등)가 기록됩니다. [mysql-3.23.49]# cd /usr/local/mysql [Enter] // mysql 홈 디렉토리 이동 [mysql]# ls [mysql]# cd bin [Enter] [bin]# ./mysql_install_db 위 명령의 실행 결과 /usr/local/mysql/var라는 디렉토리가 생성되고 다음과 같이 데이터베이스들과 테이블을 위한 파일이 생성됩니다. [bin]# cd ../var [Enter] [var]# ls mysql test [var]# cd mysql [root@localhost mysql]# ls columns_priv.MYD db.MYD func.MYD host.MYD tables_priv.MYD user.MYD columns_priv.MYI db.MYI func.MYI host.MY I tables_priv.MYI user.MYI columns_priv.frm db.frm func.frm host.frm tables_priv.frm user.frm 이제 MySQL 설치는 끝났습니다. MySQL 서버를 기동해 보죠. [bin]# cd /usr/local/mysql/share/mysql [Enter] [mysql] ./mysql.server start [Enter] ※ mysql.server 실행 파일이 MySQL 서버를 시작 시키고 종료시키는 역활을 담당합니다. ./mysql.server start [Enter] // 서버 시작하기 ./mysql.server stop [Enter] // 서버 종료하기 # /usr/local/mysql/share/mysql/mysql.server start [Enter] # chown : mysql : invalid user 020113 23:21:59 mysqld ended 위와 같이 mysql 사용자 존재하지 에러가 발생되면 다음과 같이 mysql 그룹과 사용자를 만들 후 다시 MySQL 서버를 기동합니다. # /usr/local/mysql/share/mysql/mysql.server start [Enter] # groupadd mysql [Enter] // mysql 그룹 추가 # adduser -g mysql mysql [Enter] // mysql 그룹으로 mysql 사용자 생성 [root@localhost var]# Starting mysqld deamon with databases from /usr/local/mysql/var 020113 23:21:59 mysqld ended 위와 같이 MySQL 서버가 작동하지 못하고 종료(ended) 되는 이유는 /usr/local/mysql/var 디렉토리의 소유자와 그룹을 mysql로 변경한 다음 MySQL 서버를 다시 시작하고 MySQL 프로그램을 실행해 봅니다. # cd /usr/local/mysql [Enter] [mysql]# chown -R mysql.mysql var [Enter] // var 디렉토리 소유자와 그룹 변경 [mysql]# ll [Enter] [root@localhost var]# /usr/local/mysql/share/mysql/mysql.server start // MySQL 서버 재 시작 [root@localhost var]# Starting mysqld deamon with databases from /usr/local/mysql/var [root@localhost var]# ps -ef | grep mysql [Enter] // mysql 데몬 실행 확인 # cd /usr/local/mysql/bin [Enter] [bin]# ./mysql [Enter] // MySQL 프로그램 실행 아래와 같이 mysql> 프롬프트가 보이면 MySQL 서버 구축이 성공한 것입니다. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 3.23.49 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>_ mysql> show databases; +-----------+ | Databases | +-----------+ | mysql | | test | +-----------+ 2 rows in set (0.20 sec) mysql>quit

4. Apache 초기 설정

PHP에서 apache를 사용할 수 있도록 apache의 환경을 설정해줍니다. [temp] # cd apache_1.3.22 [Enter] [apache_1.3.22] # ./configure

5. PHP 설치

[apache_1.3.22]# cd ../php-4.1.2 [Enter] [php-4.1.2]# ./configure --prefix=/usr/local/php4 --with-mysql=/usr/local/mysql --with-apache=/temp/apache_1.3.22 --enable-track-vars [Enter] ※ php가 설치될 위치를 /usr/local/php4 디렉토리로 지정하고, 기타 mysql 과 apache 프로그램과 연동하여 설치하기 위한 옵션 입니다. [php-4.1.2]# make // 컴파일 [php-4.1.2]# make install // 설치 - 다음으로 php의 환경을 설정해줍니다. /temp/php-4.1.2 폴더내의 php.ini-dist 파일을 /usr/local/php4/lib/php.ini란 이름으로 복사합니다. [/php-4.1.2]#cp php.ini-dist /usr/local/php4/lib/php.ini [Enter] [php-4.1.2]# cd /usr/local/php4/lib [lib]#ls php.ini PHP의 한글 출력문제 해결을 위해 /usr/local/php4/lib/php.ini 파일을 열고 아래와 같이 환경설정 파일을 수정합니다. [/php-4.1.2]# vi /usr/local/php4/lib/php.ini : ;default_charset = "iso-8859-1" 을 default_charset = "euc_kr" 로 바꾸어 줍니다. 맨 앞의 ;(세미콜론)을 제거해야 합니다. 참고로 이 작업은 PHP가 포함된 HTML문서에서 한글을 제대로 출력하기 위함입니다.

6. Apache 설치

[php-4.1.2]# cd ../apache_1.3.22 [Enter] [apache_1.3.22]# ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a [Enter] ※ apache가 설치될 위치 (/usr/local/apache)를 지정하고 php를 사용하기 위한 옵션을 추가합니다. [/apache_1.3.22]#make [/apache_1.3.22]#make install - 이제 apache 서버의 환경을 설정해야 합니다. /usr/local/apache/conf/httpd.conf 파일을 열고 아래와 같이 설정합니다. [/apache_1.3.22]# vi /usr/local/apache/conf/httpd.conf [Enter] ; User noboby Group nobody <-- 여기 수정 ; #ServerName localhost.localdomain <--- #을 해제 ; #AddType application/x-httpd-php3 .php3 #AddType application/x-httpd-php3-source .phps # # And for PHP 4.x, use; # AddType application/x-httpd-php .php <--- #을 해제 AddType application/x-httpd-php-source .phps <--- #을 해제 - 웹 서비스를 제공하는 httpd 데몬 실행 확인 # ps -ef | grep httpd [Enter] ※ 만약 실행중인 httpd 데몬이 있으면 다음과 같이 데몬을 kill 합니다. # killall httpd [Enter] - 소스로 설치한 아파치 데몬 실행 # cd /usr/local/apache/bin [Enter] // 아파치 홈 디렉토리 밑에 bin 디렉토리로 이동 [bin]# ./apachectl start [Enter] // 아파치 데몬 실행 파일인 apachectl를 시작시킴 ※ 중지는 stop, 재 시작은 restart 입니다. 끝으로 소스로 설치한 데몬이 실행중인가를 확인 합니다. # ps -ef | grep httpd [Enter]

7. 웹 브라우저에서 웹 서버 확인 및 php 연동 확인

- apache 웹 서버 데몬 실행 파일의 위치 /usr/local/apache/bin/apachectl - apache 웹 서버 환경 설정 파일의 위치 /usr/local/apache/conf/httpd.conf - apache 웹 서버의 시작 파일의 위치(index.html) /usr/local/apache/htdocs/ # cd /usr/local/apache/htdocs [Enter] # cp index.html.en index.html // index.html 파일을 생성한다. - 웹 브라우져에서 웹 서버 시작 파일 보기 브라우저을 실행하고 주소란에 http://localhost 라 입력하고 엔터를 친다음 같이 시작 파일의 결과가 보이면 성공입니다.

이어서 php와 apache가 제대로 연동이 되었나 확인 하기 위해서 /usr/local/apache/htdocs 디렉토리에 다음과 같이 test.php 파일을 작성합니다. # cd /usr/local/apache/htdocs [Enter] # vi test.php [Enter] <? phpinfo(); ?> ※ 위 내용을 test.php 파일로 저장한 후 웹 브라우저를 다시 실행한 다음 다음과 같이 주소란에 입력하고 엔터를 쳐보세요. http://localhost/test.php 아래 화면이 나오면 apache와 php가 제대로 연동 되어 성공적으로 설치된 것입니다. 대단히 축카 축카 ~~~~~~~~~~~~~~~(^.^;)

8. MySQL + Apache + PHP 연동확인

- 먼저 소스로 설치한 MySQL 서버 기동하기 # /usr/local/mysql/share/mysql/mysql.server start [Enter] # ps -ef | grep mysqld mysql 456 0 15:09 ? 00:00:00 /usr/local/mysql/libexec/mysqld - 아파치 웹 서버 기동하기 # /usr/local/apache/bin/apachectl start [Enter] # ps -ef | grep httpd nobody 856 0 15:30 ? 00:00:00 /usr/local/apache/bin/httpd - 다음과 같이 테이블을 만들고 자료를 입력합니다. [root@localhost bin]# ./mysql Welcome to the MySQL monitor. Commands end with ; or \g mysql> show databases; // 데이터베이스 보기 mysql> use test; // test 데이터베이스 선택 mysql> create table apm_test ( // 테이블 만들기 -> id varchar(8), -> pass varchar(8) -> ); Query Ok, 0 rows affected <0.00 sec> mysql> insert into apm_test values("kimjs", "123456"); // 데이블에 자료 입력 Query OK, 1 row affected <0.00 sec> mysql> quit - /usr/local/apache/htdocs/db_test.php 라는 파일을 아래와 같이 작성하여 생성합니다. <? mysql_connect("localhost","test",""); $result = mysql_db_query("test","select id, pass from apm_test"); while ($row = mysql_fetch_object($result)) { echo $row -> id; echo " "; echo $row -> pass; } mysql_free_result($result); ?> 웹 브라우저를 실행한 다음과 주소란에 입력한 후 엔터를 치면 [결과] 처럼 나오면 성공입니다. http://localhost/dbtest.php [결 과] kimjs 123456

httpd와 mysqld 데몬 실행 배치 파일 작성

시스템이 부팅된 후 매번 apache와 mysql 데몬을 각각 실행하여 서버를 구동해야 합니다. 이러한 불편함을 막기 위해 일괄적으로 두 개의 데몬을 실행시킬 수 있는 배치 파일을 작성 하는 방법과 아예 처음 부팅되는 시점에서 데몬을 자동으로 시작시키는 방법에 대해서 알아 보겠습니다. - 배치 파일을 작성법 시스템 부팅후 apm.start 파일을 실행하면, httpd와 mysqld 데몬을 실행시키주는 배치 파일을 다음과 같이 만듭니다. [kimjs]pwd [Enter] // kimjs 사용자의 홈 디렉토리에 배치 파일 작성 /home/kimjs [kimjs]# vi apm.start [Enter] #!/bin/sh /usr/local/mysql/share/mysql/mysql.server start /usr/local/apache/bin/apachectl start :wq [kimjs]# chmod 755 apm.start [Enter] # killall mysqld [Enter] // mysql 데몬을 모두 죽임 # killall httpd [Enter] // apache 데몬을 모두 죽임 # ./apm.start // 배치 파일 실행 # ps -ef | grep mysql // 데몬 실행 여부 확인 # ps -ef | grep httpd - 부팅시 자동으로 데몬 실행시키는 방법 Windows에서 자동 배치파일과 비슷한 기능을 제공하는 파일이 /etc/rc.d/rc.local이라는 파일이 다. 그럼 여기서 rc.local 파일에 부팅시 자동으로 실행시킬 데몬을 등록하는 방법과 실행과정을 알아보겠습니다. # vi /etc/rc.d/rc.local [Enter] // apache와 mysql 데몬을 띄우는 명령문 추가 ; /usr/local/mysql/bin/safe_mysqld & ☜ 파일 맨 끝에 2줄 추가(mysql 데몬을 백그라운드로 실행) /usr/local/apache/bin/apachectl start :wq # reboot [Enter] // 시스템 재 부팅 # ps -ef | grep httpd // 재 부팅 이후 데몬 실행 확인 # ps -ef | grep mysqld ※ 위와 같이 시스템이 부팅되면서 특정한 데몬을 자동으로 띄우는 방법은 크게 두 가지로 나누어지는데 1) 소스로 새롭게 설치한 데몬은 '/etc/rc.d/rc.local'에 데몬 실행에 관한 명령문을 추가하여 설정하며 2) 기존에 RPM 팩키지로 설치된 데몬은 '/etc/rc.d/init.d/' 디렉토리에 보관되어 있어 있기 때문에 'Control-panel &' 명령어를 실행한 후 Runlevel Editor 버튼을 클릭하여 해당 데몬을 선택하고 'Add' 버튼을 클릭하여 추가할 수 있습니다.
2009/07/17 20:31 2009/07/17 20:31
Posted
Filed under Linux
■■■ rmdir : 원하는 디렉토리를 제거한다.

문법

■ rmdir [ -p ] 디렉토리

옵션

-p : mkdir의 -p 옵션의 반대 동작으로 하위 디렉토리와 그 상위 디렉토리 모두를 제거할 수 있다. 이때 모든 디렉토리는 비워져 있어야 한다. 수행 후 결과가 어떻게 되었는지를 보여준다.

설명

제거하기를 원하는 디렉토리는 미리 모든 파일들이 비워져 있어야 한다. 이러한 작업을 편리하게 하기 위해서는 파일을 지우는 명령인 rm 명령을 -r 옵션과 사용하면 된다.

사용예

■ $ rmdir -p sisap/books

디렉토리가 비워져 있다면 books를 제거한 후 sisap을 제거한다.

■■■■■ shutdown : 시스템을 종료할 때 일반적으로 사용되는 명령이다.

문법

■ shutdown [ -thnrfck ] 시간 [ 메시지 ]
■ shutdown now

옵션

-t n : t 옵션 뒤에 n초를 명시해서, 경고 메시지를 보낸 후 n초 후에 kill 시그널을 보낸다.
-h : shutdown시 halt를 실행하게 한다.
-n : 디스크 동기화 동작의 수행을 금지한다. 이런 옵션은 보통 사용할 일이 없을 것이다.
-r : 시스템 종료를 완료하고 나서 다시 부팅 과정을 수행한다.
-f : 빠른 리부팅을 한다. 리부팅시 파일 시스템 검사를 하지 않는다.
-c : 이미 예약되어 있는 shutdown을 취소한다. 이 옵션을 준다면 시간 인수는 줄 수 없다. 하지만 메시지는 사용자들에게 줄 수 있다.
-k : 모든 동작을 제대로 수행하지만 시스템을 종료할 시간이 되면 아무 것도 하지 않는다.
보는 사람으로 하여금 '절로 누구 놀리나?'하는 말이 나오게 한다. k는 'just kidding'의 의미라고 한다.


설명

요즘은 컴퓨터를 끄기 전에 반드시 shutdown 절차를 거쳐서 시스템을 정리해야 한다는 것이 상식으로 통한다. 8비트 컴퓨터를 사용할 때는 그런 복잡한 것은 생각하지 않아도 문제 없었는데 말이다. 하드웨어와 스위치를 내리는 데에 소프트웨어의 허락을 받아야만 하는 것이다. shutdown 명령은 미리 사용자들에게 경고만을 보내고, 정해진 시간에 시스템을 종료한다. 시간은 24시간 단위의 표기법을 사용하며 종료 5분전에는 시스템에 로그인이 금지된다. 시스템 종료 시간이 가까워짐에 따라 각 사용자들에게 메시지를 주기적으로 출력하여 경고를 보낸다.

사용예

다음은 밤 11시 30분에 시스템을 종료하도록 예약하며 사용자들에게 그것을 알린다.

■ $ shutdown 23:30 System will be down at 11:30 PM!!

시간을 명시할 때 now를 사용하면 곧바로 시스템을 종료한다. 리눅스 사용자들은 컴퓨터를 끄기 전에 이렇게 하면 간단하다. 혼자 사용하고 있을 때 번거로운 과정은 필요 없을 테니까 말이다.

■■■ sleep : sleep이라는 명령은 이름 그대로 잠자는 일 외에는 하는 일이 없다.

문법

■ sleep 시간

설명

시간은 초 단위의 정수 숫자이다. 전면(foreground)에서 수행된다면 사용자의 터미널은 정해진 시간만큼 잠을 잘 것이다. 물론 정해진 시간에 즉각 일어나니 안심해라. 원한다면 ^C로 흔들어 깨울 수도 있다. sleep을 사용하는 가장 좋은 예는 3장에서 본 것과 같이 다중 작업을 시행할 때이다.

다음과 같은 확인자를 사용한다면 다른 시간 단위를 사용할 수 있다.

S 초 m 분

h 시간 d 날짜

■■■ sort : 파일내의 단어 순서를 행 단위로 정렬한다.

문법

■ sort [ -cmuodfiMnrtb ] 파일이름(들)

옵션

-c : 파일이 정렬되었는지 검사한다. 그렇다면 아무런 출력도 하지 않는다.
-m : 특정한 파일을 병합한다. 파일은 이미 정렬되었다고 가정한다.
-u : 고유한 행만이 출력된다.
-o 파일명: 출력 파일 이름을 지정한다. 이름은 입력 파일 이름과 같을 수 있다.
-d : 사전(dictionary)과 같은 순서대로 정렬한다. 단어 정렬 순서에는 문자, 숫자, 공백 문자만이 사용된다.
-f : 대문자와 소문자를 구별하지 않는다.
-i : 정렬에 사용되는 문자 중 프린트될 수 없는 문자는 사용하지 않는다.
-M : 단어를 정렬할 때 달을 의미하는 문자를 취급한다. FEB는 JAN보다 뒤에 정렬된다.
-n : 숫자를 같은 문자가 아닌 정말로 숫자로 취급해서 수의 크기대로 정렬한다.
-r : 역순으로 정렬한다.
-t 문자 : 단어 등 필드를 구분하는 문자를 지정한다. 탭(tab)이나 공백 문자 이외의 문자를 구분 문자로 취급하도록 한다.
-b : 단어의 뒤에 오는 공백 문자는 정렬 키(key) 값으로 무시하도록 한다.

설명

sort명령의 정렬 방법에는 다음과 같은 기준이 있다.
일반적인 알파벳 순서로 정렬하되 소문자보다 대문자가 우선한다.
대소문자 보다 숫자가 우선한다. 숫자는 처음에 오는 숫자의 순서에 의한다. 즉 숫자들도 문자처럼 취급될 뿐이지, 실제 숫자의 대소는 생각하지 않는다.

사용예

■ $ cat sample
■ speaker
■ audio system
■ Hi-Fi video
■ 1997
■ 4th object?
■ good!
■ $ sort sample ,, 문자를 정렬
■ $ cat sample ,, 분류된 내용 확인
■ 1997
■ 4th object?
■ Hi-Fi video
■ audio system
■ good!
■ speaker

■■■ split : 텍스트 파일을 작은 조각으로 나눈다. 너무 커서 다루기 불편한 텍스트 문서를 나눌 때 사용된다.

문법

■ split -행 수 파일명 [ 태그명 ]

옵션

-행 수 : 몇 개의 행 단위로 조각을 나누는지 정한다.

설명

파일이 나누어지면 나누어진 파일들의 접미사는 순서대로 .xaa .xab .xac ...와 같이 붙여진다. 만일 태그 이름을 지정한다면 사용자가 지정한 태그 이름은 기본값 태그 이름의 x 문자를 대체하게 된다. 태그 이름을 block이 라고 준다면 나누어진 파일들은 .blockaa .blockab .blockac 등과 같은 접미사를 가질 것이다.

사용예

■ $ split -400 project.a pro

project.a 파일을 400행 단위로 나눈다. 첫 조각의 접미사는 .proaa가 된다.

■ su : 다른 사용자 계정으로 서브 셸을 생성한다.

사용예
■ $ su -
password:xxxxxxx

2009/07/17 20:31 2009/07/17 20:31
Posted
Filed under Linux
■ $ mv sisap.doc LeeKiHong.doc

■■■■ newgrp : 현재 그룹 ID를 변경한다.

문법

■ newgrp 그룹명

설명

이 명령을 사용하여 다른 특성 그룹들의 파일을 다룰 수 있다. 그룹을 바꾸면 패스워드를 물어오는 프롬프트가 나타난다. 그러면 그에 해당하는 그룹 패스워드를 입력해야 한다.

■ No such group : No such file or directory

이것은 당신이 바꾸고자 하는 그룹 이름이 존재하지 않는다는 것이다. 그룹 이름을 잘못 지정하면 이러한 메시지를 볼 수 있을 것이다.

■■■■ passwd : 자신의 패스워드를 관리한다.

문법

■ passwd [ user ]

설명

passwd를 부르면서 사용자 이름을 지정하면 그 사용자의 암호를 관리할 수 있다. 물론 이것은 슈퍼 유저만이 할 수 있는 일이다. 암호는 암기하기는 쉬워야 하지만 타인이 추측하기는 어려워야 한다. 보통은 아무 인수없이 명령을 사용하며 암호를 바꿀 것인지 아닌지를 선택할 수 있다.

사용예

■ $ passwd

■■■ paste : 하나 혹은 그 이상의 파일로부터 칼럼 형태의 출력을 만든다. 이것은 cut과 함께 사용되는 경우가 많다.

문법

■ paste [ -s ][ -d구분문자 ] 파일명(들)

옵션

-s : 각 파일을 순회하면서 paste를 수행한다.
-d구분문자 : 어떠한 문자로 칼럼을 구분하는지 지정한다. 기본값은 탭 문자이다.

설명

paste를 사용할 때 서로 붙여지는 파일명을 지정하는데, 이때 하이픈(-)으로 생략하면 표준 입력을 받아들이겠다는 뜻이 된다. 또한 paste의 출력은 항상 표준출력 장치로 나아간다.

사용예

■ $ paste -d' ' namelist.tmp /home/data.tmp

두 개의 파일을 칼럼으로 합치고 그것을 화면으로 출력한다.

■ ps : 유닉스는 동시에 여러 개의 프로세서가 동작되기 때문에 사용자가 그것들의 목록과 상태를 점검할 필요가 있다. ps라는 이름은 processor status를 의미한다. ps를 사용하여 프로세서들의 상태를 점검할 수 있다.

문법

■ ps [ -lujsvmaxScewhm ]
■ ps [ -txx ]

옵션

-l : 자세한 형태의 정보를 출력한다.
-u : 각 프로세서의 사용자 이름과 시작 시간을 보여준다.
-j : 작업 중심 형태로 출력한다.
-s : 시그널 중심 형태로 출력한다.
-v : 가상 메모리 중심 형태로 출력한다.
-m : 메모리 정보를 출력한다.
-a : 다른 사용자들의 프로세서도 보여준다.
-x : 로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여준다. 유닉스 시 스템은 사용자가 로그아웃하고 난 후에도
임의의 프로세서가 계속 동작하게 할 수 있다. 그러면 그 프로세서는 자신을 실행시킨 셸이 없이도 계속 자신의 일을 수행한다.
이러한 프로세서는 일반적인 ps 명령으로 확인할 수 없다. 이때 -x 옵션을 사용하면 자신의 터미널이 없는 프로세서들을 확인할 수 있다.
-S : 차일드(child) CPU 시간과 메모리 페이지 결함(fault) 정보를 추가 한다.
-c : 커널 task_structure로 부터 명령 이름을 보여준다.
-e : 환경을 보여준다.
-w : 긴(wide) 형태로 출력한다. 한 행 안에 출력이 잘리지 않는다.
-h : 헤더를 출력하지 않는다.
-r : 현재 실행중인 프로세서를 보여준다.
-n : USER 와 WCHAN 을 위해 수치 출력을 지원한다.


설명

기본적으로 ps는 현재 명령이 내려지는 셸에서 만들어진 프로세서들의 목록만을 보여준다. ps는 자신이 실행되는 당시, 현재의 셸에 의해서 수행된 프로세서들을 검사하고 보고한다는 점을 생각하자. 그러면 ps의 출력결과 리스트에 ps 자신이 있는 이유를 쉽게 이해할 수 있을 것이다. 각 필드의 의미는 다음과 같다.

■ COMMAND : 명령어의 이름
■ PID : 프로세서 ID, 각 프로세서를 구분하기 위한 고유의 ID
■ RSS : 프로세서에 의해 사용되는 실제 메모리의 용량(K byte 단위)
■ USER : 프로세서를 실행시킨 소유자의 계정을 보여준다.
■ SZ : 프로세서의 자료와 스텍 크기의 (K byte 단위)
■ TIME : 현재까지 사용된 CPU의 시간(분,초)
■ TT : 프로세서의 제어 터미널(t3=/dev/tty3)
■ %CPU : 마지막 분동안 프로세서가 사용한 CPU시간의 백분율
■ START : 프로세서가 시작된 시간
■ STAT : 프로세서의 상태

이중 STAT 필드는 몇 가지의 부호를 사용해서 프로세서의 상태를 표시하고 있다. 그것들을 정리해 보면 다음과 같다.

■ P : 수행 가능/수행중
■ T : 일시 정지
■ D : 디스크 입출력 대기 같은 인터럽트할 수 없는 대기상태
■ S : 20초 미만의 짧게 잠듦(sleep)
■ I : 20초 이상의 길게 잠듦
■ Z : 좀비(zombi) 프로세서 : 좀비(zomb) 상태라는 것은 프로세서가 사라질 때 시그널 처리의 문제로 완전히 소멸되지 못한 상태를 말한다.

사용예

$ ps

■■ pwd : 현재 작업하는 디렉토리를 알기 위해서 pwd 명령을 사용한다.

문법

■ pwd

설명

현 디렉토리(current directory)가 무엇인지 보여준다.

사용예

■ $ pwd
■ /home/blade

■■■ reboot : 시스템을 리부팅한다.

문법

■ reboot [ -q ]

옵션

-q : 현재의 프로세서들을 종료시키지 않고, 부팅 동작만을 수행한다. 이 옵션을 사용하면 더 빠르게 리부팅할 수 있다. 다시 부팅한 기록은 로그 파일인 /var/adm/wtmp에 기록된다.

설명

이것은 모든 사용자 프로세서를 종료시키고 디스크로부터 리눅스를 다시 부팅한다. 시스템을 리부팅하기 위해 shutdown 명령의 -r 옵션을 사용할 수도 있지만 그보다 reboot 명령을 사용하는 것이 더 편리해 보인다.

사용예

■ $ reboot

■■ rcp : 컴퓨터 사이에서 파일을 복사할 때 사용된다. "remote cp"에서 이름이 유래한다.

문법

■ rcp [ -rpkx ] 파일명1 파일명2
■ rcp [ -rpkx ] 파일명들 디렉토리

옵션

-r : 하위 디렉토리까지 재귀적으로 모두 복사한다.
-p : 파일의 시간과 모드를 보존한다.
-k : kerberos ticktets을 요구한다.
-x : 복사되는 모든 데이터에 암호화 과정을 거친다.

설명

원격 파일과 원격 호스트 이름은 콜론을 사용하여 구분한다. 마지막 인수가 디렉토리 이름이라면 지정된 모든 파일들은 그곳으로 복사된다.

사용예

■ $ rcp victor.com:/root/* /home/victorfile
■ 원격 호스트 victor.com의 /root에 있는 모든 파일들을 자신의 컴퓨터에 있는 디렉토리 /home/vitorfile로 복사한다.

■ rm : 파일을 지우는 명령이다. 이것은 remove의 의미를 가진 이름임을 기억하라.

문법

■ rm [ -firv ] 파일명

옵션

-f : 보통 지울 수 있는 권한이 없으면 안되지만, 이 옵션을 사용하면 성가신 작업을 하지 않고서도 강제로 파일을 지울 수 있다.
-i : 파일을 지울 것인가 다시 물어본다. 지우기를 원한다면 y를 누른다.
-r : 서브 디렉토리의 파일도 모두 재귀적으로 지운다.
-v : 파일을 지우기 전에 파일의 이름을 나타내준다.

설명

rm 명령의 동작은 정확히 말해서 '파일의 레이블을 삭제한다'라고 말할 수 있다. 단순히 파일을 지운다고 말하는 것은 틀릴 수도 있는 것이다. 왜냐하면 유닉스 상에서는 하나의 파일이 여러 다른 디렉토리에서 동시에 여러개의 이름을 가질 수 있기 때문이다. 만일 어떤 파일이 세 개의 레이블을 가지고 있다면 rm 명령으로 하나의 레이블을 지우는 것은 그 파일 자체를 지우지는 못한다. 다른 두 개의 파일 이름이 아직 유효하기 때문이다. 다시 두 번째 레이블을 지우더라도 파일은 하나의 파일 이름을 가지고 살아있으며, 마지막 하나의 파일 이름이 제거될 때에만 파일은 지워지는 것이다.

사용예

■ $ rm blade.Z
■ $ rm report.txt tempfile object.mainroutine hello.java
■ $ rm -r blade ,, blade와 하위 디렉토리 파일 모두를 제거

2009/07/17 20:31 2009/07/17 20:31
Posted
Filed under Linux
■■■■■ longname : 이것은 현재 시스템에서 당신이 사용하는 로그온 이름을 보여준다.

문법

■ longname

설명

longname은 옵션을 가지지 않는다. 이름은 /etc/utmp 파일을 알아낸다.

사용예

■ $ longname

■ ls : 파일 시스템 상의 파일을 목록을 보여준다.

문법

■ ls [ -aCxdlstucriFR ][ 파일명(들) ]

옵션

-a : 도트로 시작되는 이름을 가진 파일명도 전부 보여준다.
-C : 가로 순서로 나열하여 출력한다.
-x : 세로 순서로 나열하여 출력한다.
-d : 현재 디렉토리에 대한 정보를 출력한다.
-l : 각 파일들에 대한 소유자, 권한, 갱신일 등의 자세한 정보를 출력한다.
-s : 파일이 얼마나 많은 디스크 블록을 차지하고 있는가를 보여준다.
-t : 파일 갱신일 순서대로 정렬한다.
-u : 엑세스(access)한 날짜 순서대로 정렬한다.
-c : inode가 마지막 바뀐 시간 순서대로 정렬한다.
-r : 정렬된 순서의 역으로 출력한다.
-i : 파일의 inode 번호를 보여준다.
-F : 파일의 특성을 쉽게 알 수 있는 문자를 나타낸다. +는 실행 가능한 파일을, /는 디렉토리 이름을 의미한다.
@는 심볼릭 링크를 나타내고, =는 소켓(socket)을 나타낸다. 하지만 여러분의 리눅스는 기본적으로 이러한 특성을 보여줄 것이다.
-R : 현 디렉토리의 내용은 물론이고 서브 디렉토리의 내용까지 전부 보여준다.

설명

-l 옵션을 사용하여 볼 수 있는 정보 중 권한(permission) 정보 앞에 있는 파일 형태에 대한 기호는 다음과 같다.

■ - 일반 파일
■ d 디렉토리
■ b 디스크의 같은 블록 형태의 장치
■ c 터미널과 같은 문자 형태의 장치
■ p 이름붙여진 파이프(pipe)
■ s 세마포어(semaphore)
■ m 공유메모리(Shared memory)


사용예

■ $ ls -la /root

■■ mail : 전자 우편을 사용하기 위해 mail이라는 명령을 사용한다. System V 같은 계열의 유닉스에서는 mailx라고 하기도 한다. BSD에서는 mail이라고 하며, 당연히 BSD 계열인 리눅스에서도 그렇게 부른다.

문법

■ mail [ -Hf ][ 사용자ID ]

옵션

-f : 편지가 수신된 파일을 지정하며, -f 옵션 뒤에 파일 이름을 지정한다.

설명

사용자 ID를 명시되지 않고, 인수없이 mail을 실행하면 수신된 편지를 읽을 수 있다. 편지는 mail 디렉토례 사용자ID 이름으로 만들어진 파일에 저장된다.

■■ man : 사용하고자 하는 유닉스 유틸리티에 대한 매뉴얼(manual)을 검색해서 보여준다.

문법

■ man [ 장 ] 단어
■ man -k 키워드

옵션

-k : 인수로 주어진 단어를 키워드로 사용하여, 해당 키워드가 발견되는 모든 매뉴얼의 내용을 검색하여 보여준다.

설명

셸을 사용할 때 어떤 명령의 사용법이 기억나지 않는 경우가 있다. 혹은 매번 사용하던 명령이라도 특수한 옵션이 필요할 때 그 기호나 사용법을 정확히 확인해야 하는 경우가 많이 있다. 물론 참고 서적을 보면 되겠지만 터미널 상에서 필요한 도움말을 언제라도 제공받을 수 있다. 시스템에 내장된 매뉴얼은 빠르게 볼 수 있을 뿐만 아니라 그 내용도 완벽한 것이어서 옵션의 종류 같은 것은 빠진 것이 없다. 만일 온라인 레퍼런스를 모두 종이로 출력한다면 그 분량은 엄청날 것이 틀림없다. 위에서 보인 첫 번째 형식은 매뉴얼의 장 번호를 이름과 함께 명시해서 검색할 수도 있다. 하지만 보통은 그것을 생략하고, 검색하고자 하는 제목만을 인수로 전달해서 사용한다. 그러면 자세한 내용을 볼 수 있을 것이다. 출력된 내용은 화살표 키를 사용해 위아래로 자유로이 스크롤할 수 있다.

사용예

■ $ man telnet

■■ mcd : MSDOS 시스템으로 현재 사용하는 디렉토리 장소를 이동한다.

문법

■ mcd dos디렉토리

설명

dos 디렉토리는 슬래쉬나 백 슬래쉬 모두 사용할 수 있으며, MSDOS에서 사용되는 백 슬래쉬(\)나 와일드 카드를 사용하려면 따옴표를 사용하여 셸이 번역하는 것을 미리 막아야 한다.

사용예

■ $ mcd a:/dos

■■■ mcopy : MSDOS 파일 시스템으로 혹은 DOS 파일 시스템의 파일을 복사한다.

문법

■ mcopy [ -tnvm ] 파일명1 파일명2

옵션

-t : 텍스트 파일 복사시 CR/LF 문자를 \n 하나로 바꾼다.
-n : 파일을 덮어쓰게 되는 경우에도 경고하지 않는다.
-v : 자세히 안내문을 보여준다.
-m : 파일 갱신 시간을 보존한다.

사용예

■ $ mcopy -t letter a:letter.txt

■■■ mdel : MSDOS 파일 시스템에서 파일을 제거한다.

문법

■ mdel [ -v ] 파일명

옵션

-v : 진행되는 상황을 자세히 보여준다.

사용예

■ $ mdel a:/letter.txt

■■ mdir : MSDOS 디렉토리의 목록을 보여준다. MSDOS 프롬프트 상의 dir과 같은 동작을 한다.

문법

■ mdir [ -w ][파일명]

옵션

-w : 파일 크기나 생성 날짜는 제외하고 넓은 형식으로 보여준다.

사용예

■ $ mdir a:/dos

■■■ mesg : 다른 터미널의 사용자가 당신에게 write 명령 등으로 메시지를 보낼 수 있는가 아닌가를 결정한다.

문법

■ mesg [ y or n ]

옵션

당신의 터미널이 다른 사용자의 메시지를 받기 원한다면 y, 그렇지 않다면 n을 선택한다. 옵션을 선택하지 않으면 mesg는 현재 터미널의 메시지 수신 가능 여부를 확인하여 알려준다. 보통 기본적으로 터미널은 메시지를 수신할 수 있다.

사용예

■ $ mesg ,,다른 이의 메시지를 수신할 수 있는지 알려준다.
■ $ mesg n ,, 당신의 터미널이 메시지 수신을 거부하도록 한다.

■■■ mkdir : 디렉토리를 새로 만들기 위해 mkdir 명령을 사용한다.

문법

■ mkdir [ -m mode ][ -p ] directory

옵션

-m : 디렉토리를 만들 때 같이 사용하여 사용자 권한을 줄 수 있다.
-p : 만들 디렉토리의 상위 디렉토리까지 한꺼번에 만든다.

사용예

■ $ mkdir blade.seoul 현재 디렉토리의 하위 디렉토리 작성
■ $ cd blade.seoul
■ $ mkdir -p blade/books 이것은 현재 디렉토리에서 하위 디렉토리 blade를 먼저 만든 후에 다시 그 하위 디렉토리로 books를 만든다.

■■■ more 한 화면씩 츨력을 보여주는 유틸리티, 한 번에 전체적으로 볼 수 없는 파일은 이것을 사용하여 스크롤을 제어할 수 있다.

문법

■ more [ -ncdflspu ][ +줄번호 ][ 파일이름(들) ]

옵션

-n : 여기서 n은 숫자를 의미하여, 숫자는 출력 윈도우의 행수를 지정한다.
-c : 위에서부터 한 행씩 지운 후 한 행씩 출력한다. 보통은 화면 전체를 지운 후 각 행을 출력하기 시작한다. 특정한 터미널을 위해 사용한다.
-d : 스페이스나 q 키를 누르라는 프롬프트를 출력한다.
-f : 화면의 행이 아닌 논리적인 행 수를 계산한다. 보통은 긴 칼럼의 행은 화면에서 행바꿈을 하여 새로운 행으로 계산된다. -f 옵션을 사용하면 이러한 행은 계산하지 않는다.
-s : 여러 개의 빈 공백행은 하나로 취급한다.
-p : 스크롤하지 않는다. 대신 화면을 지우고 출력한다.
-u : 밑줄 차기를 금지한다.

설명

more는 BSD에 있었으나 지금은 System V 등에도 있으며 리눅스는 물론이고 대부분의 유닉스가 기본적으로 가지고 있는 유틸리티이다. 기본적으로 more는 한 번에 한 페이지 단위로 파일의 내용을 출력한다. 한 화면만큼 내용을 출력한 후 화면 하단에 '-More-' 라는 메시지를 출력하고는 잠시 출력을 중단한다. 다시 다음 페이지로 진행하기를 원한다면 스페이스바를 누른다. 또는 중단하기를 원한다면 q 키를 눌러라. 여러 개의 파일 내용을 연속적으로 보고자 한다면 원하는 여러 개의 파일 이름을 나열하면 된다. more 명령은 몇 가지 명령을 인식할 수 있다. 스페이스 바를 누르는 것을 포함해서 다음과 같은 조작을 하는 것이 가능하다.

■ <return> : 한 줄만 스크롤된다.
■ D : 반 페이지만 뒤로 이동한다.
■ <space> : 한 페이지만 뒤로 이동한다.
■ B : 한 페이지 앞으로 이동한다.
■ H : 도움말을 제공한다.
■ V : vi 에디터를 부른다. 에디터를 종료하면 원 위치로 돌아간다.
■ Q : more 를 종료한다.

사용예

■ $ cat document.97 | more

기본적으로 more 명령은 첫 번째 줄 내용부터 출력한다. 하지만 원하는 부분부터 출력을 원한다면 다음과 같은 방법으로 실행할 수 있을 것이다. 다음은 13번째 행부터 출력을 시작한다.

■ $ more +13 loveletter.txt

■■■ mount : 다른 파티션의 디스크나 물리적으로 다른 기억 장치를 파일 시스템으로 연결한다.

문법

■ mount [ -vwrnta ] 장치명 디렉토리

옵션

-v : 마운트 작업을 수행하면서 자세한 정보를 출력한다.
-w : 마운트되는 파일 시스템을 읽기와 쓰기가 가능하도록 한다.
-r : 마운트되는 파일 시스템이 읽기 동작만 가능하도록 한다.
-n : 마운트 정보가 기록되는 /etc/rntab 파일에 정보를 기록하지 않는다.
-a : /etc/fstab 파일에 있는 모든 파일 시스템을 마운트하도록 한다.
-t 형태 : 마운트되는 파일 시스템의 형태를 지정한다.

설명

마운트 개념은 다른 PC용 오퍼레이팅 시스템에 비해 매우 우수한 개념이라 할 수 있다. 사용자는 다른 오퍼레이팅 시스템도 마운트하여 접근할 수 있다. -t 옵션을 사용하여 그 형식을 지정하면 대부분이 형식이 가능하다. -t 옵션으로 지정할 수 있는 형태는 msdos, hpfs, minix, ext, ext2, proc, nfs, umsdos, sysv 등으로 사용자가 원하는 모든 파일 시스템이 접근할 수 있을 것이다. 현재 시스템에 마운트된 장치의 정보는 /etc/mtab 파일에 저장되어 있다.

사용예

다음의 사용예는 다른 파티션 영역을 차지하고 있는 DOS 파일 시스템을 마운트하는 것이다. 사실, 이것은 필자가 리눅스를 설치하고 나서 실제로 했던 작업을 그대로 적어놓은 것이다. /dev/hda1 이 의미하는 바에 대해서는 본문을 참조하라(물론 이것은 독자가 설치한 방식에 따라서 다를 것이다.) 하드 디스크의 이 영역에는 Windows 95가 설치되어 있는데, 이것도 DOS 파일 시스템 형식으로 접근이 가능하며 파일의 읽기와 쓰기가 자유롭다.

■ $ mount -t msdos /dev/hda1 /mswin

■■ mv : 파일의 위치를 이동하거나 파일의 이름을 바꾸어준다.

문법

■ mv [ -fi ] 파일명1 파일명2
■ mv [ -fi ] 파일명(들) 디렉토리명

옵션

-f : 같은 이름의 파일이 존재하고 쓰기 권한이 금지되어 있더라도 물어보지 않고 덮어쓰기를 해버린다. 이런 경우 이 옵션을 사용하지 않으면 사용자에게 다시 확인을 할 것이다.
-i : 파일을 덮어쓰기 전에 사용자에게 확인한다.

설명

기존에 있던 파일을 원치않게 잃어버리는 수가 있기 때문에 확실하지 않다면 -i 옵션을 사용하는 것을 권한다.

사용예

■ $ mv sisap.hong victor.dongki readme.txt ../friend
■ $ mv blade.Z ../kimtaihan.Z
■ $ mv /home/blade /home/friend

만일 어떤 파일을 현재의 위치에서 다시 현재의 위치로 이동한다면 어떤일이 일어날까? 고민할 것 없다. 답은 당연히 '아무 일도 일어나지 않는다' 이다. 이것은 어떤 의미를 가지지 못한다. 하지만 파일 이름을 바꾸면서 현재의 위치로 '이동'한다면, 그것은 파일의 '이름을 변경' 하는 것과 같은 효과를 거둘 것이다.

2009/07/17 20:31 2009/07/17 20:31