OS
윈도우xp에서 원격으로 리눅스에 접속 후, Xwindow 사용할 수 있는 방법
0
http://download.naver.com/pds_leaf.asp?pg_code=2841&pv_code=3
UltraVNC 입니다. 다운받아서 윈도우에 설치하세요.
http://www.tightvnc.org/download.html
tightVNC 를 받습니다.
중앙에 보면 Linux 용 tightvnc-serve-1.2.9-l.i386.rpm 과 tightvnc-1.2.9-l.i386.rpm
두개를 받습니다.
전자는 서버구동용이고 후자는 클라이언트 접속용 프로그램입니다.
FTP나 삼바로 받은 파일을 리눅스로 옮깁니다.
putty로 리눅스로 ssh 접속하세요.
둘다 페도라 코어에 rpm 설치하세요.
설치가 끝났으면,
콘솔에서 ]# vncpasswd 라고 명령을 내린후
접속 패스워드를 정합니다.
ntsysv 하셔서 vncserver 를 체크하세요.
원래는 이렇게 하면 부팅시 자동으로 VNC SERVER가 구동되야 정상인데, 버그가 있는지 자동 구동은 되지 않습니다. 그러므로 부팅후 콘솔에서 ]#vncserver 라는 명령을 내려야합니다.
그럼 vncserver 레벨 1 단계 서버가 구동됩니다. 콘솔에서 vncserver 명령만 내리면
리눅스에서 구지 Xwindow를 구동시킬 필요없습니다. 리눅스는 콘솔상태라도, 윈도에서는 리눅스의 Xwindow를 보실 수있습니다.
이제 윈도에서 vncviewer 를 실행시킵니다.
접속 IP 에 다음과 같은형식으로 입력합니다.
리눅스깔린 PC 의 IP(혹은 내부 IP) 가령 192.168.0.27 이라면
192.168.0.27:1
위의 1은 레벨 1단계를 뜻합니다.
리눅스에서 vncserver 명령을 두번 내리면 레벨 2 다녜 까지 실행되며 동시 접속가능은 원격 조정 라인은 두개로 늘어납니다.
패스워드를 넣으면 훌륭한 X 윈도우 화면을 보실수 있을 겁니다.
그리고 위 tightvnc 받을 때 위의 win32 용 thightvnc 파일은 받지 마세요.
리눅스용과 궁합이 더 잘맞는 것이 UltraVNC 라는 것을 시험을 통해 알게되었습니다.
리눅스에서 Apache2, Tomcat5, JSP, Oracle9i 연동하기 ★
0리눅스에서 Apache2, Tomcat5, JSP, Oracle9i 연동하기
설치환경
Red Hat 9.0(Kernel 2.4.20-8)
- Fedora Core2, Red Hat Enterprise Linux AS3에서도 적용 테스트
설치 패키지 구성
Apache 2.0.49
J2SDK 1.4.2-04
Tomcat 5.0.25
JK2 Connector 2.0.4
설치과정은 J2SE 설치, Apache 설치, Tomcat 설치, Oracle 연동의 순서대로 진행하며, 작업 진행 중 필요한 다운로드 받은 파일들은 모두 /usr/local/src 폴더에 저장하는 것으로 가정합니다.
1. J2SE 설치
http://java.sun.com/j2se/1.4.2/download.html 의 Download J2SE v 1.4.2_04에서 SDK를 다운로드 받습니다.
배포본 형태는 2가지로 하나는 RPM 파일을 만들어주는 binary 파일이고, 다른 하나는 배포파일이 있는 그 자리에서 압축을 풀어서 설치하는 바이너리 파일입니다. 레드햇 기반의 리눅스에서는 RPM 소스 형식의 배포본을 다운로드 받아서 설치하길 권장합니다.
- RPM 소스 설치
배포파일 j2sdk-1_4_2_04-linux-i586-rpm.bin
/usr/local/src 폴더에 저장하기로 가정 하였으므로 해당 폴더로 이동하여 다운받은 파일의 퍼미션을 확인하여 실행가능한 퍼미션을 갖도록 설정을 합니다.
#> cd /usr/local/src
#> chmod 755 j2sdk-1_4_2_04-linux-i586-rpm.bin
#> ./j2sdk-1_4_2_04-linux-i586-rpm.bin
사용권 계약이 화면에 출력되면 y 또는 yes를 입력하여 동의합니다. 이 후 설치가 계속 진행되어 j2sdk-1_4_2_03-linux-i586.rpm 파일이 생성됩니다. 생성된 RPM 파일을 설치합니다.
#> rpm -ivh j2sdk-1_4_2_03-linux-i586.rpm
/usr/java/j2sdk1.4.2_04 디렉토리가 생성되면서 이 곳에서 설치가 이루어집니다.
설치된 폴더를 link를 이용하여 별로 이름으로 지정합니다.
#> ln –s /usr/java/j2sdk1.4.2_04 /usr/java/j2sdk
이렇게 링크를 걸어두면 나중에 자바 버젼이 업된 패키지가 나오더라도 아래에 작업할 환경 파일의 수정을 하지 않고 해당 폴더의 link만 변경해 주면 되고. 아래 환경 파일을 수정하기도 수월합니다.
/etc/profile을 편집하여 PATH 설정을 해줍니다.
profile 첫부분에 다음을 추가해줍니다.
#> vi /etc/profile
JAVA_HOME=/usr/java/j2sdk PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME |
변경된 설정을 시스템에 적용시킵니다.
#> source /etc/profile
임의의 위치에서 java를 실행시킵니다.
#> java
JAVA option들이 화면에 출력되면 성공적으로 설치가 이루어진 것입니다.
- binary 배포본 설치
배포파일 j2sdk-1_4_2_04-linux-i586.bin
설치할 경로로 파일을 옮깁니다. 설치 할 위치는 사용자가 임의로 정해서 사용할 수 있으며
여기서는 /usr/local 에 J2SE를 설치하는 것으로 가정하겠습니다.
#> mv j2sdk-1_4_2_04-linux-i586.bin /usr/local
#> cd /usr/local
퍼미션을 확인하여 파일이 실행가능하도록 권한을 설정합니다.
#> chmod 755 j2sdk-1_4_2_04-linux-i586.bin
파일을 실행시켜서 J2SE를 설치합니다.
#> ./ j2sdk-1_4_2_04-linux-i586.bin
먼저 화면에 사용권 계약이 출력됩니다. 사용권 계약에 동의하기 위해 y 또는 yes를 입력하면 압축이 풀리면서 SDK가 설치됩니다. 설치경로는 /usr/local/j2sdk1.4.2_04 입니다. 역시 설치된 폴더를 link를 이용하여 별로 이름으로 지정합니다.
#> ln –s /usr/local/j2sdk1.4.2_04 /usr/local/j2sdk
PATH를 설정해줍니다. PATH 설정은 /etc/profile을 편집하여 이루어집니다. /etc/profile을 에디터로 열어서 파일 첫 부분에 다음을 추가합니다.
#> vi /etc/profile
JAVA_HOME=/usr/local/j2sdk PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME |
변경된 설정을 시스템에 적용시킵니다.
#> source /etc/profile
임의의 위치에서 java를 실행시킵니다.
#> java
JAVA option들이 화면에 출력되면 성공적으로 설치가 이루어진 것입니다
참고사항
- J2SE의 배포본은 JRE(Java Runtime Environment)와 SDK(Software Development Kit)로 나뉘어집니다. JRE는 자바로 개발된 소프트웨어를 실행시키는 데 필요한 패키지이고 SDK는 자바를 사용하여 소프트웨어를 개발하는 개발자들을 위한 패키지입니다. 따라서 개발을 목적으로 자바를 설치하려는 사람은 SDK를 다운로드 받아서 설치하기 바랍니다.
- /etc/profile은 로그인시 필요한 환경을 설정해주는 설정파일로 쉘스크립트로 이루어져있습니다. profile의 내용을 잘 이해하시는 분은 자바 실행파일이 위치한 JAVA_HOME/bin 디렉토리의 PATH가 잘 이루어지도록 임의로 변경할 수 있습니다. 자바는 PATH에 상관없이 배포파일을 실행시켜서 또는 배포파일을 실행시켜서 생성된 RPM을 설치함으로 install이 완료된 것입니다. PATH 설정은 설치된 자바를 임의의 위치에서 편리하게 사용 가능하도록 하기 위한 것입니다.
- 자바의 공식 사이트 http://java.sun.com 에서 더 많은 정보들을 얻을 수 있습니다.
2. Apache 설치
기존에 존재하는 RPM 패키지를 찾아서 삭제합니다.
# rpm -qa | grep httpd
# rpm -e [httpd RPM name]
프로세스를 확인하여 현재 Apache 웹데몬이 실행되고 있는지 확인 합니다.
#> ps –ef |grep httpd
작동중인 Httpd 데몬이 목록에 나타나면 종료 시킵니다.
#> /etc/init.d/httpd stop
강제로 종료 시킬때는 kill [PID] 명령어를 이용합니다.
http://httpd.apache.org/download.cgi 에서 Apache를 다운로드 받습니다. 리눅스에서 설치할 Apache의 배포본은 모두 소스 형식으로 제공됩니다.
-> 배포파일 httpd-2.0.49.tar.gz
#> cd /usr/local/src
#> tar xvfz httpd-2.0.49.tar.gz
압축이 해제되면 생성된 디렉토리 httpd-2.0.49로 이동합니다.
#> cd httpd-2.0.49
리눅스에서 소스파일 설치는 다음과정으로 설치 됩니다.
#> ./configure –options : 설치환경 설정
#> make : 설정된 환경으로 컴파일
#> make install : 컴파일 된 파일 설치
다음과 같이 Apache 설치를 진행 합니다.
#> ./configure –enable-layout=RedHat
–enable-rule=SHARED_CORE
–enable-modules=so
–enable-so
또는 –enable-layout=RedHat 옵션 대신 –prefix=/www 옵션을 적용할 수도 있습니다.
#> ./configure –prefix=/www
–enable-rule=SHARED_CORE
–enable-modules=so
–enable-so
#> make
#> make install
위의 과정으로 설치를 진행하면 configure단계에서 지정한 옵션에 따라 Apache의 환경이 아래와 같은 경로에 설정 됩니다. 이 설정은 다음에 진행 할 작업들에서 별도로 지정되므로 자신의 설정에 따른 파일들의 저장 경로를 확인하고 진행 하기 바랍니다.
구분 | –enable-layout=RedHat | –prefix=/www |
실행파일 위치 | /usr/sbin | /www/bin |
설정파일 위치 | /etc/httpd/conf | /www/conf |
서비스기준위치 | /var/www | /www |
html root 위치 | /var/www/html | /www/htdocs |
lib파일 위치 | /usr/lib/apache/ | /www/lib |
아래에 진행할 설명은 –enable-layout=RedHat옵션을 기준으로 하며 –prefix=/www옵션으로 설정하였을 경우는 해당설명에서 괄호 안에 음영처리로 구분하도록 하겠습니다.
레드햇 기반의 리눅스는 기본적으로 웹서버로 Apache를 사용하기 때문에 리눅스 설치 후 추가적인 업그레이드 없이 Apache로 웹서버를 운영했을 경우 기존의 디렉토리 구조를 그대로 유지하게 됩니다. 이것은 configure 진행시 –enable-layout=RedHat이라는 옵션을 사용했기 때문입니다. 디렉토리에 대한 정보는 /usr/local/src/httpd-2.0.49/config.layout에서 확인 할 수 있습니다.
<Layout RedHat>
prefix: /usr
exec_prefix: ${prefix}
bindir: ${prefix}/bin
sbindir: ${prefix}/sbin
libdir: ${prefix}/lib
libexecdir: ${prefix}/lib/apache
mandir: ${prefix}/man
sysconfdir: /etc/httpd/conf
datadir: /var/www
installbuilddir: ${datadir}/build
errordir: ${datadir}/error
iconsdir: ${datadir}/icons
htdocsdir: ${datadir}/html
manualdir: ${datadir}/manual
cgidir: ${datadir}/cgi-bin
includedir: ${prefix}/include/apache
localstatedir: /var
runtimedir: ${localstatedir}/run
logfiledir: ${localstatedir}/log/httpd
proxycachedir: ${localstatedir}/cache/httpd
</Layout>
다음으로 /etc/httpd/conf (–prefix=/www로 설정 하였을 경우 /www/conf 에 저장되므로 link를 이용하여 /etc/httpd/conf로 해당 폴더를 링크해 두면 수정하기에 용이 합니다.) 디렉토리의 설정파일을 변경합니다. 설치 전에 웹서버를 운영하면서 사용된 설정파일들은 설치하면서 변경되지 않습니다.
설치 시 생성된 파일들은 highperformance-std.conf, httpd-std.conf, ssl-std.conf 입니다. 이 세 파일들을 각각 highperformance.conf, httpd.conf, ssl.conf 로 이름을 변경하여 기존의 파일에 덮어씌웁니다.
리눅스를 설치하면서 기존에 rpm으로 된 웹서비스를 설치하지 않았을 경우는 해당 폴더와 파일들이 새로 생성되어 설치되므로 별도 복사작업을 하지 않아도 해당 파일이 생성되어 있습니다.
/usr/sbin/apachectl (/www/bin/apachectl) 실행파일을 이용하여 웹데몬을 실행시켜봅니다.
Apache 설치 전 웹데몬을 중지시켰다면 다음과 같이 실행이 될 것입니다.
#> /usr/sbin/apachectl start (/www/bin/apachectl start)
httpd: Could not determine the server’s fully qualified domain name, using 127.0
.0.1 for ServerName
이 메시지는 /etc/httpd/conf/httpd.conf 설정파일을 수정하지 않았기 때문에 표시되는 것입니다. 그러나 웹데몬은 잘 동작하고 인터넷을 통해 접속이 가능합니다.
start 명령외에 stop과 restart 명령을 사용하여 웹데몬 가동을 중지시키거나 재시작할 수 있습니다.
#> /usr/sbin/apachectl restart (/www/bin/apachectl restart)
#> /usr/sbin/apachectl stop (/www/bin/apachectl stop)
부팅시 자동으로 httpd 데몬이 실행되도록 설정합니다.
/usr/sbin/apachectl (/www/bin/apachectl) 파일을 /etc/init.d 디렉토리에 httpd로 이름을 변경하여 복사합니다. 기존에 httpd 파일이 존재할 경우 덮어 씌웁니다. 그리고 /etc/rc.d/rc0.d, /etc/rc.d/rc3.d, /etc/rc.d/rc5.d 디렉토리에 /etc/rc.d/init.d/httpd 의 symbolic link 파일이 있는지 확인하고 없으면 link 파일을 생성합니다.
#> ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc0.d/K90httpd
#> ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S89httpd
#> ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S89httpd
위 명령어 대신 chkconfig 명령어를 이용하여 각 실행레벨에서 httpd데몬이 자동 실행 되도록 설정할 수도 있습니다.
#> su — (root 만이 실행레벨을 변경할 수 있음)
#> chkconfig –level 35 httpd on
httpd 데몬을 실행 레벨 3, 5레벨에서 자동 실행 시키도록 설정하는 내용입니다.
마지막으로 /etc/httpd/conf/httpd.conf 파일의 설정을 변경합니다.
기본적으로 변경해야할 부분은
#servername www.example.com:80
으로 #을 제거하고 www.example.com을 웹서버의 domain name으로 수정해 주거나 localhost로 적어줍니다.
servername hostname.domainname:80
또는
servername localhost:80
뒤의 80이라는 숫자는 웹서버가 이용할 port 번호를 가리킵니다.
웹서버는 기본적으로 80번 port를 사용하며 특별한 경우가 아니라면 변경하지 않기를 바랍니다.
한글을 지원하기 위해서 AddDefaultCharset ISO-8859-1 부분을 찾아서 AddDefaultCharset utf8 또는 AddDefaultCharset euc_kr 로 변경합니다.
httpd.conf 설정파일은 Apache 웹서버를 시스템에 맞게 구동시키는데 매우 중요한 정보들을 담고 있습니다.
Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/ 를 참고하시기 바랍니다.
위의 과정으로 Apache 웹서버의 설치가 끝났습니다.
그러나 아파치 웹서버는 관리자가 모듈들을 선택하여 서버에 포함할 기능을 결정할 수 있는 모듈화된 프로그램으로 모듈의 개념 및 사용법, 동적공유객체(DSO) 등을 이해하여야 아파치의 확장된 기능을 사용할 수 있습니다. 즉, PHP와 같은 프로그래밍 언어를 사용하고자 할 경우 또는 자바의 Servlet Container인 Tomcat과 Apache 웹서버와의 연동은 모듈을 통하여 이루어집니다.
전반적인 내용은 Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/ 에 있습니다. 여기서는 기본적으로 필요한 사항에 대해서만 설명하겠습니다.
참고사항
* apache configure 옵션 (autoconf 출력 옵션)
–help
모든 옵션과 사용법을 화면에 출력해줍니다. 실제로 configure가 이루어지지 않습니다.
–prefix=/usr/local/share/apache
Apache 웹서버가 설치될 디렉토리를 설정합니다. 이 문서에서는 RedHat에 포함된 Apache의 기본 디렉토리 구조를 따라가고자 이 옵션을 사용하지 않고 –enable-layout=RedHat이라는 옵션을 사용했습니다.
–enable-layout=RedHat
이 옵션을 통해 여러가지 플랫폼에 해당하는 적절한 디렉토리 구조를 따라 Apache를 설치할 수 있습니다. 각 플랫폼의 path layout은 config.layout 파일에 기록되어 있습니다.
–enable-rule=SHARED_CORE
Apache 컴파일시 rule을 지정합니다. SHARED_CORE는 DSO(Dynamic Shared Objects, 동적공유객체)를 사용할 수 있는 형태로 Apache를 컴파일하도록 하는 일종의 규칙입니다. 이 옵션을 지정해주면 DSO로 컴파일된 아파치에서 제공하지 않는 외부 모듈들을 선택적으로 사용할 수 있게 됩니다. 기본형은 –enable-rule=[RULE-NAME]으로 [RULE-NAME]에 해당하는 컴파일 규칙을 enable시킵니다. –help 옵션으로 나타나는 도움말에서는 이 옵션을 표시하고 있지 않습니다.
–enable-modules=so
mod_so(so_module)를 Apache에 컴파일하여 포함시킵니다.(모듈의 정적 컴파일)
기본형은 –enable-modules=[MODULE-LIST]로 공백으로 구분한 [MODULE-LIST]에 나와있는 모듈들을 컴파일하여 포함합니다.
–enable-so
Apache가 실행시 특별한 옵션없이 자동으로 동적공유객체(DSO-Dynamic Shared Objects)를 읽어들일 수 있도록 하기 위한 설정옵션입니다.
이외에 여러가지 옵션들이 제공됩니다. 추가적인 사항은 Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/ 을 찾아보거나 –help 옵션으로 확인하기 바랍니다.
* 모듈
Apache는 모듈화된 설계로 이루어진 프로그램입니다. 모듈은 특별한 기능을 수행하기 위한 작은 프로그램으로 이해할 수 있습니다. 즉, 모듈마다 각각의 역할이 다르기 때문에 핵심 구현부 또는 실행부에 추가적으로 포함시켜 원하는 기능을 선택적으로 사용할 수 있습니다. Apache의 핵심 기능을 구현하는 모듈은 core이고 core를 기반으로 모듈을 추가하여 확장된 기능을 사용할 수 있습니다. 모듈은 Apache 컴파일 시 정적으로 포함시킬 수 있고, 또는 DSO mechanism에 의해 Apache 컴파일 이후 추가적으로 포함하여 사용할 수 있습니다. DSO(Dynamic Shared Objects)를 지원하기 위해서는 컴파일 시 configure 옵션으로 –enable-rule=SHARED_CORE를 추가하여 DSO 지원 형식으로 Apache를 컴파일 하여야 하며, mod_so 모듈을 컴파일 시 포함시켜야 합니다. mod_so 모듈은 core를 제외하고 DSO가 될 수 없는 유일한 모듈로서 Apache 핵심에 정적으로 컴파일 해야 하며, DSO로 컴파일 된 모듈을 Apache에서 읽어 들이기 위한 기능을 제공합니다. 따라서 configure진행 시 일반적으로 mod_so를 포함하도록 합니다. 나머지 모듈에 관하여는 Apache Document를 참고하기 바랍니다.
* 동적공유객체(DSO-Dynamic Shared Objects)
Apache가 동적으로 load할 수 있는 객체입니다. core와 mod_so를 제외한 다른 모든 아파치 모듈 소스를 DSO 형식의 모듈로 컴파일 하여 Apache에서 load하여 사용할 수 있습니다. DSO로 사용할 아파치 모듈을 쉽게 만들기 위해서 apxs(Apache Extension Tool)라는 지원프로그램이 있습니다. 이 프로그램으로 아파치 배포본 소스 트리 없이, DSO 지원을 위한 플랫폼 특유의 컴파일러 옵션과 링커 옵션을 고려하지 않고 모듈 소스를 DSO 모듈로 쉽게 컴파일 할 수 있습니다. PHP와 Tomcat 등 외부 프로그램에서 제공하는 DSO 모듈은 프로그램 configure시 apxs를 사용한 옵션을 통해 프로그램과 함께 컴파일 되어 생성됩니다. 자세한 사항은 Apache Document 내의 동적공유객체(DSO) http://httpd.apache.org/docs-2.0/dso.html 문서를 참고하기 바랍니다.
다음은 Apache HTTP Server Project 사이트에서 제공하는 문서입니다. 이 문서를 통해 Apache에 대해 더 유익한 정보들을 얻을 수 있습니다.
Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/
3. Tomcat 설치
- 바이너리 설치
http://jakarta.apache.org/site/binindex.cgi에서 Tomcat 5.0.25의 tarball 형식의 배포본을 다운로드 받습니다.
배포파일 Jakarta-tomcat-5.0.25.tar.gz
다운파일의 저장위치인 /usr/local/src에서 설치하고자 하는 경로로 파일을 복사하여 압축을 풀어줍니다. 바이너리 배포본은 압축을 풀어줌으로 기본적인 설치가 완료된 것입니다.
#> cd /usr/local/src
#> cp jakarta-tomcat-5.0.25.tar.gz /usr/local
#> cd /usr/local
#> tar xvfz jakarta-tomcat-5.0.25.tar.gz
Jakarta-tomcat-5.0.25 디렉토리가 생성되고 압축이 풀립니다.
역시 해당 폴더를 link를 이용하여 tomcat 이라는 경로로 지정합니다.
#> ln –s /usr/local/Jakarta-tomcat-5.0.25 /usr/local/tomcat
실행파일이 들어있는 디렉토리로 이동해서 Tomcat을 실행시켜봅니다. Tomcat은 bin 디렉토리의 catalina.sh 또는 startup.sh 파일을 실행시켜서 작동시킵니다.
#> cd /usr/local/tomcat/bin
#> ./catalina.sh start
또는
#> ./startup.sh
Using CATALINA_BASE: /usr/local/share/Jakarta-tomcat-5.0.25
Using CATALINA_HOME: /usr/local/share/Jakarta-tomcat-5.0.25
Using CATALINA_TMPDIR: /usr/local/share/Jakarta-tomcat-5.0.25/temp
Using JAVA_HOME: /usr/java/j2sdk1.4.2_03
위의 메시지가 나오면 Tomcat이 정상적으로 작동하는 것입니다. 클라이언트에서 웹브라우저를 통해 다음의 주소로 접속합니다.
http://localhost:8080 또는 http://설치한서버의주소:8080
정상적으로 Tomcat이 작동하고 있다면 브라우저에 Tomcat 관련 문서가 나타날 것입니다.
만일, 정상적으로 작동하지 않는다면 J2SE의 설치가 제대로 이루어지지 않았거나 PATH 설정이 올바르게 이루어지지 않아서입니다. /etc/profile을 에디터로 열어서 J2SE 설치 시 PATH 설정한 부분을 확인해 봅니다.
Tomcat의 Shut down은 catalina.sh 또는 shutdown.sh 파일을 이용합니다.
#> ./catalina.sh stop
또는
#> ./shutdown.sh
마지막으로 PATH를 설정해줍니다. PATH 설정은 /etc/profile을 편집하여 이루어집니다. /etc/profile을 에디터로 열어서 J2SE 설치 시 PATH 설정한 부분에 다음을 추가합니다.
#> vi /etc/profile
JAVA_HOME=/usr/java/j2sdk (또는 JAVA_HOME=/usr/local/j2sdk)
#JAVA_HOME는 J2SE를 rpm이나 바이너리 중 자신이 설치한 방식에 따라 지정합니다.
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_HOME CATALINA_HOME
변경된 설정을 시스템에 적용시킵니다.
#> source /etc/profile
PATH를 설정해주었으므로 임의의 위치에서 Tomcat을 실행시킬 수 있습니다.
Tomcat이 현재 운영 중이라면 Shutdown을 하고 다시 실행시킵니다.
#> ps -el
…………………………………………………………………………………………………….
0 S 0 1012 1 0 85 0 - 61602 schedu ?
…………………………………………………………………………………………………….
#> catalina.sh stop
또는
#> shutdown.sh
#> catalina.sh start
또는
#> startup.sh
설치가 완료되었습니다.
참고사항
* Java Servlet Container
JVM 상에서 WEB 서비스를 위한 Java Servlet API를 구현하여 서비스 해주는 Java Program으로, Servlet Container는 Client의 http 요청을 웹서버를 통해 전달받아서 Application Servlet에 전달하고, Servlet의 http 응답 메시지를 웹서버에게 전달해서 Client로 돌려주는 역할을 한다.
* Servlet Container의 종류
1) Sun Microsystems 제공 Servlet Container
JSDK(Java Servlet Development Kit)
JSWDK(JavaServer Web Development Kit)
J2EE(Java2 SDK, Enterprise Edition)
Java Web Server(iPlanet Web Server)
2) Apache 제공 Servlet Container
Apache JServ, Tomcat
3) 기타 Servlet Container
JRun/JRun Pro, Resin, WebLogic, Web Sphere, IAS
* Tomcat
Tomcat은 Apache Software Foundation의 Jakarta 프로젝트의 일환으로 개발중인 소프트웨어입니다.
Tomcat은 Java Servlet과 Java Server Page를 사용할 수 있도록 하는 Servlet Container이며 독립적으로 웹서버의 기능을 수행합니다. 그러나 일반 html 문서도 Servlet Container를 통해 번역되므로 수행속도가 느리고 웹서버로서의 기능에 제한이 있으므로 보통 다양한 모듈과 막강한 기능을 가지고 있는 Apache 웹서버와 연동하여 사용합니다.
배포본은 binary와 source 형식으로 제공됩니다. 여기서는 바이너리 배포본의 설치만 설명합니다. The Apache Jakarta Project 홈페이지의 Downloads 부분에 있는 CVS repositories는 현재 개발중인 소스들을 확인하고 다운로드 받을 수 있는 페이지입니다. (CVS는 Concurrent Version System의 약어로 오픈소스 프로젝트에서 개발중인 소스의 버전을 관리해주는 시스템입니다. CVS에 대한 자세한 사항은 이 문서의 성격과 다르므로 언급하지 않겠습니다. 자세한 사항은 CVS 매뉴얼을 참고하기 바랍니다.)
4. Tomcat Web Server Connector, JK2를 이용한 Apache2 웹서버와 Tomcat5의 연동
Apache와 Tomcat의 설치가 완료되었으면 두 서버를 연동하는 작업을 진행 합니다.
The Apache Jakarta Project 사이트에서 JK2 connector를 다운로드 받습니다. JK2의 binary 배포본은 Solaris와 WIN32용 만이 배포되고 있으므로 소스 형태의 배포본을 다운로드 받아야 합니다. http://jakarta.apache.org/site/sourceindex.cgi 에서 JK 2.0.4 Source Release tar.gz를 다운로드 받습니다.
배포파일 jakarta-tomcat-connectors-jk2-src-current.tar.gz
JK2 connector 소스를 컴파일 하면 얻을 수 있는 것이 mod_jk2.so 모듈입니다.
Apache 웹서버와 Tomcat을 연동할 mod_jk2.so 모듈을 얻는 것이 컴파일의 목적입니다.
적당한 위치에서 압축을 풀어줍니다. 소스들을 컴파일하고 필요한 파일들을 이동시키면 더 이상 사용하지 않기 때문에 다운받은 기본폴더인 /usr/local/src에서 압축을 풀어주겠습니다.
#> cd /usr/local/src
#> tar xvfz jakarta-tomcat-connectors-jk2-src-current.tar.gz
압축이 풀리면 해당 디렉토리로 이동합니다. JK2 모듈을 얻기 위해서는 jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2로 이동합니다.
#> cd /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2
다음과 같이 configure를 실행하고 make로 컴파일을 합니다.
configure 옵션(autoconf 출력옵션) –with-apxs2[=FILE]
#> ./configure –with-apxs2=/usr/sbin/apxs
#> make
Apache 설치과정에서 –enable-layout=RedHat 옵션대신 –prefix=/www로 설정하고 설치하였을 경우는
#> ./configure –with-apxs2=/www/bin/apxs
#> make
Apache 2.0 에서 공유할 DSO 모듈을 build하기 위해 사용합니다. FILE은 Apache apxs tool이 있는 경로를 나타냅니다.
make시 에러가 발생할 수 있습니다. 이것은 autoconf 실행 중 설정되는 Apache 홈디렉토리가 RedHat에서는 /usr이므로, 컴파일 중에 필요로 하는 libtool 실행파일을 /usr/build/ 경로에서 찾는데 RedHat에서는 /var/www/build/ (/www/build)경로에 존재하기 때문입니다. 따라서 문제가 발생할 경우에는 /var/www/build (/www/build)디렉토리를 /usr 디렉토리 밑으로 복사하기 바랍니다.
문제없이 완료되었다면, 현재 위치한 /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.4 -src/jk/native2 디렉토리를 기준으로 ../build/jk2/apache2/의 경로에 mod_jk2.so 파일이 만들어졌을 것입니다. 이 파일을 아파치 모듈이 있는 디렉토리로 복사합니다.
#> pwd
/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
#> cd ../build/jk2/apache2
#> pwd
/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/build/jk2/apache2
#> ls (mod_jk2.so 파일이 존재하는지 확인합니다.)
#> cp mod_jk2.so /usr/lib/apache/ (/www/lib)
(레드햇에서는 아파치 모듈이 /usr/lib/apache(/www/lib) 디렉토리에 위치합니다.)
/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/conf/workers2.properties 파일을 /etc/httpd/conf/ 위치로 복사합니다.
#> cd /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/conf
#> cp workers2.properties /etc/httpd/conf
이 파일은 Apache 웹서버에서 JK2 모듈을 사용할 때 필요한 여러가지 설정을 저장한 파일입니다. 이 파일 이외에 jk2.properties 파일이 중요한데, workers2.properties 파일이 Apache 쪽에서 JK2 모듈의 설정을 담당한다면, jk2.properties 파일은 Tomcat 쪽에서 JK2 모듈을 통한 웹서버와의 연결 설정을 담당합니다. Tomcat 5.0 버전에서는 JK2 connector를 처리할 수 있는 coyote connector가 기본설치 되어 있기 때문에 jk2.properties 파일을 Tomcat의 conf 디렉토리로 복사할 필요는 없습니다.
/etc/httpd/conf/httpd.conf 파일을 vi와 같은 편집기로 열어 LoadModule 부분을 찾아서 아래와 같이 추가하고, DirectoryIndex 부분을 찾아서 index.jsp를 추가합니다.
LoadModule jk2_module lib/apache/mod_jk2.so (/www/lib/mod_jk2.so) … DirectoryIndex index.html index.html.var index.php index.phtml index.jsp |
저장하고 편집기를 끝냅니다.
다음으로 /etc/httpd/conf 디렉토리에 복사해놓은 workers2.properties를 수정합니다. 아래의 설정 내용을 해당 파일 맨 아래 부분에 추가 합니다.
#> cd /etc/httpd/conf
#> vi worker2.properties
# Shared memory handling. Needs to be set. [shm] file=/var/log/httpd/shm.file (/www/logs/shm.file) size=1048576 # Example socket channel, explicitly set port and host. [channel.socket:localhost:8009] port=8009 host=127.0.0.1 # define the worker [ajp13:localhost:8009] channel=channel.socket:localhost:8009 # Announce a “status” worker [status:status] # Uri mapping [uri:/jsp-examples/*] worker=ajp13:localhost:8009 [uri:/servlets-examples/*] worker=ajp13:localhost:8009 [uri:/tomcat-docs/*] worker=ajp13:localhost:8009 [uri:/*] worker=ajp13:localhost:8009 [uri:/status/*] worker=status:status |
이번엔 /usr/local/tomcat/conf/jk2.properties를 수정합니다.
#> cd /usr/local/tomcat/conf
#> vi jk2.properties
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED ## WHEN YOU EDIT THE FILE. ## COMMENTS WILL BE _LOST_ ## DOCUMENTATION OF THE FORMAT IN JkMain javadoc. # Set the desired handler list # handler.list=apr,request,channelJni # # Override the default port for the socketChannel channelSocket.port=8009 # Default: # channelUnix.file=${jkHome}/work/jk2.socket # Just to check if the the config is working # shm.file=${jkHome}/work/jk2.shm shm.file=/var/log/httpd/jk2.shm (/www/logs/jk2.shm) # In order to enable jni use any channelJni directive # channelJni.disabled = 0 # And one of the following directives: # apr.jniModeSo=/opt/apache2/modules/mod_jk2.so # If set to inprocess the mod_jk2 will Register natives itself # This will enable the starting of the Tomcat from mod_jk2 apr.jniModeSo=inprocess |
(위 설정내용은 포스데이타㈜ BPM 사업추진반
모든 설정이 끝났습니다. 실행시키기 전에 /usr 디렉토리에서 /etc/httpd/conf 디렉토리에 연결된 링크 파일을 만들어줍니다. 이것은 mod_jk2.so 모듈을 컴파일 할 때 Apache Home Directory를 /usr 로 인식했기 때문에 workers2.properties 파일을 /usr/conf에서 찾기 때문입니다. 다음과 같이 실행합니다.
(이 부분은 앞 과정에서 /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2 디렉터리에서 ./configure –with-apxs2=/usr/sbin/apxs 명령어로 환경 설정을 하기 전 ./configure –help 명령을 이용하여 configuration option을 확인하면 나타나는 option중 –with-apache2=DIR 옵션에 Apache 설치과정에 컴파일 환경에 따른 설치위치를 지정하면 될 듯 한데 각자 해 보시길…. 이 외에도 –with-apache2-include=DIR, –with-apache2-lib=DIR, –with-java-home=DIR 등의 옵션이 있으므로 설명을 참조하여 다양한 옵션을 적용하여 컴파일 해 보시기 바랍니다)
#> cd /usr
#> ln -s /etc/httpd/conf ./conf
모든 과정이 끝났으면 Tomcat과 Apache 웹서버를 실행시킵니다. ps 명령어로 현재 실행중인 process 목록을 확인해서 Tomcat과 Apache가 가동중인지 확인하고, 가동중이라면 실행을 중지시킵니다. 참고로 Tomcat의 Process CMD는 java입니다.
#> ps -el
(프로세스가 존재하는지 확인)
#> catalina.sh stop
(프로세스가 존재하면 실행중지)
#> catalina.sh start
#> /etc/init.d/httpd stop
(Apache 프로세스가 존재하면 실행중지)
#> /etc/init.d/httpd start
또는 (Apache 프로세스가 존재할 경우)
#> /etc/init.d/httpd restart
클라이언트에서 http://serverURL 로 연결해 봅니다. Apache Tomcat 웹페이지가 보이면 정상적으로 연동되어 작동하는 것입니다.
jk2.properties의 설정을 변경하였을 경우 이를 적용시키기 위해서는 Tomcat을 재가동 시켜주고 Apache 또한 다시 실행시켜주어야 합니다. workers2.properties의 설정을 변경한 경우에는 Apache 웹서버만 재가동시킵니다.
참고사항
- Apache Tomcat 연동에서 가장 중요한 부분은 자신의 시스템 또는 제공하려는 서비스에 알맞은 설정 파일을 작성하는 것입니다. 이 문서에서는 기본적인 설치만을 다루고 있기 때문에 자세한 사항은 Apache Jakarta 홈페이지를 방문해서 Tomcat 5.0 Document를 참고하기 바랍니다.
- 참고문서
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/index.html Tomcat 5.0 Document
http://www.javamania.pe.kr/index2.html [자바이야기>자료실] 아파치와 톰캣 연동 및 로드 발란싱 구현 (
5. Tomcat 설정을 이용하여 서버의 일반 사용자 계정에서 JSP서비스를 제공하기
아래 내용을 수정합니다.
# vi $CATALINA_HOME/conf/server.xml
<!– Host 부분은 원래 있는 내용 –>
<Host name=”localhost” debug=”0″ appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”>
<!– 추가 해야 하는 내용 –>
<Listener className=”org.apache.catalina.startup.UserConfig”
directoryName=”public_html”
userClass=”org.apache.catalina.startup.PasswdUserDatabase”/>
파일 저장 후에 Tomcat을 서비스를 다시 한번 시작해준다.
* Listener을 추가하게 되면
http://localhost:8080/~user_account (or http://localhost/~user_account)로 접근할 수 있다.
* 계정별 Class Path 사용해서 Java Class를 사용하고 싶은 경우
1. 각 계정별 설정
#> vi .bash_profile 에서
export CLASSPATH=`./public_html/WEB-INF/classes`
를 추가한 후 저장한 후
#> source .bash_profile
#> startup.sh (톰캣 재가동. or catalina.sh start
2. 사용자 모두 설정시
#> vi /etc/profile
export CLASSPATH=`/home/*/public_html/WEB-INF/classes`
를 추가한 후 저장한다.
#> source /etc/profile
#> startup.sh (톰캣 재가동. or catalina.sh start
6. JSP에서 Oracle9i 연동하기
오라클DB를 연동하기 위해서는 JDBC드라이버가 필요하다.
http://otn.oracle.com/software/tech/java/sqlj_jdbc/index.html 에서 다운 받을 수 있다.
위 사이트에서 자신의 oracle과 호환되는 버전의 jdbc드라이버를 다운 받는다. 설명은 리눅스용 Oracle9i 9.2.0.4와 호환되는 Oracle9i 9.2.0.3 JDBC Drivers를 이용하도록 하겠습니다. http://download.oracle.com/otn/utilities_drivers/jdbc/9203/ojdbc14.jar 파일을 다운받습니다. 다운 받은 파일의 파일명을 classes12.jar로 변경합니다.
만일 오라클을 설치하였다면 설치된 서버의 오라클 설치 위치에 JDBC driver 파일이 존재하므로 위 파일을 다운받지 않고 그 파일을 이용하여도 됩니다. 오라클을 설치 시 설치 경로를 /opt/oracle/product/9.2.0로 설정 하였다면 /opt/oracle/product/9.2.0/jdbc/lib 폴더에 JDBC Driver 파일인 classes12.jar이 존재 합니다.
위 두 가지 방법 중 자신이 원하는 방법으로 classes12.jar을 구했다면 그 파일을 J2SDK가 설치된 폴더의 /usr/java/j2sdk/jre/lib/ext 폴더에 복사합니다.
자바에서는 /자바설치디렉토리/jre/lib/ext/ 폴더에 있는 파일들은 자동으로 로딩하기 때문에 따로 classpath를 잡아주지 않아도 됩니다. 그렇지 않고 따로 classpath를 설정하고 싶으신 분들은 classes12.jar 파일을 자신이 원하는 폴더에 저장하시고 클래스 패스를 설정하셔도 됩니다. (권장 하지는 않습니다.)
예) /usr/local/tomcat/common/lib/classes12.jar 에 파일을 위치 시켰을 경우
Root 사용자 권한에서만 사용하려면 /root 디렉토리에서 .bash_profile을 수정하고 모든사용자에게 사용할 수 있도록 설정 한다면 /etc/profile 파일을 아래와 같이 수정 합니다.
#> vi /etc/profile (모든 사용자에게 적용한다면)
JAVA_HOME=/usr/java/j2sdk (또는 JAVA_HOME=/usr/local/j2sdk) #JAVA_HOME는 J2SE를 rpm이나 바이너리 중 자신이 설치한 방식에 따라 지정합니다. CATALINA_HOME=/usr/local/tomcat PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin export JAVA_HOME CATALINA_HOME export CLASSPATH$CATALINA_HOME/common/lib/classes12.jar |
저장하고 빠져 나옵니다.
변경된 설정을 적용합니다.
#> source /etc/profile
- Oracle DB 연동테스트
아래 내용을 에디터로 편집하여 jsp확장자를 가지는 적당한 이름으로 저장한다. 저장할 위치는 tomcat이 설정된 위치 아래에 있는 webapps/ROOT/ 경로에 저장한다. 위 설명에서 Tomcat을 /usr/local/tomcat 에 설치하는 것으로 가정하였으므로 파일이 저장될 절대경로는 /usr/local/tomcat/webapps/ROOT/ 디렉터리에 저장하면 된다. 저장을 한 후 웹브라우져에서 데이터베이스에 저장된 테이블의 값을 읽어와 뿌려주면 오라클DB와 정상적으로 연동된 것이다.
<%@ page contentType=”text/html;charset=euc-kr” %> <%@ page import=”java.sql.*” %> <% Class.forName(“oracle.jdbc.driver.OracleDriver”); Connection con = DriverManager.getConnection(“jdbc:oracle:thin:@211.234.53.212:1521:ws16ora1″,”scott”,”tiger”); String sql=”select empno,ename,job,mgr,hiredate,sal,comm, deptno from emp”; Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery(sql); while (rs.next()) { out.print(rs.getInt(1)+”||”); out.print(rs.getString(2)+”||”); out.print(rs.getString(3) +”||”); out.print(rs.getInt(4) +”||”); out.print(rs.getDate(5) +”||”); out.print(rs.getInt(6) +”||”); out.print(rs.getInt(7) +”||”); out.print(rs.getInt(8) +”<br>”); } rs.close(); stmt.close(); con.close(); |
출처: http://blog.naver.com/mickey109/60004785056
————————————————————————
정리하자면,,,,
linux (운영체제)
apache (웹서버)
tomcat (아파치에서 자바를 움직이게 하기 위해 개발한 애플리케이션)
j2sdk (자바)
oracle(데이터베이스 관리 시스템)
JDBC(Java Database Connectivity의 약자로 Java와 DB사이의 중계역할을 하는 일종의 중계자)
[펌] 리눅스 up2date 하기
0우선 레드햇홈페이지에서 회원가입을 해야합니다.
Redhat Network에서 회원가입을 합니다.
설치를 했거나 설치가되어 있다면 systemid를 받아야 합니다.
#rhn_register –nox
rhn_register 를 통해서 systemid를 받아와야 하나 ,, 이게 7.3 작동하지 않는다. ssl 통신을 할 수 없다고.. ssl 인증서가 만료되어 그런 듯 하니 인증서를 업데이트 하면 된다.
#wget -q -O – https://rhn.redhat.com/help/new-cert.sh | /bin/bash
콘솔에서 다음과 같이 입력하면 되며 그러면 아이디와 패스워드를 입력하라고 나오는데 가입한 아이디와 패스워드를 넣고 계속 Next를 누르자(이때 프록시같은 여러가지를 묻는 것이 나오고 시스템정보를 RedhatNetwork로 보낸다.)
그러다 보면 끝난다. 자동으로 systemid는 부여 받았다.
그리고 콘솔에서 다음과 같이 입력한다.
#/sbin/service rhnsd restart
#/sbin/chkconfig –level 345 rhnsd on
이는 데몬을 다시 띄우는 과정이다.
그리고 다시 레드햇홈페이지로 가자 RedhatNetwork에서 로그인하면 서버리스트를 보면 금방 부여받은 서버가 있을 것이다. 여기서 Entitlement 가 Basic인지 확인하자 none면 사용이 불가능하므로 Basic으로 변경한다.
그리고 콘솔에서 다음과 같이 입력한다.
#up2date -p
이는 패키지를 정리하는 것이다.
#up2date -u
이는 업데이트를 하는 것이다.
업데이트 도중 커널 때문에 의존성 에러가 날 수 있다.. (난다)
커널업데이트를 해야하므로
#vi /etc/sysconfig/rhn/up2date
명령어로 up2date 파일을 열어
pkgSkipList=kernel*; -> pkgSkipList=;
로 수정한다.
이후 다시
#up2date -u
혹 ! up2date를 이용해서 패키지를 다운받고 설치중 에러가 난다면 ,,
/var/spool/up2date 에 보면 다운받은 rpm들이 있다 ,, 다시 설치하자.
#rpm -Uvh kernel-2.4.20-28.7.i686.rpm
#rpm -Uvh kernel-smp-2.4.20-28.7.i686.rpm
#rpm -Uvh kernel-source-2.4.20-28.7.i386.rpm
[펌] Unix Tip
0유닉스 혹은 리눅스용 커맨드 팁 모음입니다.
- 서브 디렉토리까지 파일안의 문자열 모두 검색
- haha와 huhu가 동시에 들어있는 행 뽑기
- 찾아서 지우기
- 공사중에 로그인 막기
- 크기가 가장 큰 파일, 디렉토리 찾기
- 가장 큰 파일을 찾으려면
- 현재 디렉토리의 크기만을 파악할때
- 시스템 정보 감추기
- 어떤 프로세스가 메모리를 가장 많이 잡아먹고 있는지 알아내기
- FTP로 들어온 사용자 확인하기
- 원하지 않는 사용자 죽이기
- less 결과를 vi로 보기
- vi에서 블럭 설정하기
- man 페이지 프린트하기
- ping 무시하기
- LILO 다시 살리기
- 특정 사용자 ftp 접근 막기
- X 윈도우에서 TV보기
- ls라는 파일이 포함된 rpm패키지 찾기
- 현재 rpm패키지의 의존패키지
- 현재 디렉토리크기
- 바로 이전 디렉토리로 가기
- 프로세스명으로 프로세스 죽이기
- 하드웨어 시계맞추기
- 원격에서 리모트서버의 X application실행시
- 링크 파일
- ^M 문자 없애기
- 비어있는 행을 찾기
- 기타 명령어 떼
- 각자가 사용하는 컴퓨터의 정보를 알고 싶을때
- 전체 메일
- 디렉토리만 빠르게 검색
- 호스트 네임 바꾸기
- 틀린명령어 틀린글자만 바꿔서 실행
- 유닉스의 현재 버젼과 종류 그리고 라이센스등을 알려주는 명령어
- 열려있는 포트 알아내기
- 텔넷 모든 접속자에게 메세지 보내기
- lsof는 열려있는 파일을 나타내 주는 옵션
- 사용자가 어디에서 무엇을 하는지 알아내기
- 텔넷 화면 수정
- 하위 디렉토리 한꺼번에 만들기
- 특정디렉토리의 모든 파일 안의 특정 문자열 치환
- killall 명령 시뮬레이션 (프로세스명으로 죽이기)
- find와 grep
- vi 검색, 치환
- 파일내의 중복되는 행을 제거 : uniq
- 파일의 결합
- 파일의 암호화 : crypt
- 개행을 제외한 화면내의 보이지 않는 문자 출력
- 화일내의 포함된 특정문자열로 찾아서 내용만 출력하기
- 특정 파일의 화일명을 비슷하게 여러개 한꺼번에 바꾸기
- 어제 날짜 구하기
- 원하지 않는 사용자 죽이기
- UNIX상에서 한글출력이 깨져 나올경우
- 현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자 추가하여 바꾸기
0.0.0.1 서브 디렉토리까지 파일안의 문자열 모두 검색
find ./ -name “*” -exec grep ‘abc’ {} \; -print
find . -name -print -exec grep abc {} \;
grep -r abc *
0.0.0.2 haha와 huhu가 동시에 들어있는 행 뽑기
grep haha foo.txt | grep huhu
0.0.0.3 찾아서 지우기
find / -name “*.eml” -exec rm -f {} \;
0.0.0.4 공사중에 로그인 막기
시스템을 공사중일 때, root 이외의 다른 사용자를 로그인 못하게 해야 할 때가 있죠? 그럴 때는, /etc/nologin 이라는 파일을 만들어,공사중 또는 Under Construction이라는 공지를 넣으면 됩니다.
0.0.0.5 크기가 가장 큰 파일, 디렉토리 찾기
가장 큰 디렉토리를 찾으려면, du -S | sort -n0.0.0.6 가장 큰 파일을 찾으려면
ls -lR | sort +4n0.0.0.7 현재 디렉토리의 크기만을 파악할때
[root@dev2 local]# du -c -h –max-depth=0 *
6.4M apache
35M bin
43M dns
1.7M doc
42k etc
1.0k games
42k geektalkd
1.1M gnuws
1.1M include
41k info
19M jakarta-tomcat-3.2.3
0 jre
15M jre118_v3
25M lib
62k libexec
1011k man
1.3M mm.mysql.jdbc-1.2c
937k sbin
3.8M share
1.8M shoutcast-1-8-3-linux-glibc6
5.2M ssl
159M total
0.0.0.8 시스템 정보 감추기
/etc/inetd.conf 파일을 열어서,telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
0.0.0.9 어떤 프로세스가 메모리를 가장 많이 잡아먹고 있는지 알아내기
ps -aux | sort +4n 또는 ps -aux | sort +5n0.0.0.10 FTP로 들어온 사용자 확인하기
ftpwho,ftpcount0.0.0.11 원하지 않는 사용자 죽이기
[root@dream /root]# skill -KILL sunny위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다. 그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠? 그럴때는
[root@dream /root]# skill -KILL -v pts/14
이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.
0.0.0.12 less 결과를 vi로 보기
less상태에서 v를 누르면 바로 vi로 감0.0.0.13 vi에서 블럭 설정하기
alt+v 하면, 라인 단위로 블럭 설정을 할 수 있으며, 해제 하시려면 Esc를 누르면 됩니다. 또한 ctl+v를 하시면, 블럭 단위로 블럭을 설정하실 수 있습니다.블럭을 설정 하신 뒤,
삭제를 하려면 x 복사를 하려면 y 붙여넣기는 p
0.0.0.14 man 페이지 프린트하기
man -t vi > vi.ps0.0.0.15 ping 무시하기
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
0.0.0.16 LILO 다시 살리기
boot : vmlinuz root=/dev/hda60.0.0.17 특정 사용자 ftp 접근 막기
/etc/ftpusers 파일에 로그인 네임을 추가하면 됩니다.
0.0.0.18 X 윈도우에서 TV보기
리눅스에서 TV보기 위해서는 드라이버 파일과 TV를 보는 프로그램이 필요합니다. 이 글에서는 미지 리눅스 OS에 탑재된 bttv 칩셋을 사용하는 TV 카드를 기준으로 설명합 니다. 만일 커널을 새로 컴파일 하실 분은 반드시 Character devices -> Video For Linux -> BT848 Video For Linux 항목을 모듈화 시키거나 커널에 포함하십시오.TV 카드를 리눅스에 인식시키기 위해서 /etc/conf.modules 파일에 다음과 같은 내용을 삽입하고 컴퓨터를 다시 시작합니다.
alias char-major-81 bttv
# 필립스 튜너의 경우 pre-install bttv modprobe -k tuner
# 알프스 튜너의 경우 pre-install bttv modprobe -k tuner type=9
이제 kwintv나 xawtv 등의 TV 시청 프로그램으로 TV를 볼 수 있습니다. 만약 TV 장치를 찾지 못하는 오류가 있다면 bttv driver 디렉토리에 포함된 MAKEDEV 를 실행하십시오.
0.0.0.19 ls라는 파일이 포함된 rpm패키지 찾기
일단 ls의 절대경로를 알아야 한다. which lswhich로 알아낸 ls의 절대경로로 rpm질의를 한다.rpm -qf /bin/ls
[root@piruks /etc]# which ls
/bin/ls
[root@piruks /etc]# rpm -qf /bin/ls
fileutils-4.0i-2mz
0.0.0.20 현재 rpm패키지의 의존패키지
rpm -qR 패키지명0.0.0.21 현재 디렉토리크기
du -h –max-depth=1 .0.0.0.22 바로 이전 디렉토리로 가기
cd -0.0.0.23 프로세스명으로 프로세스 죽이기
killall 프로세스명
kill -9 `pidof 프로세스명
0.0.0.24 하드웨어 시계맞추기
배포본을 설치하고 나면 시간이 맞지 않는 경우가 많다. 간단히 어느정도 정확한 시간을 설정하는 방법이다.[root@dev /down]# rdate -s time.kriss.re.kr
[root@dev /down]# clock -w
0.0.0.25 원격에서 리모트서버의 X application실행시
X윈도 app를 실행할때 다음과 같은 에러가 나면 조치[kang@dev /home/kang] xclock
Xlib: connection to “211.222.186.170:0.0″ refused by server
Xlib: Client is not authorized to connect to Server
Error: Can’t open display: 211.222.186.170:0.0export DISPLAY=211.222.186.170:0
xhost +211.222.186.170
0.0.0.26 링크 파일
ln -sf 링크할디렉토리 링크로 만들어질 디렉토리 참고로 링크를 걸기만 한다고 접근가능한것은 아니고,링크가 걸린 디렉토리의 퍼미션도 허용으로 바꿔야 한다. 링크로 만들어질 디렉토리는 저절로 생성되고 퍼미션 777로 잡혔음. ln -sf /www/dir_1/r_photo /www/dir_2/r_photo0.0.0.27 ^M 문자 없애기
a = 1^MUnix류 기계에서는 그냥 ^J 하나만을 개행문자로 사용하는데 PC에서는 MJ 이렇게 두 제어문자가 연속으로 사용되어야 개행문자로 받아들이죠. (그래서 PC쪽에서 만들어진 txt문서를 유닉스 기계로 불러와 vi 등을 실행하면
def vartest(a):^M
a = a + 1^M
return a^M
a = vartest(a)^M
print a^M
줄 끝마다 보기싫은 ^M이 붙습니다. 뭐 vi에서 요거 지우는건 간단하지만요.)
PC에서 Unix에서 작성한 텍스트 문서를 보통 ftp로 받아오거나 하면 워드패드 등에서 봤을 때 전혀 개행이 되어있지 않지요. 하지만 MS Word 등 좀더 강력한 편집기에선 대개 잘 처리해서 잘 보여줍니다.
위는 간단한 Python 소스입니다. 위의 경우 처럼 ^M문자가 있을때, dos2unix라는 유틸리티를 많이 사용하기도 하죠. 하지만 vi에서 간단하게 모두 삭제할수도 있습니다. dos2unix가 없거나 빠져나가서 지우는게 귀찮을때 좋겠죠. 명령은 :%s/(ctrl+v)M//g 입니다. (ctrl+v)M 이거는 ctrl과 v를 눌러준후, ctrl키를 떼지 말고 바로 m을 눌러주시믄 됩니다. 위는 정규표현식을 이용한것이고, 형식은 %s/이것을/요걸로/g 입니다 그럼 문서안의 모든 “이것을” “요걸로” 바꾸게 되죠. 단, M의 경우 ctrl+M의 뜻인데 단순히 문자로 M을 바꾸라도 해도 인식을 못하기 때문에, 위처럼 (ctrl+v)M 으로 해주셔야 합니다.
0.0.0.28 비어있는 행을 찾기
#grep -n ’^$’ filename 정규표현 의미 ^ 행의 처음 $ 행의 끝 . 임의의 한 문자[...] … 안의 임의의 한 문자. a-z,0-9 같은 범위도 사용
[^..] .. 안에 없는 임의의 한 문자. 범위 사용가능
r* 0회 이상 r 반복
r+ 1회 이상 r 반복
r? 0 혹은 1회의 r
r{n,m} n회 이상 m회 이하 r 반복
r1|r2 r1 혹은 r2 (egrep 만)
(r) r 의 정규표현(egrep 만)
0.0.0.29 기타 명령어 떼
alias(명령어 간소화하기)
apropos(관련된 명령어 찾기)
arch(컴퓨터 종류 알기)
arp(같은 서브넷의 IP 보여주기)
at(작업 시간 정하기)
atd(계획성 있는 작업 실행하기)
awk(특정 패턴 문자 처리하기)
a2p(펄 파일로 바꾸기)
badblocks(배드 블럭 검사하기)
bc(계산기)
biff(메일 수신 소리로 확인하기)
bg(후면작업; 배경화면 설정)
bind(키나 함수 순서 결합하기)
break(루프 빠져나가기)
cal(달력보기)
builtin(내부 명령어 알아보기)
case(조건 처리하기)
cat(화면상에서 파일 보기)
cd(디렉토리 변경하기)
cfdisk(디스크 설정하기)
chattr(파일 속성 변경하기)
chfn(사용자 정보 변경하기)
chgrp(파일, 디렉토리가 속했던 그룹 바꾸기)
chmod(파일 권한 바꾸기)
chown(파일 주인 바꾸기)
chsh(지정된 셸 바꾸기)
cksum(CRC값을 점검한다)
clear(화면 청소하기)
clock(CMOS 시각을 조정하기)
cmp(파일 비교하기)
colcrt(문자 변환 필터)
colrm(열 삭제하기)
column(가로 정렬하기)
comm(파일 비교 출력하기)
command(명령어 알아보기)
continue(루프 계속돌기)
cp(파일 복사하기)
cpio(복사본 만들기)
crontab(cron을 관리한다)
csplit(파일에 서식, 규칙 정하기)
cut(필요한 필드만 출력하기)
date(날짜 보기)
dd(블럭장치 읽고 쓰기)
debugfs(ext2 파일 시스템 디버깅하기)
declare(변수 선언하기)
df(파일 시스템의 사용량 보기)
dirs(디렉토리 목록 표시하기)
dmesg(부팅 메시지 보기)
dnsdomainname(DNS 이름 출력)
domainname(NIS 이름 출력&설정)
du(디렉토리와 파일의 용량 파악하기)
dumpe2fs(파일 시스템 정보 보기)
echo(표준 출력하기)
eject(장치 해제하기)
elm(메일 관련)
enable(내부 명령어 지정)
env(환경변수 출력하기)
eval(인수 읽기)
exec(셸 명령어 실행하기)
exit(종료하기)
expand(탭을 공백으로 변환하기)
export(변수 지정하기)
e2fsck(파일 시스템 복구하기)
fc(지정된 편집기 받기)
fdformat(플로피 디스크 포맷하기)
fdisk(파티션 나누기)
fg(지정된 작업을 전면 프로세스로 시작하기)
file(파일 종류 보기)
find(파일 찾기)
finger(사용자 정보 알기)
fold(정형화하기)
fmt(정형화하기)
for(반복 실행하기)
free(메모리 사용량 알아보기)
fsck(파일 시스템 검사하기)
fstab(파일 시스템에 대한 고정적인 정보 저장하기)
ftp(파일 전송 프로그램)
fuser(프로세스 ID 출력)
getkeycodes(매핑 테이블 출력하기)
grep(특정 문자(열) 검색하기)
gzexe(실행 파일 압축하기)
gzip(압축하기)
halt(시스템 종료하기)
hash(기억해 두기; index 역할)
head(파일의 앞부분 출력하기)
help(도움말 보여주기)
host(호스트 정보 보기)
history(사용 명령어 목록보기)
hostname(서버 이름 알기)
id(계정 정보 알기)
if(조건문 실행하기)
ifconfig(랜카드에 주소 할당하기)
imolamod(모듈 설치하기)
inetd(인터넷 서비스의 최상위 데몬)
init(실행 단계 정하기)
ispell(철자법 검사하기)
jobs(수행중인 프로세스 알기)
kbd_mode(키보드 모드 출력하기)
kill(프로세스 죽이기)
klogd(커널 로그 데몬)
ldd(공유 라이브러리의 의존성 알기)
less(페이지 단위로 출력하기)
let(정규식 표현하기)
lilo(부팅하기)
ln(링크하기)
locate(패턴에 맞는 파일 찾기)
login(로그인하기)
logger(시스템 로그 기록하기)
logname(사용자 로그인명 보여주기)
logout(로그인 셸 종료하기)
look(특정 단어 검색하기)
losetup(중복 장치 확인하기)
lpd(프린트 데몬)
lpq(현재 프린트 작업 상태 출력하기)
lpr(출력하기)
lprm(대기열에 있는 문서 삭제하기)
ls(디렉토리 내용보기)
lsattr(파일 시스템의 속성 보여주기)
lsdev(하드웨어 장치 출력하기)
lsmod(모듈 정보 출력하기)
mail(메일 관련)
make(컴파일하기)
man(매뉴얼 보기)
mattrib
mbadblocks
mcd
mcopy
mdel
mdeltree
mdir
mesg(메시지를 받을 수 있는지 확인하기)
mformat
minfo
mkdir (디렉토리 만들기)
mke2fs(파일 시스템 생성하기)
mkfs(파일 시스템 만들기)
mknod(특수 파일 만들기)
mkswap(스왑 영역 지정하기)
mlabel
mmd
mmount
mmove
mpartition
mount(장치 연결하기)
more(화면 단위로 출력하기)
mrd
mren
mtoolstest
mtype
mutt(메일 관련)
mv(파일 옮기기)
mzip
netstat(현재 네트웍 상황 보기)
nice(프로세스 우선 순위 변경하기)
od(8진수로 파일 보기)
passwd(암호 입력하기)
pidof(실행중인 프로그램의 프로세스 ID 찾기)
pine(메일 관련)
ping(네트웍 확인하기)
popd(pushd 취소)
ps(프로세스 상태 알기)
pstree(프로세스 상관관계 알기)
pwd(절대경로 보여주기)
quota(디스크 한계량 알기)
rarp(rarp 테이블 관리하기)
rcp(원격 호스트에 파일 복사하기)
rdev(루트, 스왑장치, 램 크기, 비디오 모드를 조사하고 설정하기)
rdate(네트웍으로 시간 설정하기)
reboot(재부팅하기)
rmmod(모듈 지우기)
readonly(읽기 전용으로 표시하기)
renice(프로세스 우선 순위 바꾸기)
reset(터미널 초기화하기)
restore(다시 저장하기)
rlogin(바로 접속하기)
rm(파일 지우기)
rmdir (디렉토리 지우기)
route(라우팅 테이블 추가/삭제하기)
rpm(프로그램 추가/삭제)
rpm2cpio(rpm을 cpio로 변환하기)
rsh(원격으로 명령어 실행하기)
rup(호스트 상태 출력하기)
rusers(호스트에 로그인한 사용자 출력하기)
rwall(호스트 사용자에게 메시지 뿌리기)
script(기록하기)
set(변수값 설정하기)
setup(시스템 관련 설정하기)
showmount(호스트의 마운트 정보 보여주기)
shutdown(전원 끄기)
sleep(잠시 쉬기)
source(스크립트 번역하기)
split(파일 나누기)
ssh(암호화된 원격 로그인하기)
stty(터미널라인 설정 보여주기)
su(계정 바꾸기)
suspend(셸 중단하기)
swapoff (스왑 해제하기)
swapon(스왑 활성화하기)
sync(버퍼 재설정하기)
syslogd(로그인 과정 설정하기)
tac(거꾸로 보기)
tail(문서 끝부분 출력하기)
talk(이야기하기)
tar(파일 묶기)
tcpdchk(tcp wrapper 설정하기)
tcpmatch(네트웍 요청에 대해 예측하기)
tee(표준 입력으로부터 표준 출력 만들기)
telnet(원격접속하기)
test(테스트하기)
times(셸에서의 사용자와 시스템 시간 출력하기)
top(cpu 프로세스 상황 보여주기)
tr(문자열 바꿔주기)
true(종료 코드 리턴하기)
type(유형 보기)
ul(밑줄 처리해서 보여주기)
ulimit(제한하기)
umask(매스크 모드 설정하기)
umount(장치 해제하기)
unalias(별명 제거하기)
uname(시스템 정보 보기)
unexpand(공백 문자를 탭으로 변환하기)
uniq(중복된 문장 찾기)
useradd(사용자 계정 만들기)
userdel(계정 삭제하기)
usermod(사용자 계정정보 수정하기)
unset(설정 변수 해제)
uptime(시스템 부하 평균 보여주기)
users(로그인된 사용자 보여주기)
w(시스템에 접속한 사용자 상황 알아보기)
wait(프로세스 기다리기)
wall(모든 사용자에게 메시지 보내기)
wc(문자, 단어, 라인수 세기)
whatis(명령어의 간단한 설명보기)
while(루프 명령어)
who(사용자 알기)
write(콘솔 상에서 간단한 메시지 보내기)
xcopy(반복적으로 복사하기)
XFree86
ypchfn(NIS에서 사용하는 chfn 명령어)
ypchsh(NIS에서 사용하는 chsh 명령어)
yppasswd(NIS에서 사용하는 passwd 명령어)
zcat(압축 파일 보기)
zcmp(압축 파일 비교하기)
zforce(강제로 gz 만들기)
zgrep(압축 상태에서 grep 실행하기)
zmore(압축 상태에서 more 실행하기)
znew(.Z 파일을 .gz로 다시 압축하기)
0.0.0.30 각자가 사용하는 컴퓨터의 정보를 알고 싶을때
[root ...]#more /proc/cpuinfo 위와 같이 치면 사용자의 컴퓨터 정보를 볼수 있으며, [root ...]#more /proc/meminfo 라고 치면 사용자의 메모리 정보를 볼수 있습니다.0.0.0.31 전체 메일
먼저 보낼 내용을 텍스트로 파일로 만들어야 합니다.어디에서든지 가능하지요! [ root@aromi /root]# vi nea 안녕하세요! 저희 서버에서는 웹서버를 오늘부터 시작합니다. 사용자 여러분의 많은 관심과 이용을 부탁드립니다.만약, 한글을 사용하지 못하면 윈도우95에서 먼저 쓴다음에 ftp를 이용해서 올리면 됩니다.
:wq
[ root@aromi /root]#
[ root@aromi /root]# mail -s “[공지]” `cat /etc/passwd|gawk ?F :’{print$1}’`
[공지]-> 라고 쓴 것은 보낼 메일의 제목입니다. ’cat /etc/passwd|gawk -F : ’{print$1}” ->먼저 cat으로 passwd파일의 첫번째 나오는 내용을 출력하라는 소리입니다. nea라는 텍스트파일을 메일의 내용으로 보내라는 내용입니다.0.0.0.32 디렉토리만 빠르게 검색
ls -al | grep ”^d”0.0.0.33 호스트 네임 바꾸기
/etc/HOSTNAME file은 부팅시 /etc/sysconfig/network file 의 HOSTNAME 부분을 참조하여 저장합니다. 호스트 네임을 바꾸고자 한다면 /etc/sysconfig/network file 의 HOSTNAME 부분을 바꿔주면 됩니다.[ root@linux /root]# vi /etc/sysconfig/network바꾸신후 시스템을 재부팅 하신거나, #/etc/rc.d/init.d/network restart 명령을 내리시면 됩니다.
NETWORKING=yes
HOSTNAME=”linux”
GATEWAY=”"
GATEWAYDEV=”"
FORWARD_IPV4=”yes”
0.0.0.34 틀린명령어 틀린글자만 바꿔서 실행
# ./configure –prefax=/usr/local/apache 앗, 틀렸습니다. prefax가 아니라 prefix인데… 고쳐야지요…간단하게 화살표키로 왔다갔다 하면서 지워지고 바꿔주면 되겠지만 다른 방법이 있습니다. # ^fax^fix^ 라고 하면… -> ./configure –prefix=/usr/local/apache 라고 됩니다..0.0.0.35 유닉스의 현재 버젼과 종류 그리고 라이센스등을 알려주는 명령어
[ root@aromi /root]# uname -a0.0.0.36 열려있는 포트 알아내기
netstat -anp | grep LISTEN0.0.0.37 텔넷 모든 접속자에게 메세지 보내기
wall 내용… Ctrl-D0.0.0.38 lsof는 열려있는 파일을 나타내 주는 옵션
여기에 보안 점검을 위하여, -i 옵션을 사용하면, 현재 열려 있는 포트와 링크되어 있는 서비스 또는 프로그램이 모두 나타나죠. 자신이 열어 놓지 않은 포트가 열려있다던지하면 한번쯤 의심해 봐도 되겠죠?0.0.0.39 사용자가 어디에서 무엇을 하는지 알아내기
w라는 명령어를 사용하시면 된답니다. 이 때, w [-s] 를 붙여주시면 -s 옵션이 긴 정보 대신에 필요한 짧은 정보만 알려 준답니다.0.0.0.40 텔넷 화면 수정
로그인화면: /etc/issue.net 로그인후화면: /etc/motd0.0.0.41 하위 디렉토리 한꺼번에 만들기
mkdir -p music/koreanmusic/ost0.0.0.42 특정디렉토리의 모든 파일 안의 특정 문자열 치환
for i in $*; do
sed “s/paper/PAPER/g” < $i > $i.new
mv -f $i.new $i
done<chihwan.sh>
find ./(chihwan.sh를 포함하지 않는 디렉토리면) -type f -exec chihwan.sh {} \;
0.0.0.43 killall 명령 시뮬레이션 (프로세스명으로 죽이기)
ps aux | grep 프로세스명 | grep -v grep | awk ’{ print $w }’ | xargs kill -9- 모든 프로세스 나열
- 지정한 프로세스만 뽑아냄
- grep 명령이 포함된 라인 제거
- awk로 두번째 필드만 뽑아냄
- xargs에 의해 걸러진 아이디로 죽임
0.0.0.44 find와 grep
find . -name ”H20021115.*” -exec grep -l ’…;……..;110100′ {} \;0.0.0.45 vi 검색, 치환
구호스트 서비스 오늘 날짜에서 분류코드가 110100인 파일 찾기 :%s/./\U&/g모든문자->대문자 g/^$/d
0.0.0.46 파일내의 중복되는 행을 제거 : uniq
입력 파일에서 연속되는 행을 비교하여, 두 번째 이상의 동일한 행들을 제거하고 나머지는 출력파일로 출력 연속되어 표시되지 않으면 동일한 행이 존재할 수 있음.sort 명령을 사용하여 정렬한 후 사용하는 것이 타당 사용법uniq [-cdu] [+|숫자] [입력파일 [출력파일]] -c : 각 행이 연속적으로 나타난 횟수를 행의 시작부분에 표시 -d : 연속적으로 반복되는 행만 출력 -u : 연속적으로 반복되지 않는 행만 출력 +숫자 : 행의 처음 ‘숫자’ 만큼의 문자는 무시 -숫자 : 행의 처음 ‘숫자’ 만큼의 필드는 무시
0.0.0.47 파일의 결합
여러 개의 텍스트 파일을 하나의 파일로 순차적으로 묶는데 사용cat [파일명1] [파일명2] … > [출력파일명]
cat [파일명1] [파일명2] … >& [출력파일명]
cat [파일명1] [파일명2] … >> [출력파일명]
cat [파일명1] [파일명2] … >>& [출력파일명]
cat – [파일명1], [파일명2] .. >> [출력파일명]
cat – [파일명1], [파일명2] .. >>& [출력파일명]% cat > file1
파일명 : file1
^D
% cat > file2
파일명 : file2
^D
% cat file1 file2 > file3
% cat file3
파일명 : file1
파일명 : file2
%
행단위 결합 : paste 여러 파일에 대해여 행간 결합을 수행하거나 하나의 파일에 대해 연속되는 행들을 결합 둘이상의 파일에 대해서 테이블상의 하나의 열과 같이 취급하여 동일한 행번호 끼리 결합
paste [파일명1] [파일명2]..
paste -d리스트 [파일명1] [파일명2] …
paste -s [-d리스트] [파일명]
d : 행간 결합시 행간 구분문자들의 리스트
s : 한파일의 연속되는 행을 결합% cat > paste.data1
홍길동
이순신
김유신
% cat > paste.data2
부산
서울
대구
% paste paste.data1 paste.data2
홍길동 부산
이순신 서울
김유신 대구
% paste -d”\n” paste.data1 paste.data2
홍길동
부산
이순신
서울
김유신
대구
% paste -s -d”::\n” paste.data1
홍길동:이순신:김유신
%
두 파일을 동일한 필드 값에 따라 행 단위 결합 : join
관계형 데이터 베이스에서의 join 연산과 동일 키로 사용할 필드에 대해 정렬된 두 파일의 각 행에 대해 동일한 키 값을 갖는 행들을 결합 입력으로 사용될 두 파일은 키 값에 대해 오름 차순으로 정렬되어 있어야 함 출력 결과는 기본적으로 키 값이 먼저 표시되고, 첫번째 파일에서 키를 제외한 나머지 필드, 두번테 파일에서 키를 제외한 나머지 필드가 표시 필드 구분은 공백, 탭, 개행문자가 기본, 연속적으로 나타날 경우 하나로 취급
% cat > join.data1
98001:서원일:
98002:홍길동:
98003:김유신:
98004:이순신:
98010:이상관:
% cat > join.data2
부산:98001:441
울산:98002:89
대구:98003:99
서울:98004:120
김해:98010:44
% join -j1 1 -j2 2 -t: join.data1 join.data2
98001:서원일::부산:441
98002:홍길동::울산:89
98003:김유신::대구:99
98004:이순신::서울:120
98010:이상관::김해:44
% join -j1 1 -j2 2 -o 1.2 1.1 2.1 -t: join.data1 join.data2
서원일:98001:부산
홍길동:98002:울산
김유신:98003:대구
이순신:98004:서울
이상관:98010:김해
%
0.0.0.48 파일의 암호화 : crypt
파일을 암호화 하여 키를 알지 못하는 사람은 내용을 볼 수 없도록 함 표준 입출력 사용% cat > crypt.data
test test
안녕하십니까?
^D
% crypt <crypt.data > crypt.data1
Enter key: hello
% ls -l crypt*
-rw-r–r– 1 wiseo pro 24 9월 24일 14:47 crypt.data
-rw-r–r– 1 wiseo pro 24 9월 24일 14:48 crypt.data1
% crypt < crypt.data1
Enter key:hello
test test
안녕하십니까?
%
0.0.0.49 개행을 제외한 화면내의 보이지 않는 문자 출력
cat -v http://comp-cse.sch.ac.kr/~pl/lecture/linux/file2.html0.0.0.50 화일내의 포함된 특정문자열로 찾아서 내용만 출력하기
grep -h ’20030305……01′ ./R00*0.0.0.51 특정 파일의 화일명을 비슷하게 여러개 한꺼번에 바꾸기
ls *.* | awk ‘{print “mv”,$1, $1 }’ | sed “s/ \([a-zA-Z0-9]*\)\.\([a-zA-Z0-9]*\)$/ \1\.\_\2/g”
- 현재디렉토리의 모든 *.* 파일을 *._* 형식으로 바꾼다.
- 더 간단하게 ls *.* | sed ”s/\([a-zA-Z0-9]*\)\.\([a-zA-Z0-9]*\)/mv \1\.\2 \1\.\_\2/g”
0.0.0.52 어제 날짜 구하기
$ date -v-1d ”+%Y-%m-%d” [컴퓨터분류]0.0.0.53 원하지 않는 사용자 죽이기
[root@dream /root]# skill -KILL sunny위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다. 그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠? 그럴때는 [root@dream /root]# skill -KILL -v pts/14
이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.
0.0.0.54 UNIX상에서 한글출력이 깨져 나올경우
유닉스상에서 한글을 stdout출력할 경우 가끔 출력되는 문자들이 몽땅 깨져서 나오는 경우가 있다. 이때부터는 프로그램이 종료된 이후에도 쉘 프람프트를 비롯, 쉘에서 입력하는 모든 커맨드가 깨져서 나온다. 이는 ascii code 로 ^n 에 해당하는 문자가 출력될 때 나오는 현상으로 그 이후로는 MSB가 모두 켜지기 때문이다. 문자가 깨져나오는 이후부터 ascii code 로 ^o 에 해당하는 문자를 출력하면 반대로 된다. 쉘 커맨드 상에서라면, # echo ^v^o라고 해야겠지만 커맨드가 깨져나오므로 shell이 해석을 못한다. 따라서, command line에서 ^v^o를 치고 enter 하면 된다
0.0.0.55 현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자 추가하여 바꾸기
/bin/ls A?????.html | sed ‘s/A\(…..\)\.html/\1/g’ | xargs -t -i mv ‘A{}.html’ ‘A0{}.html’
/bin/ls는 ls가 보통 -F로 파일 종류 표시(*, @등)까지 하기 때문에 그걸 막기 위한 것이고 xargs의 -t는 트레이스모드이다.