Article Category

분류 전체보기 (303)
영어 (9)
관심 (11)
프로젝트 (1)
내 폴더 (183)
Ver 1.0 (94)
Windows API (0)
리눅스 (17)
TCP/IP (0)
디지털 공학 (16)
임베디드 (36)
역 어셈블링 (7)
C/C++ (18)
수면과 과학 (0)

 

'Ver 1.0/리눅스'에 해당되는 글 17건

  1. 2008.03.04 Centos 정리
  2. 2008.03.03 Apache 2.2 + Tomcat5.5 연동 1
  3. 2007.08.31 리눅스 파일 상 여러 파일 내 문자열 일괄 치환 방법
  4. 2007.01.09 초 간단 vimrc 설정 파일
  5. 2007.01.05 임베디드 시스템 엔지니어를 위한 리눅스 커널 분석
  6. 2007.01.02 리눅스 프로그래머를 위한 가이드
  7. 2006.12.27 Secure Programming for Linux and Unix HOWTO
  8. 2006.12.26 유닉스 및 리눅스 명령어 팁
  9. 2006.12.19 유닉스 프로그램
  10. 2006.12.19 유닉스 레퍼런스

Centos 정리








Apache 2.2 + Tomcat5.5 연동

한 달이라는 기간 동안 마음먹고 시작한 Apache, Tomcat 연동 세팅을

java, tomcat, jsp, jdk, proxy_ajp 등 기본 개념도 확립되지 않은 상태에서 어렵게 시작 한일로

수 없이 많이 페도라를 재설치 한 끝에 어렵게 성공했다.

나 같은 초보들의 위해 초 간단 세팅 방법을 소개한다.

물론 내가 알아서 했다기 보다는 okjsp, kdlp, 블로거들과 Google 검색을 통해 할 수 있었다.

 

페도라8 설치

페도라8은 따로 설치 방법을 설명하기로 하겠다.

참고로 그 동안 내가 리눅스를 설치 할 때는 풀패키지로 선택해서 설치했다.

다른 리눅스에서 그렇게 해야 Apache, php, mysql 세팅이 편했다.

하지만 페도라8은 그렇게 했다가 더욱 복잡해지는 바람에

패키지 선택으로 했다. 하지만 이것도 의미가 없었다.

그냥 기본 패키지로만 해도 추후 설치가 쉽게 가능했다.

 

기본적인 사항

1. 기본패키지 선택 설치

2. 세팅을 위해 방화벽 사용을 하지 않는다

3. selinux도 사살(서비스를 죽인다)을 한다.

 

1. Apache2.2 설치

yum 으로 설치를 한다

yum -y install httpd\*

페도라 사이트 또는 미러사이트에 있는 httpd 관련 패키지들의 설치가 된다.

참고사항 ) 어떠한 패키지가 있는지 확인 하고 싶다며 yum info httpd\* |more

통해 미리 알고 필요한 거만 yum install '패키지명' 으로 설치해도 된다.

아파치 실행

service httpd start

웹브라우저를 통해 확인 해보다

http://IP/ 

이상이 없다며

Fedora Test Page

이라는 큰 제목의 페이지가 뜰 것이다. 그럼 정상이다.

이 파일은 index 파일이 없을 때 나온다.

index 설정 마지막에 하고 넘어가자.

Apache 서비스를 사살하자.

service httpd stop

그냥 중지하지 않아도 상관은 없다.

 

2. 자바설치(J2SE)

 

이 부분이 가장 난해 했다.

연도도 잘 안 되고 자바 컴파일도 안되고 오류 나며 수정도 힘들었다.

고수들이 본다며 웃기겠지만 그냥 쉽게 가기로 했다.

yum  설치해 버렸다.

yum -y install java\*

이렇게 하고 나니 안 좋은 점이 많기는 하다.

yum install 명령은 java 관련돼서 모든 것이 설치가 되니

불필요한 것도 설치가 된다. 또한 업데이트도 된다.

설치 후 학인을 해본다.

java -version

출력 값이

java version "1.7.0"
IcedTea Runtime Environment (build 1.7.0-b21)
IcedTea Client VM (build 1.7.0-b21, mixed mode)

이렇게 나오며 끝.

모르는 부분이 더 쉽게 끝났다.

 

3.Tomcat5.5 설치

이제 톰캣이다.

다시 yum을 실행하자

 

yum -y install tomcat5\*

 

jakarta 라고 실행해 보다.

 

yum -y install jakarta\*

 

참고로 2008 1월 현재 tomcat 6.x까지 나왔다.

그래서 yum -y install tomcat6\* 으로 해봤지만 되지 않는다.

6.x로 설치를 하고 싶다. tomcat.apache.org에서 직접 다운 받고 소스 컴파일을 하기를..

두개의 파일을 수정해준다.

확인 따라 해본다.

vim /usr/share/tomcat5/conf/workers.properties

 

workers.tomcat_home=/var/tomcat3 -> 주석처리

#workers.tomcat_home=/var/tomcat3

workers.tomcat_home=/user/share/tomcat5 ->새로 입력

 

workers.java_home=/opt/IBMJava2-13 -> 주석처리

#workers.java_home=/opt/IBMJava2-13

workers.java_home=/usr/lib/jvm/java ->새로 입력

 

실제로 경로가 맞는지 학인 해본다.

 

vim /usr/share/tomcat5/bin/relink

 

find /var/lib/tomcat5/webapps -mindepth 1 -maxdepth 2 -type d

이 부분을 확인한다. 이 문장이 틀린 곳이 있으니 확인 후 위처럼 변경한다

 

service tomcat5 start

웹브라우저를 통해 확인 해보다

http://IP:8080/ 

 

이상이 없다며 고양이가 나올 것이다.

 

올 것이 왔다. 이제부터 연동을 시작 한다.

 

4.mod_proxy_ajp 설정

Apache에 있는 mod_proxy_ajp 모듈을 통해 확장자 .jsp 파일은 Apache가 아닌

tomcat이 처리 하도록 한다.

Apache가 이상 없이 설치가 되어있다며 /etc/httpd/conf.d/proxy_ajp.conf 파일이 있을 것이다.

 

순서대로 확인 하고 따라 하자

vim /etc/httpd/conf.d/proxy_ajp.conf

 

#ProxyPass /tomcat/ ajp://localhost:8009/ -> 주석 해제

ProxyPass /tomcat/ ajp://localhost:8009/

 

vim /etc/httpd/conf.d/rewrite.conf -> 새로 생성

RewriteEngine on  #모듈 사용 여부

RewriteCond %{REQUEST_FILENAME} .jsp  # 사용 형식 .jsp

RewriteRule (.*) ajp://localhost:8009$1 [P]  # 처리 방식 [P] ->proxy ajp 사용

위 밑줄 부분은 mod_rewrite 모듈을 사용한다.

/etc/httpd/conf/httpd.conf 에서 모듈로드를 하고 있는지 확인한다.

참고 사항으로 이 부분를 처음에 proxy_ajp.conf 입력을 했었다. 물론 이상이 없었다.

그렇게 해도 상관도 없고 아무런 오류 없다.

하지마 virturehost를 하면서 오류가 발행했다. 메인 사이트만 되고 virturehost 되지 않는 것이다.

그래서 새롭게 파일을 만들어서 각각의 사이트에서 적용하게 했다.

 

5.디렉토리설정

이 부분이 정말 힘들었다. 말 그대로 개고생 했다.

apache 사용하게 되며 보통은 “/var/www/html” 또는 “/home/계정으로 기본 디렉토리는

가져가는 게 버릇이 되다 보니 tomcat5 기본 디렉토리는 사용하고 싶지 않았다.

심볼링크로 변경해도 괜찮겠지만 일단은 virturehost를 할 경우를 대비해 디렉토리 변경을 해봤다.

 

참고사항 - virturehost 설명은 추후에 하겠다.

 

1)server.xml 수정

vim /etc/tomcat5/server.xml

<Host name="localhost" appBase="webapps" ...

이부분의 appBase="webapps"  을 수정한다. 기본폴더이다.

<Host name="localhost" appBase="/var/www/html/" ...

또는

<Host name="localhost" appBase="/var/www/" ...

 

절대 경로를 사용한다.

 

<Context path="" docBase="" reloadable="true"/>

또는

<Context path="" docBase="html" reloadable="true"/>

 

path 는 경로 값을 지정하는 것이다. 아무것도 없으므로 최상위 폴더를 뜻한다.

docBase 은 실제 디렉토리값을 말한다.

위 문장인 host context를 사용하는 것은 기본 디렉토리을 /var/www/html로 사용하고

최상의 폴더를 지정하지 않기에 /var/www/html을 최상의 폴더로 사용한다

밑 문장인 host context를 사용하는 것은 기본 디렉토리을 /var/www/로 사용하고

최상의 폴더를 html로 지정해서 사용한다.

큰 차이점은 없다. 편한 대로 사용하고 프로그램 개발보다는 서버관리를 하는 관점에서

세팅을 할 때는 위 사항으로 세팅 하는 게 편리하다.

참고로 <Context path="" ... 입력하지 않으며

기본값은 var/www/ROOT,var/www/html/ROOT 가 된다.

 

2) httpd.conf 수정

기본 디렉토리가 /var/www/html 이므로 수정 하지 않는다.

directoryindex 값에 test.jsp를 추가 한다.

vim /var/www/html/test.jsp -> 새로 생성

<%@ page contentType="text/html; Charset=EUC-KR" %>

<%

out.println("Hello");

%>

저장 후 Tomcat5, Apache 순으로 restart 한다.

Apache, Tomcat5 순으로 하며 Tomcat5 설정 변경 사항을 Apache는 알지 못한다.

순서를 유의 하기를 바란다.

 

여기까지 해서 이상이 없기를 바라며

가장 기본적인 세팅은 추후에 하겠다.

리눅스 파일 상 여러 파일 내 문자열 일괄 치환 방법

find . -exec perl -pi -e 's/찾을문자열/바꿀문자열/g' {} \; 2>/dev/null

find 뒤 .(콜론) 은 현재 디렉토리를 의미 , 하위 디렉토리까지 리커시브하게 검색하여 치환한다.

매우 유용한 명령어^^;

초 간단 vimrc 설정 파일

임베디드 시스템 엔지니어를 위한 리눅스 커널 분석

남상규

http://ruby.medison.co.kr/~halite
선임 연구원
(주)메디슨
초음파 연구소

halite (at) medison.com

$Date: 2002/05/21 01:10:08 $

이 문서는 리눅스 커널을 임베디드 시스템에 포팅하려는 엔지니어들을 위한 기본 지식 습득을 위해 만들어졌다. 리눅스 커널 자체의 원론적인 것 보다는 임베디드 시스템에 리눅스 커널을 포팅할 때 엔지니어가 리눅스 커널에 쉽게 접근하기 위한 정보나 혹은 방법을 제공하는 것이 목적이다. 그러므로 OS에 대한 이론 보다는 OS가 만들어지는 방법이나 부팅되는 순서 메모리에 적재되고 실행되는 순서 등에 대해 기술하고 더불어 커널을 만들기 위해 필요한 도구들의 사용법에 대해 알아본다.

원문은 http://ruby.medison.co.kr/~halite 에있고 가장 먼저 업데이트될 것이다.

틀린 내용이 있을 수도 있다. 이런 것에 대해선 으로 연락 바란다.

$Revision: 1.13 $

차례
1. 리눅스 커널 컴파일하기
1.1. 리눅스 일반
1.1.1. 왜 리눅스인가?
1.1.2. 리눅스 소스 디렉토리 구조
1.2. LXR
1.3. 소스 코드 얻기
1.4. 소스 코드 풀기
1.5. 컴파일 준비
1.6. 커널 설정
1.7. 커널 컴파일
1.8. 커널 테스트 및 설치
2. Makefile 분석
2.1. 부팅 과정의 이해[1]
2.2. 커널 이미지 파일의 구조
2.2.1. 커널의 부팅
2.2.2. zimage와 bzImage의 차이
2.3. bzimage가 만들어지는 과정 추적-Makefile 분석
2.3.1. $(topDIR)/Makefile
2.3.2. $(topDIR)/arch/i386/Makefile
2.3.3. $(topDIR)/arch/i386/boot/Makefile
2.3.4. $(topDIR)/arch/i386/boot/compressed/Makefile
2.3.5. $(topDIR)/arch/i386/boot/tools/build.c
2.4. bzImage가 만들어지는 과정 추적-Log 분석
2.4.1. make bzImage 순서 정리
2.4.2. Log
2.5. 단계별 자세한 분석
2.5.1. -Ttext 0x0의 의미
2.5.2. 분석
3. 크로스 컴파일러 만들기
3.1. 크로스?
3.2. 툴체인
3.2.1. 배경
3.2.2. 미리 만들어진 툴체인
3.2.3. 툴체인 만들기
4. ARM 리눅스
4.1. ARM 프로세서 MMU(Memory Management Unit)
4.1.1. 개요
4.1.1.1. TLB
4.1.1.2. 메모리 접근
4.1.1.3. 변환 테이블
4.1.1.4. 도메인
4.1.2. 변환 절차
4.1.3. 변환 테이블 베이스
4.1.4. 1레벨 읽기
4.1.5. 1레벨 디스크립터
4.1.6. 섹션 디스크립터와 섹션 변환
4.1.7. 페이지 테이블 디스크립터
4.1.8. 2레벨 디스크립터
4.1.9. 큰 페이지 변환
4.1.10. 작은 페이지 변환
4.1.11. 캐시와 쓰기 버퍼 제어
4.1.12. 접근 권한
4.2. Assabet 보드용 커널 컴파일
4.3. ARM 리눅스 Makefile 분석
4.3.1. $(TOPDIR)/arch/arm/Makefile
4.3.2. $(TOPDIR)/arch/arm/vmlinux.lds
4.3.3. $(TOPDIR)/arch/arm/boot/compressed/vmlinux.lds
4.3.4. Log 분석
4.4. 소스 분석
4.4.1. arch/arm/boot/compressed/head.S
4.4.2. arch/arm/kernel/head-armv.S
5. 리눅스 커널 부팅
5.1. 커널 시작
5.2. lock_kernel()
5.2.1. Lock이 왜 필요하지?
5.2.2. Lock - 기초적 설명
5.2.3. i386, ARM의 스핀락
5.3. setup_arch()
5.4. trap_init()
5.5. init_IRQ()
5.6. sched_init()
5.7. init()
5.8. dmesg 정리
6. 디바이스 드라이버
6.1. 디바이스 번호
6.2. 샘플 디바이스 드라이버
6.3. 모듈 동작의 이해
6.4. 알아야할 것 들
A. SEGA DreamCast Linux
A.1. LinuxSH
A.2. 드림캐스트에서 리눅스 실행해 보기
B. 리눅스에 시스템 콜 만들어 넣기
B.1. 시스템 콜의 흐름
B.2. IDT(Interrupt Descriptor Table)
B.3. 시스템 콜 테이블
B.4. 시스템 콜 추가
C. Inline Assembly
C.1. 인라인 어셈블리 기초
C.1.1. 알아야할 것 들
C.1.2. 어셈블리
C.1.3. Output/Input
C.1.3.1. Constraints
C.1.3.2. Modifier
C.1.3.3. ARM Family Constraints
C.1.3.4. i386 Family Constraints
C.2. 사례 분석
C.2.1. strcpy()
C.2.2. _set_gate()

리눅스 프로그래머를 위한 가이드

출처 : http://www.xevious7.com/linux/lpg_0.html

Secure Programming for Linux and Unix HOWTO

개인적으로 이렇게 메뉴얼 번역 하시는 분들. 귀찮고 귀찮고 또 귀찮을텐데, 대단하다.

http://kldp.org/HOWTO/html/Secure-Programs-HOWTO/index.html

차례
1. 소개
2. 배경
2.1. 유닉스, 리눅스, 오픈 소스/자유 소프트웨어의 역사
2.1.1. 유닉스
2.1.2. 자유 소프트웨어 재단
2.1.3. 리눅스
2.1.4. 오픈 소스/자유 소프트웨어
2.1.5. 리눅스와 유닉스 비교
2.2. 보안 원리
2.3. 프로그래머들은 왜 비보안적인 코드를 작성하는가
2.4. 오픈 소스가 보안에 유리한가?
2.5. 보안적인 프로그램 타입
2.6. 편집증은 미덕이다
2.7. 이 문서를 작성한 이유는?
2.8. 설계와 구현 지침의 출처
2.9. 보안 정보의 다른 출처들
2.10. 문서 관행
3. 리눅스 및 유닉스 보안 특징들의 요약
3.1. 프로세스
3.1.1. 프로세스 속성
3.1.2. POSIX Capabilities
3.1.3. 프로세스 생성과 조작
3.2. 파일
3.2.1. 파일시스템 객체 속성
3.2.2. 생성시 초기값
3.2.3. 접근 제어 속성 변경
3.2.4. 접근 제어 속성 사용
3.2.5. 파일시스템 계층구조
3.3. System V 프로세스간 통신
3.4. 소켓과 네트워크 연결
3.5. 시그널
3.6. 쿼터와 한도
3.7. 동적 링크 라이브러리
3.8. 감사
3.9. PAM
3.10. 유닉스 계열 시스템을 위한 전문적인 보안 확장
4. 모든 입력을 확인해라
4.1. 명령 행
4.2. 환경 변수
4.2.1. 몇몇 환경 변수는 위험하다
4.2.2. 환경 변수 저장 포맷은 위험하다
4.2.3. 해결방안 - 추출 및 제거
4.3. 파일 기술자
4.4. 파일 컨텐츠
4.5. 웹 기반 애플리케이션 입력 (특히 CGI 스크립트)
4.6. 다른 입력
4.7. 인간 언어 (로케일) 선택
4.7.1. 로케일 선택 방법
4.7.2. 로케일 지원 메카니즘
4.7.3. 합법적인 값
4.7.4. 최종 결과
4.8. 문자 인코딩
4.8.1. 문자 인코딩 소개
4.8.2. UTF-8 소개
4.8.3. UTF-8 보안 쟁점
4.8.4. UTF-8 합법적인 값
4.8.5. UTF-8 관련 쟁점
4.9. 입력에서 교차 사이트의 악의있는 컨텐트를 예방해라
4.10. 다시 보내질 수도 있는 HTML/URIs 를 필터링해라
4.10.1. 몇몇 HTML 데이타를 제거 및 금지해라
4.10.2. HTML 데이타 인코딩
4.10.3. HTML 데이타 확인
4.10.4. 하이퍼텍스트 링크 (URIs/URLs) 확인
4.10.5. 다른 HTML 태그
4.10.6. 관련 쟁점
4.11. 비질의를 수행하는 HTTP GET 을 금지해라
4.12. 합당한 입력 시간 및 로드 레벨을 제한해라
5. 버퍼오버플로우 피하기
5.1. C/C++ 에서의 위험
5.2. C/C++ 에서의 라이브러리 솔루션
5.2.1. 표준 C 라이브러리 솔루션
5.2.2. 정적 및 동적 할당 버퍼
5.2.3. strlcpy and strlcat
5.2.4. libmib
5.2.5. C++ std::string class
5.2.6. Libsafe
5.2.7. 다른 라이브러리
5.3. C/C++ 에서의 컴파일 솔루션
5.4. 다른 언어
6. 프로그램 내부 구조화 및 접근 방법
6.1. 보안적인 프로그램에 대해 훌륭한 소프트웨어 엔지니어링 원리를 따르라
6.2. 인터페이스를 안전하게 해라
6.3. 권한을 최소화해라
6.3.1. 허가되는 권한을 최소화해라
6.3.2. 권한이 사용될 수 있는 시간을 최소화해라
6.3.3. 권한이 필요한 시간을 최소화해라
6.3.4. 권한이 허가된 모듈을 최소화해라
6.3.5. 권한을 제한하기 위해 FSUID 사용을 고려해라
6.3.6. 사용할 수 있는 파일을 최소화하기 위해 Chroot 사용을 고려해라
6.3.7. 접근할 수 있는 데이타의 최소화를 고려해라
6.3.8. 사용가능한 자원의 최소화를 고려해라
6.4. Setuid/Setgid 스크립트 생성을 피해라
6.5. 안전하게 설정하고 안전한 디폴트를 사용해라
6.6. 안전하게 초기화값을 적재해라
6.7. 고장 안전
6.8. 경쟁 상태를 피해라
6.8.1. 시퀀싱 (비원자적) 문제
6.8.1.1. 파일시스템에서의 원자적 동작
6.8.1.2. 임시 파일
6.8.2. 로킹
6.8.2.1. 로크로서 파일 사용
6.8.2.2. 로킹에 대한 다른 접근 방법
6.9. 단지 신뢰할 수 있는 체널만 신뢰해라
6.10. 신뢰된 경로를 설정해라
6.11. 내부의 일관성을 검사하는 코드를 사용해라
6.12. 스스로 자원을 제한해라
6.13. 교차 사이트의 악의있는 컨텐트를 예방해라
6.13.1. 문제 설명
6.13.2. 교차 사이트의 악의있는 컨텐트에 대한 해결방안
6.13.2.1. 특별 문자 식별
6.13.2.2. 필터링
6.13.2.3. 인코딩
6.14. 데이타 타입에 주의해라
7. 다른 자원을 주의깊게 호출해라
7.1. 안전한 라이브러리 루틴만 호출해라
7.2. 호출을 합당한 값으로 제한해라
7.3. 프로그래머가 사용하도록 의도된 인터페이스만 호출해라
7.4. 모슨 시스템 호출 반환을 검사해라
7.5. vfork(2) 사용을 피해라
7.6. 내장된 컨텐트를 검색할 때 웹버그에 대처해라
7.7. 기밀을 다루는 정보를 숨겨라
8. 정보를 신중하게 되돌려줘라
8.1. 피드백을 최소화해라
8.2. 주석을 포함하지 마라
8.3. 완전한/무반응의 출력을 다뤄라
8.4. 데이타 포맷팅을 제어해라 (문자열 포맷)
8.5. 출력에서 문자 인코딩을 제어해라
8.6. 포함/설정 파일 접근을 예방해라
9. 언어에 특정적인 쟁점
9.1. C/C++
9.2.
9.3. 파이썬
9.4. 쉘 스크립팅 언어 (sh 과 csh Deritivatives)
9.5. Ada
9.6. 자바
9.7. TCL
9.8. PHP
10. 특별 주제
10.1. 패스워드
10.2. 웹에서 인증
10.2.1. 웹에서 인증: 로그인
10.2.2. 웹에서 인증: 일련의 행동
10.2.3. 웹에서 인증: 로그아웃
10.3. 난수
10.4. 사용자가 기억하는 비밀 (패스워드 및 키) 을 특히 보호해라
10.5. 암호화 알고리듬 및 프로토콜
10.5.1. 암호학적 프로토콜
10.5.2. 대칭키 암호화 알고리듬
10.5.3. 공개키 알고리듬
10.5.4. 암호학적 해시 알고리듬
10.5.5. 무결성 검사
10.5.6. 다른 암호학적 쟁점
10.6. PAM 사용
10.7. 도구
10.8. Windows CE
10.9. 감사 레코드 작성
10.10. 기타
11. 결론
12. 문헌 목록
A. 책 발표 기록
B. 감사의 글
C. 문서의 라이센스
D. GNU Free Documentation License
E. 승인
F. 저자
그림 목록
1-1. Abstract View of a Program

유닉스 및 리눅스 명령어 팁

서브 디렉토리까지 파일안의 문자열 모두 검색
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 -n
0.0.0.6 가장 큰 파일을 찾으려면
ls -lR | sort +4n
0.0.0.7 현재 디렉토리의 크기만을 파악할때
[root@dev2 local]# du -c -h --max-depth=0 *
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 +5n
0.0.0.10 FTP로 들어온 사용자 확인하기
ftpwho,ftpcount
0.0.0.11 원하지 않는 사용자 죽이기
skill -KILL sunny
위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다. 그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠? 그럴때는

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 0.0.0.15 ping 무시하기
echo 1 0.0.0.16 LILO 다시 살리기
boot : vmlinuz root=/dev/hda6
0.0.0.17 특정 사용자 ftp 접근 막기
/etc/ftpusers 파일에 로그인 네임을 추가하면 됩니다.

0.0.0.18 X 윈도우에서 TV보기
리눅스에서 TV보기 위해서는 드라이버 파일과 TV를 보는 프로그램이 필요합니다. 이 글에서는 미지 리눅스 OS에 탑재된 bttv 칩셋을 사용하는 TV 카드를 기준으로 설명합 니다. 만일 커널을 새로 컴파일 하실 분은 반드시 Character devices -

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.0
export 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_photo
0.0.0.27 ^M 문자 없애기
a = 1^M
def vartest(a):^M
a = a + 1^M
return a^M
a = vartest(a)^M
print a^M
Unix류 기계에서는 그냥 ^J 하나만을 개행문자로 사용하는데 PC에서는 MJ 이렇게 두 제어문자가 연속으로 사용되어야 개행문자로 받아들이죠. (그래서 PC쪽에서 만들어진 txt문서를 유닉스 기계로 불러와 vi 등을 실행하면 줄 끝마다 보기싫은 ^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 안녕하세요! 저희 서버에서는 웹서버를 오늘부터 시작합니다. 사용자 여러분의 많은 관심과 이용을 부탁드립니다.

:wq [root@aromi /root]#

만약, 한글을 사용하지 못하면 윈도우95에서 먼저 쓴다음에 ftp를 이용해서 올리면 됩니다. [root@aromi /root]# mail -s "[공지]" `cat /etc/passwd|gawk ?F :'{print$1}'`

[공지]-

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
NETWORKING=yes
HOSTNAME="linux"
GATEWAY=""
GATEWAYDEV=""
FORWARD_IPV4="yes"
바꾸신후 시스템을 재부팅 하신거나, #/etc/rc.d/init.d/network restart 명령을 내리시면 됩니다.

0.0.0.34 틀린명령어 틀린글자만 바꿔서 실행
# ./configure --prefax=/usr/local/apache 앗, 틀렸습니다. prefax가 아니라 prefix인데... 고쳐야지요...간단하게 화살표키로 왔다갔다 하면서 지워지고 바꿔주면 되겠지만 다른 방법이 있습니다. # ^fax^fix^ 라고 하면... -

0.0.0.35 유닉스의 현재 버젼과 종류 그리고 라이센스등을 알려주는 명령어
[root@aromi /root]# uname -a
0.0.0.36 열려있는 포트 알아내기
netstat -anp | grep LISTEN
0.0.0.37 텔넷 모든 접속자에게 메세지 보내기
wall 내용... Ctrl-D
0.0.0.38 lsof는 열려있는 파일을 나타내 주는 옵션
여기에 보안 점검을 위하여, -i 옵션을 사용하면, 현재 열려 있는 포트와 링크되어 있는 서비스 또는 프로그램이 모두 나타나죠. 자신이 열어 놓지 않은 포트가 열려있다던지하면 한번쯤 의심해 봐도 되겠죠?

0.0.0.39 사용자가 어디에서 무엇을 하는지 알아내기
w라는 명령어를 사용하시면 된답니다. 이 때, w [-s] 를 붙여주시면 -s 옵션이 긴 정보 대신에 필요한 짧은 정보만 알려 준답니다.

0.0.0.40 텔넷 화면 수정
로그인화면: /etc/issue.net 로그인후화면: /etc/motd

0.0.0.41 하위 디렉토리 한꺼번에 만들기
mkdir -p music/koreanmusic/ost
0.0.0.42 특정디렉토리의 모든 파일 안의 특정 문자열 치환
for i in $*; do
sed "s//opt/arm//opt/arm-linux/g" < $i > $i.new
mv -f $i.new $i
done

(chihwan.sh를 포함하지 않는 디렉토리면)
find ./ -type f -exec 'chihwan.sh' {} ; s
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 모든문자-

0.0.0.46 파일내의 중복되는 행을 제거 : uniq
입력 파일에서 연속되는 행을 비교하여, 두 번째 이상의 동일한 행들을 제거하고 나머지는 출력파일로 출력 연속되어 표시되지 않으면 동일한 행이 존재할 수 있음. sort 명령을 사용하여 정렬한 후 사용하는 것이 타당 사용법uniq [-cdu] [+|숫자] [입력파일 [출력파일]] -c : 각 행이 연속적으로 나타난 횟수를 행의 시작부분에 표시 -d : 연속적으로 반복되는 행만 출력 -u : 연속적으로 반복되지 않는 행만 출력 +숫자 : 행의 처음 '숫자' 만큼의 문자는 무시 -숫자 : 행의 처음 '숫자' 만큼의 필드는 무시

0.0.0.47 파일의 결합
여러 개의 텍스트 파일을 하나의 파일로 순차적으로 묶는데 사용 cat [파일명1] [파일명2] ...

% cat

행단위 결합 : paste 여러 파일에 대해여 행간 결합을 수행하거나 하나의 파일에 대해 연속되는 행들을 결합 둘이상의 파일에 대해서 테이블상의 하나의 열과 같이 취급하여 동일한 행번호 끼리 결합

paste [파일명1] [파일명2].. paste -d리스트 [파일명1] [파일명2] ... paste -s [-d리스트] [파일명] d : 행간 결합시 행간 구분문자들의 리스트 s : 한파일의 연속되는 행을 결합

% cat

두 파일을 동일한 필드 값에 따라 행 단위 결합 : join

관계형 데이터 베이스에서의 join 연산과 동일 키로 사용할 필드에 대해 정렬된 두 파일의 각 행에 대해 동일한 키 값을 갖는 행들을 결합 입력으로 사용될 두 파일은 키 값에 대해 오름 차순으로 정렬되어 있어야 함 출력 결과는 기본적으로 키 값이 먼저 표시되고, 첫번째 파일에서 키를 제외한 나머지 필드, 두번테 파일에서 키를 제외한 나머지 필드가 표시 필드 구분은 공백, 탭, 개행문자가 기본, 연속적으로 나타날 경우 하나로 취급

% cat 0.0.0.48 파일의 암호화 : crypt
파일을 암호화 하여 키를 알지 못하는 사람은 내용을 볼 수 없도록 함 표준 입출력 사용

% cat < crypt.data1
Enter key:hello
test test
안녕하십니까?
%
0.0.0.49 개행을 제외한 화면내의 보이지 않는 문자 출력
cat -v http://comp-cse.sch.ac.kr/~pl/lecture/linux/file2.html
0.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 현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자
추가하여 바꾸기

| 2005/03/12 00:30

출처 : Tong - chohi22님의 기본통

유닉스 프로그램

유닉스 레퍼런스


ManPage 검색 사이트 : http://man.kldp.org/wiki/FrontPage

현재 한글로 번역하는 작업을 하고 있음.
prev 1 2 next