finerss's world!


얼마 전 우연히 암호화폐 밋업을 가게 되었는데 그곳에서 곧 공개 ICO를 앞두고 있는 Celsius에 대해 알게 되었습니다. 

CEO 인 Alex로부터 직접 자신들이 진행하고 있는 프로젝트에 대해 설명을 들을 수 있는 좋은 기회였던 것 같습니다.

Celsius의 기술적인 내용은 한 번에 이해하기에는 어렵기도 했고 동시통역사로부터 번역된 말들을 들어야 해서 정확하게 모든 것을 파악할 수 없었습니다.

그래서 내용 정리도 하고 공부도 할 겸 Celsius에 대해 포스팅해 봅니다.





1. WHO IS Alex Mashinsky




Alex Mashinsky는 2000년 이래로 Arbinet 등 뉴욕시의 10 대 벤처 기업 중 2 곳을 설립할 정도로 수완이 좋은 사업가이며 

특히 우리가 흔히 사용하는 휴대폰의 대표 기능인 Voip(인터넷을 기반으로 하는 음성 통화) 기술의 특허를 포함한 30개 이상의 특허권을 가지고 있는 미국의 대표적인 IT 기업가입니다. 


2013년부터는 현재 Huobi 에도 상장되어 있는 시린랩스(SRN)와 마이크로 머니, 타이 네트워크를 포함한 여러 블록체인 회사들의 고문으로 일하고 있으며 현재는 Celsius Network Team의 CEO를 맡고 있습니다.





2. Features of Celsius

The world needs banking, 

but it does not need banks.

- Bill Gates -




“사람들은 앞으로도 은행 업무를 봐야 하지만, 꼭 은행이 필요한 것은 아니다" 마이크로소프트의 창업자인 빌 게이츠는 20년 전쯤부터 미래에는 은행이 사라질 것이라며 이렇게 예언해왔습니다. 

Celsius CEO인 Alex 역시 이 말에 동의하며 더 이상 전통적인 금융 기관들은 전 세계 사람들에 대한 신용 흐름을 통제해서는 안 된다고 말합니다. 

미래에는 사용자들의 금융거래가 블록체인에 의해 P2P 분산된 환경에서 나타날 것이라고 믿으며 Celsius Network가 새로운 국제적인 P2P금융 플랫폼이 될 것을 확신합니다.



- The Celsius wallet -


현재 암호화폐는 대부분의 거래가 거래소에서 이루어져 있고 그로인해 몇가지 문제가 있습니다.

예를 들면 전 세계적으로 거의 500억달러 이상의 암호화폐 시장에서 자산을 안전하게 보관하면서 이자를 받을 곳이 존재하지 않으며 또한 사람들이 자신들의 암호화폐에 대해 빌려 주고 소비할 수 있는 방법이 거의 없습니다. 

Celsius 프로젝트는 이러한 문제들을 해결하기 위해 시작 되었고 재무 전문가들이 헤지(hedge) 할 수 있는 플랫폼인 The Celsius wallet 을 개발하였습니다.
2018년 Q1 beta 출시예정인 Celsius mobile wallet 앱을 통하여 사용자들은 소유하고 있는 암호화폐 자산에 대한 수익을 얻을 수 있습니다.
Celsius mobile wallet 에서 암호화폐가 필요한 회원들은 수수료 및 이자를 대가로 암호화폐를 빌리게 되고 그에 대한 실제 이익은 온전히 지갑 소유자가 Celsius로 받게 되는 구조입니다. 이때 Celsius wallet은 어떠한 이윤도 추구하지 않으며 순수하게 중계 역활만 하게 됩니다.







회원들은 Celsius wallet 넣은 암호화폐를 즉시 차용할 수 있으며 회원 지갑에서 대여하는 암호화폐에 대해 celsius 이자(Degrees)가 누적되고 회원들은 거래당 연간 9%의 이자를 받게 될 것이라고 합니다. 


또한 회원들은 Celsius wallet에 들어 있는 암호화폐를 담보로 사용하여 암호화폐를 대출하고 그것으로 달러로 바꿀 수도 있습니다. 

즉 현금이 필요한 사람은 누구나 그들의 암호화폐 재산을 팔지 않고도 Celsius Network에서 쉽게 돈을 빌릴 수 있도록 하는 것입니다.


사용하지 않는 암호화폐를 다른 회원에게 신용으로 빌려 주는 사람들이 늘어나게 되면서 Celsius Network 사회는 계속해서 성장할 것입니다. 

암호화폐 자산 소유자들의 대출이 늘어 날 수록 받을 수 있는 이자는 적어지게 되며, 대출자들은 더 적은 이자로 암호화폐를 대출 받을 수 있습니다.

결국 더 많은 사람들이 Celsius Network 참여할수록, 모두가 더 많은 혜택을 받게 됩니다.






이러한 사용자들의 암호화폐 자산을 맡기고 운용하는 플랫폼이기 때문에 보안적인 기술이 특히 중요한데요.

Celsius는 위와 같은 플랫폼 보안 기술이 적용되었다고 합니다.




3. Roadmap of Celsius





Celsius는 Q1 안으로 mobile wallet 베타 출시할 예정이며 crowdsale(ICO)를 앞두고 있습니다.

또한 Q2 내로 Celsius wallet 에서 실제로 대출 서비스를 예정하고 있으며 내년 Q1에 정식 출시를 목표로 하고 있다고 합니다.






이렇게 Celsius에 대해서 알아보았습니다. 
암호화폐 시장은 전체 500억 달러가 넘었으며 3천만 개 이상의 지갑이 생성되어 있습니다. 
또한 1400개 이상의 암호화폐 종류가 있고 매일 몇 개의 암호화폐가 새로 생겨나고 있습니다. 

때문에 Celsius가 이런 엄청난 기회의 시장에서 p2p 금융 플랫폼을 선점하게 된다면 그 가치는 매우 높을 것으로 생각됩니다. 
또한 밋업에서 들었던 내용으로는 곧 대형 은행사와도 협업 발표를 예정하고 있다고 하니 투자하는데 참고하시면 좋을 것 같습니다.



 암호화폐 투자를 강요하는 글이 아니며, 투자는 반드시 각자 본인의 판단에 의해 진행하시길 바랍니다.  암호화폐 투자는 항상 불확실성이 존재하며, 이를 잘못 판단할 경우 큰 손실을 불러올 수 있습니다.





JAVA Level Up

공부/JAVA2015. 8. 20. 16:29

★키워드 : 클래스명이나 변수명으로 사용할 수 있는 것, 없는것 규칙(java 기본문법)

 

Q) 다음 중 변수 선언 문법에 맞는 것을 모두 고르시오?
a. 2variable
b. variable2
c. _whatabariable
d. _3_
e. $anothervar
f. #myvar

 

A) b,c,d,e


[설명]
- 대소문자가 구분되며, 길이에 제한이 없다.
- 예약어를 사용해서는 안 된다.
- 숫자로 시작해서는 안된다.
- 특수문자는 '_' 와 '$' 만 사용할 수 있다.


Q) 다음 중 변수 선언 문법에 틀린 것을 모두 고르시오?
a. volatile
b. _this
c. const
d. Void
e. integer
f. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

 

A) a,c


[설명]
Volatile(객체내에 필드를 동기적 목적으로 사용할것을 알리는 목적), const(상수 선언)는 예약어다

 

[참고] 자바 키워드

abstract   continue   for   new   switch
assert  default  goto  package  synchronized
boolean   do   if   private   this
break   double   implements   protected throw
byte   else   import   public   throws
case   enum   instanceof   return   transient
catch   extends   int   short try
cha  r final   interface   static   void
class   finally   long   strictfp   volatile
const   float   native   super   while

 

 

Q) 다음 중 변수 선언 문법에 틀린 것은?(1개)
a. Synchronized
b. variable2
c. _whatabariable
d. synchronize
e. True
f. goto

 

A) f


[설명]
goto는 java에서 사용할 수 없지만 예약어로 되어있다.

 

 

★키워드 : java Primitive Data Type 에대한 이해

 

Q) 자바 데이터타입은 크게 프리미티브 타입(Primitive Type)과 레퍼런스 타입(Reference Type)으로 구분됩니다. 다음 중 프리미티브 타입이 아닌것은?
1. String
2. byte
3. short
4. boolean

 

A) 1


[설명]
자바의 기본 Primitive Type 8가지를 제외하면 모두 객체다.
기본형인 Primitive Type에는 8가지가 있습니다.
- byte, boolean, short, char, int, float, long, double

 

[참고] 자바 데이터 타입

자바 데이터 타입의 분류 체계도

자바에서 variable의 데이터 타입에 primitive 와 reference type이 존재 한다.
primitive type은 언어에서 사전 정의 되어 있는 데이터 타입이다.
반면 reference type은 primitive type의 wrapper객체로서 object를 상속한 객체형으로 나타난다.
프로그래밍시 둘의 차이점은 reference타입의 Integer나 Double등은 오브젝트로서 가공이 용이 한 반면 단순 대입시에 좀 불편하다.
primitive 타입의 경우 단순 연산에는 좋으나 복잡한 데이터 가공시에 어려움이 있다는 차이점이 있다.

 

<프리미티브 타입의 데이터 표현을 위해 사용되는 메모리>
구분 데이터 타입 사용 메모리 크기
정수 타입 byte 1바이트
short 2바이트
int 4바이트
long 8바이트
char 2바이트
부동소수점 타입 float 4바이트
double 8바이트
불리언 타입 boolean * 정해져 있지 않음

*프리미티브 타입의 데이터 표현을 위해 사용되는 메모리와 같이 데이터 타입마다 사용하는 메모리의 크기는 정해져 있다.

 

 

 

이클립스 유용한 단축키 컬렉션.. 정리하니 너무 조아~

소스단축키
1. 클래스나 메소드,멤버를 상세하게 검색하고자 할때 : ctrl + 마우스커서(F3)
2. 해당클래스의 Hierarchy를 보려고 할때 : 클래스명 선택하고 F4

이동 단축키
1. 열린 파일 모두 닫기 : CTRL + SHIFT + F4
2. 한줄 삭제 : CTRL + D
3. 현재 줄 이동 : ALT + UP or DOWN
4. Editor 로 커서 이동(컴파일 중 에러등으로 포커스가 다른데로 갔을 때) : F12
5. 특정 줄번호로 가기 : CTRL + L
6. 다음 문제(오류부분으로 가기) : CTRL + .(점)
7. 이전 문제(오류부분으로 가기) : CTRL + ,(콤마)
8. 다음(이전) 편집창으로 이동(윈도우에서의 Ctrl+Tab 과 같은 기능) : CTRL + (Shift) + F6
9. 마지막 편집 위치로 가기(다른 이동 단축키를 써서 특정 지역으로 왔을 때 바로 전의 위치로 가기) : CTRL + Q
10. 해당 구문의 참조 부분 검색(함수나 변수위에 커서가 있을 때 이 함수나 변수를 호출,사용하는 곳 검색) : CTRL + Shift + G

찾기
1. 찾기 : Ctrl+F
2. 다음찾기 : Ctrl+K
3. 이전찾기 : Ctrl+Shift|K
4. Incremental Search : Ctrl+J (next:DownArrow, prev:UpArrow)
5. Selection Word Search : Ctrl+K, Ctrl+Shift+K(Reverse)
6. 자바 찾기(자바의 클래스, 타입, 함수 이름등으로 찾을 수 있다. 문자열을 찾으려면 File Search 탭을 이용한다.) : Ctrl+H

디버깅 단축키
1. 브레이크 포인트(현 커서의 위치에 브레이크 포인터 설정/해제) : CTRL + Shift + B
2. 디버깅 시작 F11
3. 디버깅 계속 F8
4. Step Over(한줄씩 실행) F6
5. Step Into(한줄씩 실행하되 함수일 경우 그 함수 내부로 들어감) F5
6. Step out(현재 함수를 빠져나온다) F7
7. Run to Line(현재 라인까지 실행) CTRL + R

기타 단축키
1. 저장(JDT) 및 컴파일 CTRL + S
2. 열려진 모든 파일 저장(JDT) CTRL + Shift + S
3. 빠른 오류 수정(-Quick Fix) CTRL + 1 Eclipse 가 찾을 수 있는 간단한 문법적인 오류를 해결할 방법을 알려줍니다
4. 코드에 필요한 패키지 자동 import CTRL + Shift + O 현재 코드를 위해 import 해야할 패키지를 자동으로 import 코드를 넣어줍니다
5. 주석 처리(제거) CTRL + /(\) 현재 줄 혹은 선택된 구역의 주석으로 만들거나, 주석을 제거
6. 코드 형식 맞추기 Ctrl+Shift+F

7. 선택 영역 주석처리 Ctrl+/
8. 선택 영역 주석풀기 Ctrl+/

==============================================================================

Ctrl+Shift+F 코드 정리하기



이는 Eclipse에서 설정된 Code Formatter의 설정
프로젝트에서 개발된 모든 코드에 같은 코딩 규칙을 적용하고 싶다면..
결정된 Coding Convention에 따라 Code Formatter의 설정을 바꾼 다음,
[공통 템플릿(?)]
XML 파일로 Export하고, Import 시켜 적용

Ctrl+Shift+O

사용하지 않는 모든 import 문이 정리

한가지 유용한 기능은 같은 패키지 내에서 여러 개의 클래스를 import할 경우
예를 들어 한 패키지 내에서 4개 이상의 클래스를 import 한다면,
그것을 *로 합쳐서 표시하도록 하고 싶을 때...
window - preference 로 가서 java - code style - organize import에서
Number of imports needs for .*의 수를 4로 해놓으면,
같은 패키지에서 4개이상의 클래스가 임포트되면 *로 합쳐서 표시
(Apply 버튼 바로 위에 그 항목이 있습니다.)

전체 주석 처리
주석처리할 영역을 선택 한 다음 Ctrl+/
주석 해제 Ctrl+/

Ctrl+F6 많이 열려진 파일 쉽게 이동하기
해당 파일들 사이를 열려진 윈도우를 [ Alt+Tab ] 을 이용해서 이동하는 것 같은 기능

Ctrl+L 해당 라인으로 이동

줄번호가 항상 표시
window - preference -> Java - Editor -> "Show line numbers"를 체크

Javadoc 문서생성
Project 메뉴의 [ Generate Javadoc... ] 기능을 실행

전체 프로젝트를 백업
File 메뉴의 Export 기능을 실행
선택요소 중에서 ZIP 파일을 선택
일반적으로 자동 생성되는 JavaDoc 문서나 Classes 파일들은 백업하지 않음.
적당한 백업 파일 이름과 위치를 결정하고 Finish 버튼을 누르면 백업이 완료.

이클립스에서 유용한 단축키
Ctrl + e : 한줄지움

Ctrl + w : 메뉴보여줌

Ctrl + space : 클래스등 코드 도움

Ctrl + / : 한줄 주석 반대는 Ctrl + \

Ctrl + , : 찾기나, TASK항목 이동

Ctrl + . : 이동

Ctrl + F6 : Editor 선택

Ctrl + F7 : View 선택

Ctrl + F8 : Perspectieve 선택

Ctrl + F11 : 디버깅

Ctrl + 1 : QuickFix 실행

Ctrl + Shift + b : 브레이크 포인트

Ctrl + Shift + e : 현재 캐럿에서 끝까지 삭제

Ctrl + Shift + f : 코드 포맷팅

Ctrl + Shift + m : 자동 임포트

Ctrl + Shift + o : 임포트 자동 정리

Ctrl + Shift + space : 입력 파라미터 정보 보여줌

출처 : http://blog.naver.com/simz/



=========================================================================================

출처 : http://lhs0806.wowdns.com/tt/lhs/200
===== 실행 =====
1. Ctrl + F11 : 바로 전에 실행했던 클래스 실행
===== 소스 네비게이션 =====
1. Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때
2. Alt + ->, Alt + <- : 이후, 이전
3. Ctrl + o : 해당 소스의 메소드 리스트를 확인하려 할때
4. F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.
===== 문자열 찾기 =====
1. Ctrl + k : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.
2. Ctrl + Shift + k : 역으로 찾고자 하는 문자열을 찾아감.
3. Ctrl + j : 입력하면서 찾을 수 있음.
4. Ctrl + Shift + j : 입력하면서 거꾸로 찾아갈 수 있음.
5. Ctrl + f : 기본적으로 찾기
===== 소스 편집 =====
1. Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다.
2. F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.
3. Ctrl + l : 원하는 소스 라인으로 이동
로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.
4. Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.
5. 한줄 삭제 CTRL + D
6. 파일 닫기 : CTRL+W
7. 들여쓰기 자동 수정. (3.0 NEW) : CTRL+I
8. 블록 주석(/*..*/) 추가.(3.0 NEW): CTRL+SHIFT+/
8.1 Ctrl + / 해주면 여러줄이 한꺼번에 주석처리됨. 주석 해제하려면 반대로 하면 됨.
9. 위(아래)줄과 바꾸기 : ALT+UP(DOWN)
10. 블록 선택하기. : ALT+SHIFT+방향키
11. 메소드의 파라메터 목록 보기. : CTRL+SHIFT+SPACE
12. 자동으로 import 하기 : CTRL+SHIFT+O
13. 열린 파일 모두 닫기 : CTRL + SHIFT + F4
14. 블록 주석 제거 : CTRL+SHIFT+
15. 전체화면 토글 : CTRL+M
16. 한줄(블럭) 복사 : Ctrl + Alt + 위(아래)
17. 다음 annotation(에러, 워닝, 북마크 가능)으로 점프 : Ctrl + , or .
18. 퀵 픽스 : Ctrl + 1
19. 메소드 정의부로 이동 : F3
20. 하이어라키 ㅤㅍㅏㅍ업 창 띄우기(인터페이스 구현 클래스간 이동시 편리) : Ctrl + T
21. 메소드나 필드 이동하기 CTRL + O
22. ULTRAEDIT나 EDITPLUS 의 CTRL+TAB 과 같은 기능. : CTRL+F6
===== 템플릿 사용 =====
1. sysout 입력한 후 Ctrl + Space 하면 System.out.println(); 으로 바뀐다.
2. try 입력한 후 Ctrl + Space 하면 try-catch 문이 완성된다.
3. for 입력한 후 Ctrl + Space 하면 여러가지 for 문을 완성할 수 있다.
4. 템플릿을 수정하거나 추가하려면 환경설정/자바/편집기/템플리트 에서 할 수 있다.
===== 메소드 쉽게 생성하기 =====
1. 클래스의 멤버를 일단 먼저 생성한다.
2. override 메소드를 구현하려면 : 소스->메소드대체/구현 에서 해당 메소드를 체크한다.
3. 기타 클래스의 멤버가 클래스의 오브젝트라면 : 소스->위임메소드 생성에서 메소드를 선택한다.
===== organize import =====
1. 자바파일을 여러개 선택한 후 소스 -> 가져오기 체계화 해주면 모두 적용된다.
===== 소스 코드 형식 및 공통 주석 설정 =====
1. 환경설정 -> 자바 -> 코드 스타일 -> 코드 포멧터 -> 가져오기 -> 프로파일.xml 을 불러다가 쓰면 된다.
2. 또한 다수의 자바파일에 프로파일을 적용하려면 패키지 탐색기에서 패키지를 선택한 후 소스 -> 형식화를 선택하면 된다.
3. 환경설정 -> 자바 -> 코드 스타일 -> 코드 템플리트 -> 가져오기 -> 템플리트.xml 을 불러다가 쓰면 된다.
===== 에디터 변환 =====
1. 에디터가 여러 파일을 열어서 작업중일때 Ctrl + F6 키를 누르면 여러파일명이 나오고 F6키를 계속 누르면 아래로
2. Ctrl + Shift + F6 키를 누르면 위로 커서가 움직인다.
3. Ctrl + F7 : 뷰간 전환
4. Ctrl + F8 : 퍼스펙티브간 전환
5. F12 : 에디터로 포커스 위치

'공부 > 기타' 카테고리의 다른 글

토드 단축키  (0) 2012.01.04
Crontab 설정  (0) 2011.12.15
L4 로드밸런싱  (3) 2011.11.08
조인쿼리 정리  (0) 2011.06.13
OpenAPI OAuth  (0) 2011.06.13

토드 단축키

공부/기타2012. 1. 4. 09:34

--TOAD 메뉴얼--

toad 사용법
SQL EDITOR상에서의 편리한 단축키

ESC: 열린 윈도우 닫기
F1: 모든 단축키를 보여준다.
F2: FULL SCREEN
F4: Table, View, Proc, Funct, Package를 DESC(테이블명에 커서를 둔 상태에서 해야함)
F6: SQL Editor와 결과창간의 전환
F7: 화면을 모두 CLEAR
F8: 실행했던 SQL들의 HISTORY
F9: 모든 쿼리 실행(Ctrl+Enter는 현재 쿼리만 실행)
Ctrl+F9: 실제 쿼리를 실행하지 않고 validate함
Ctrl+. : table Completion (매칭되는 테이블목록 출력)
Ctrl+T : Columns Dropdown (해당테이블의 컬럼목록 표시)
Alt+Up : History Up (리눅스 bash의 UP키와 같다.)
Alt+Down: History Down (리눅스 bash의 DOWN키와 같다.)
Ctrl+Tab: MDI Child윈도간 전환

그냥 'desc 테이블명' 을 치면, 팝업윈도로 해당 테이블의 컬럼목록윈도가 표시된다.
이때, 해당 컬럼을 double-click하면 SQL Editor로 반영된다.

"테이블명."까지 입력하고 좀 있으면, 해당 테이블의 컬럼목록이 표시된다.
마치 프로그래밍툴에서 클래스내 멤버들의 목록을 표시하듯이..
Ctrl+T는 출력된 목록을 취소했을 경우, 다시 불러낼때 쓰인다.

test, member 2개의 테이블이 있다고 하자.
select * from t까지 입력하고 Ctrl+.를 치면 select * from test로 테이블명을 완성시켜준다.
system계정에서는 안되더군.. 일반계정만 가능했다.

SQL문을 실행시

Ctrl+Enter
현재 커서의 SQL문 실행
여러개의 SQL문이 있을때, SQL문들을 개행문자로 분리해주면 된다.
해당 커서에서 개행문자가 있는 곳까지만 하나의 SQL문으로 간주한다.

F9
SQL Editor의 SQL문 실행하여 Grid에 출력.
여러 SQL문들을 개행문자로 구분하지 않는다는 것을 제외하면, 위의 Ctrl+Enter와 동일하다.
에디터내의 모든 SQL문은 하나로 취급하므로, 여러 개의 SQL문이 있으면 실행할 SQL문만 Selection하여 실행(F9)해준다.

F5
SQL Editor내의 모든 SQL문 실행. 여러개의 SQL문들을 모두 실행하여 SQL*PLUS와 같이 출력해준다.
이것은 출력이 Grid로 표시되지 않고 Editor윈도에 표시되므로, SQL*PLUS의 출력과 같이,
다른 편집기로의 복사/붙여넣기 할때 사용하면 유용하다

'공부 > 기타' 카테고리의 다른 글

이클립스 단축키  (0) 2012.01.27
Crontab 설정  (0) 2011.12.15
L4 로드밸런싱  (3) 2011.11.08
조인쿼리 정리  (0) 2011.06.13
OpenAPI OAuth  (0) 2011.06.13

힌트의 사용법
{SELECT | INSERT | UPDATE | DELETE} /*+ hint [text] [hint [text]] ... */
혹은
{SELECT | INSERT | UPDATE | DELETE} --+ hint [text] [hint [text]] ...
- 이러한 힌트의 사용은 SQL 전체가 아닌 쓰여진 SQL 블럭에만 적용됩니다.
힌트의 종류 별 분류
Optimization Goals and Approaches
ALL_ROWS 혹은 FIRST_ROWS
CHOOSE
RULE
Acess Method Hints
AND_EQUAL
CLUSTER
FULL
HASH
INDEX 혹은 NO_INDEX
INDEX_ASC 혹은 INDEX_DESC
INDEX_COMBINE
INDEX_FFS
ROWID
Join Order Hints
ORDERED
STAR
Join Operation Hints
DRIVING_SITE
HASH_SJ, MERGE_SJ 혹은 NL_SJ
LEADING
USE_HASH 혹은 USE_MERGE
USE_NL
Parallel Execution Hints
PARALLEL 혹은 NOPARALLEL
PARALLEL_INDEX
PQ_DISTRIBUTE
NOPARALLEL_INDEX
Query Transformation Hints
EXPAND_GSET_TO_UNION
FACT 혹은 NOFACT
MERGE
NO_EXPAND
NO_MERGE
REWIRTE 혹은 NOREWRITE
STAR_TRANSFORMATION
USE_CONCAT
Other Hints
APPEND 혹은 NOAPPEND
CACHE 혹은 NOCACHE
CURSOR_SHARED_EXACT
DYNAMIC_SAMPLING
NESTED_TABLE_GET_REFS
UNNEST 혹은 NO_UNNEST
ORDERED_PREDICATES
힌트의 설명 및 사용법
ALL_ROWS
/*+ ALL_ROWS */
- 최소한의 자원을 사용하여 결과값의 전체를 추출하게 합니다.
AND_EQUAL
/*+ AND_EQUAL (table index index [index] [index] [index] ) */
- 복수의 단일 컬럼을 스캔하여 머지 방식으로 처리하게 합니다.
APPEND_HINT
/*+ APPEND */
- 직렬 모드 데이터베이스에서 Direct INSERT를 실행하게 합니다.
- Enterprise Edition 이 아닌 데이터베이스의 기본 모드는 직렬 모드입니다. 이러한 직렬 모드 데이터 베이스에서의 INSERT 작업은 Conventional를 기본값으로 하고 병렬 처리 시에는 Direct INSERT를 기본값으로 합니다.
CACHE_HINT
/*+ CACHE (table) +/
- 풀 테이블 스캔의 사용 시, 테이블에서 읽어온 블럭을 버퍼의 LRU 리스트 의 MRU 쪽에 위치시킵니다. 작은 테이블의 사용 시 유용합니다.
CHOOSE_HINT
/*+ CHOOSE +/
- Rule-Based 와 Cost-Based 방식 간의 선택을 유도합니다. 선택 기준은 사용 객체의 분석 정보 존재 여부이며, 사용되는 객체들중 하나라도 분석 정보가 존재한다면 Cost-Based 방식을 사용하게 됩니다.
CLUSTER_HINT
/*+ CLUSTER (table) +/
- 지정 테이블의 클러스터 스캔을 유도합니다. 클러스터된 객체에만 사용할 수 있습니다.
CURSOR_SHARING_EXACT
/*+ CURSOR_SHARING_EXACT +/
- 바인드 변수 값의 교체를 불가능하게 합니다.
- 기본적으로 CURSOR_SHARING 파라미터를 사용하여, 안전하다고 판단될 시 SQL 내의 바인드 변수 값을 교체할 수 있게 되어 있습니다.
DRIVING_SITE
/*+ DRIVING_SITE (table) +/
- 오라클이 선택한 SITE 대신, 지정한 SITE를 사용하여 쿼리를 실행합니다. Rule-Based 와 Cost-Based, 두 모드 다 사용 가능합니다.
DYNAMIC_SAMPLING
/*+ DYNAMIC_SAMPLING ( [table] n ) +/
- 해당 객체의 Selectivity 와 Cardinality 에 대한 보다 자세한 정보를 자동으로 생성시켜 실행합니다.
- 값은 0 부터 10 까지 지정할 수 있으며, 높을 수록 보다 자세한 정보를 생성하게 됩니다. 테이블에 해당 값을 지정하지 않았을 경우, 기본 값은 CURSOR 레벨의 값이 쓰여집니다.
EXPAND_GSET_TO_UNION
/*+ EXPAND_GSET_TO_UNION +/
- GROUP BY GROUPING SET 혹은 GROUP BY ROLLUP 등과 같은 구문을 포함하는 쿼리에 사용할 수 있습니다.
- 이 힌트는 기존의 쿼리를 개별적인 그룹 생성 후, UNION ALL 방식으로 실행되게 유도합니다.
FACT_HINT
/*+ FACT (table) +/
- 스타 변형 구문에서 사용되며 해당 테이블이 FACT 테이블로 사용되게 유도합니다.
FIRST_ROWS
/*+ FIRST_ROWS (n) +/
- 전체 결과값의 반환 대신 지정한 숫자만큼 로우의 결과값을 반환하는데 집중하게 유도합니다.
FULL_HINT
/*+ FULL (table) */
- 지정한 테이블에 대해 풀 테이블 스캔을 유도합니다.
HASH_HINT
/*+ HASH (table) */
- 지정한 테이블에 대해 hash 스캔을 수행하도록 유도합니다.
- 클러스터 테이블 만을 대상으로 합니다.
HASH_AJ
/*+ HASH_AJ */
- EXISTS 구문 뒤에 오는 서브 쿼리에 사용되며 HASH_SJ, MERGE_SJ 혹은 NL_SJ 등을 사용할 수 있습니다.
- HASH_SJ 은 hash semi-join 이고, MERGE_SJ 은 sort merge semi-join 이며 NL_SJ 은 nested loop semi-join 입니다.
INDEX
/*+ INDEX (table index [index] [index] ... ) */
- 지정한 테이블의 인덱스 스캔을 실행하도록 유도합니다.
- Domain, B-tree, bitmap, bitmap join 인덱스 등이 사용될 수 있으나, bitmap 인덱스 들의 사용 시, INDEX 힌트보다는 INDEX_COMBINE 힌트 사용이 추천됩니다.
INDEX_ASC
/*+ INDEX-ASC (table [index] [index] ... ) +/
- 해당 테이블의 인덱스를 순차적 방식으로 스캔하게 합니다.
- 해당 쿼리가 인덱스 범위 스캔의 사용 시, 인덱스 값의 순차적 방식으로 읽게 됩니다.
INDEX_COMBINE
/*+ INDEX_COMBINE (table [index] [index] ... ) +/
- 해당 테이블에 Bitmap 인덱스의 존재 시, Bitmap 인덱스를 통한 액세스를 유도합니다.
- 힌트 내에 인덱스의 이름이 쓰여지지 않을 시, 해당 인덱스의 Boolean 값을 사용하여 최적의 Cost를 산출하여 실행하게 됩니다.
INDEX_DESC
/*+ INDEX_DESC (table [index] [index] ... ) +/
- 지정한 인덱스에 대해 인덱스 스캔을 역순으로 실행합니다.
- 해당 쿼리가 인덱스 범위 스캔의 사용 시, 인덱스 컬럼의 값을 사용하여 역순으로 실행합니다.
- 파티션 인덱스에서는 파티션 별 개별적인 실행이 이루어집니다.
INDEX_FFS
/*+ INDEX_FFS (table [index] [index] ... ) +/
- 풀 테이블 스캔 대신에 빠른 풀 테이블 스캔의 실행을 유도합니다.
LEADING_HINT
/*+ LEADING (table) +/
- 테이블 간의 조인 시에 지정한 테이블을 먼저 수행하도록 유도합니다.
- 두 개 이상의 LEADING 힌트의 사용 시, 힌트 자체가 사용되어 지지 않습니다.
- ORDERED 힌트와 더불어 사용시, LEADING 힌트는 사용되지 않습니다.
MERGE
/*+ MERGE (table) +/
- 각 쿼리의 결과값을 머지합니다.
- 해당 쿼리 내에 GROUP BY 절의 사용 이나 SELECT 구문에 DISTINCT 가 사용되었을 시, 머지의 실행이 가능할 경우에만 힌트가 실행됩니다.
- IN 과 서브 쿼리의 사용 시, 서브 쿼리와 상위 쿼리 간의 상호 관계가 없을 때에만 머지의 실행이 가능합니다.
- 이 힌트는 Cost-based 가 아닙니다. 따라서 액세스하는 실행 쿼리 블럭에 MERGE 힌트가 반드시 명시되어야만 합니다. 그렇지 않을 경우 옵티마이저는 다른 실행 계획을 수립합니다.
MERGE_AJ
HASH_AJ 를 참조하십시요.
MERGE_SJ
HASH_AJ 를 참조하십시요.
NL_AJ
HASH_AJ 를 참조하십시요.
NL_SJ
HASH_AJ 를 참조하십시요.
NOAPPEND
/*+ NOAPPEND +/
- 병럴 모드에서의 INSERT 작업을 Conventional 방식으로 수행합니다.
- 병렬 모드에서는 Direct-path INSERT 가, 직렬 모드에서는 Conventional INSERT가 기본값입니다.
NOCACHE
/*+ NOCACHE (table) +/
- 풀 테이블 스캔의 사용 시, 테이블에서 읽어온 블럭을 버퍼의 LRU 리스트 의 LRU 쪽에 위치시킵니다. 기본 모드입니다.
NO_EXPAND
/*+ NO_EXPAND +/
- 실행 쿼리 내에 OR 나 WHERE 절의 IN 이 사용되었을 시, Cost-Based 옵티마이저가 쿼리 처리를위해 OR 를 사용한 확장을 사용하는 것을 방지합니다.
- 일반적으로 옵티마이저는 위와 같은 경우 OR – 확장의 가격이 확장을 사용하지 않는 것보다 적을 시, 확장 방식으로 수행합니다.
NO_FACT
/*+ NO_FACT (table) +/
- Star 변형 시, 해당 테이블의 FACT 테이블로서의 사용을 방지합니다.
NO_INDEX
/*+ NO_INDEX (table [index] [index] ... ) +/
- 지정 테이블의 인덱스 사용을 방지합니다.
NO_MERGE
/*+ NO_MERGE (table) +/
- 머지 처리 방식의 사용을 방지합니다.
NOPARALLEL
/*+ NOPARALLEL (table) +/
- 지정한 테이블의 병렬 처리를 방지합니다.
- 테이블의 지정된 PARALLEL 값에 대해서 우선권을 가집니다.
- 중첩 테이블에 대해서는 병렬 처리를 할 수 없습니다.
NOPARALLEL_INDEX
/*+ NOPARALLEL_INDEX (table [index] [index] ... ) +/
- 인덱스 스캔 작업의 병렬 처리를 방지합니다.
- 인덱스에 지정된 PARALLEL 값에 우선권을 가집니다.
NO_PUSH_PRED
/*+ NO_PUSH_PRED (table) +/
- 결과값에 대한 조인 방식 서술의 강제적 수행을 방지합니다.
NO_PUSH_SUBQ
/*+ NO_PUSH_SUBQ +/
- 서브 쿼리의 결과값을 머지하지 않는 실행 계획이 실행 계획 설립 단계에서 제일 마지막으로 참조되는 것을 방지합니다.
- 일반적으로 서브 쿼리의 Cost 가 높거나, 처리 로우의 갯수를 크게 줄여주지 못할 때에는 서브 쿼리를 마지막에 참조하는 것이 성능 향상에 도움이 됩니다.
NOREWRITE
/*+ NOREWRITE +/
- 해당 쿼리 블럭의 쿼리 재생성의 실행을 방지합니다.
- QUERY_REWRITE_ENALBE 파라미터에 대해 우선권을 가집니다.
- NOREWRITE 힌트의 사용 시, Function-Based 인덱스의 사용이 금지됩니다.
NO_UNNEST
/*+ NO_UNNEST +/
- 해당 서브 쿼리 블럭의 UNNESTING 설정의 사용을 방지합니다.
ORDERED
/*+ ORDERED +/
- FROM 절에 나열된 테이블의 순서대로 조인 작업을 실행합니다.
ORDERED_PREDICATE
/*+ ORDERED_PREDICATE +/
- 옵티마이저에 의한 조인 관계의 Cost를 산출하기 위해 미리 정해둔 조인 관계 별 실행 순서의 사용을 방지합니다.
n 인덱스 키를 사용한 조인 관계들은 제외됩니다.
- 이 힌트는 쿼리의 WHERE 절에 사용하십시요.
PARALLEL
/*+ PARALLEL (table [ [, n |, DEFAULT |, ] [, n | DEFAULT ] ] ) +/
- 병렬 처리에 사용될 서버 프로세스의 갯수를 설정합니다.
- 병렬 처리 조건에 위배될 시, 힌트는 사용되지 않습니다.
- 임시 테이블에 대한 PARALLEL_HINT 사용 시, 힌트는 사용되지 않습니다.
PARALLEL_INDEX
/*+ PARALLEL_INDEX (table [ [index] [, index]...]
[ [, n |, DEFAULT |, ] [, n | DEFAULT ] ] ) +/
- 파티션 인덱스의 인덱스 범위 스캔 작업의 병렬 처리에 할당될 서버 프로세스의 갯수를 지정합니다.
PQ_DISTRIBUTE
/*+ PQ_DISTRIBUTE (table [,] outer_distribution, inner_distribution) +/
- 병렬 조인 시, Producer 프로세스와 Consumer 프로세스 간의 데이터 전달 방식을 지정합니다.
PUSH_PRED
/*+ PUSH_PRED (table) +/
- 결과값에 대한 조인 방식 서술의 강제적 수행을 실행합니다.
PUSH_SUBQ
/*+ PUSH_SUBQ +/
- 머지가 불가능한 서브 쿼리들의 우선 실행 계획을 실행 계획 수립시 먼저 참조하도록 합니다.
- 서브 쿼리의 사용 객체가 Remote 테이블이거나, 머지 조인의 사용 시 힌트는 실행되지 않습니다.
REWRITE
/*+ REWRITE [ ( [materialized_view] [materialized_view]...) ] +/
- 실행 계획의 가격에 상관없이 Materialized View 를 사용하여 쿼리 재생성을 하도록 합니다.
- Materialized View 를 지정할 시, 지정한 Materialized View 의 가격에 상관없이 무조건 쿼리 재생성을 실행합니다.
- Materialized View 를 지정하지 않을 시, 오라클은 사용 가능한 모든 Materialized View 를 참조하여 그 중 가장 가격이 낮은 Materialized View 를 사용하여 쿼리 재생성을 합니다.
- Materialized View 를 지정하지 않는 힌트의 사용이 권장됩니다.
ROW_ID
/*+ ROWID (table) +/
- 지정한 테이블의 스캔을 ROWID 방식으로 수행하게 합니다.
RULE
/*+ RULE +/
- 실행 계획을 Rule-Based 방식으로 실행하게 합니다.
- 해당 쿼리 블럭에 다른 힌트 또한 사용되었을 경우, 다른 힌트들은 사용되지 않습니다.
STAR
/*+ STAR +/
- Star 쿼리 계획이 사용 가능하다면, 실행하게 합니다.
- Star 쿼리 계획이란 가장 큰 테이블이 마지막 순서로 조인되며, 조인될 시 가장 큰 테이블 내의 Concatenated 인덱스에 대해 Nested Loop 조인 방식으로 실행되는 것을 말합니다.
- 최소한 세개 이상의 테이블이 사용되며, 제일 큰 테이블의 Concatenated 인덱스의 생성에 최소한 세 개 이상의 컬럼이 사용되어야 하며, 액세스나 조인 방식에 충돌이 없어야만 이 힌트는 사용됩니다.
STAR_TRANSFORMATION
/*+ STAR_TRANSFORMATION +/
- 옵티마이저가 Star 변형 작업에 최적화된 실행 계획을 수립, 실행하도록 합니다.
- 힌트를 사용하지 않을 시, 옵티마이저는 일반적인 작업에 최적화된 실행 계획을 수행합니다.
- 힌트를 사용하였어도 변형 작업에 맞추어진 실행 계획을 실행한다는 보장은 없습니다. 다른 일반적인 힌트의 사용과 마찬가지로 비교 분석 후, 오라클의 판단에 따라 다른 실행 계획이 실행될 수 있습니다.
UNNEST
/*+ UNNEST +/
- 서브 쿼리 블럭에 대해 인증성 만을 검사하게 합니다.
- 인증이 되었다면 그 이상의 검증 작업없이 서브쿼리에 대한 UNNESTING 의 설정을 가능하게 합니다.
USE_CONCAT
/*+ USE_CONCAT +/
- WHERE 절의 OR 조인 을 UNION ALL 로 변경하여 수행하게 합니다.
- 일반적으로 이러한 변경은 결과값의 병합 수행의 가격이 수행하지 않을 시의 가격 보다 낮을 때에만 실행됩니다.
USE_HASH
/*+ USE_HASH (table [table]...) +/
- Hash 조인 방식으로 각 테이블을 조인하게 합니다.
USE_MERGE
/*+ USE_MERGE (table [table]...) +/
- Sort-Merge 방식으로 각 테이블을 조인하게 합니다.
USE_NL
/*+ USE_NL (table [table]...) +/
- Nested-Loop 방식으로 각 테이블을 조인하게 합니다.

'공부' 카테고리의 다른 글

리눅스 기본명령어  (0) 2011.12.15
Oracle 날짜함수  (0) 2011.08.08
ORACLE에서 제공되는 내장함수  (0) 2011.08.08
스프링을 공부하기전에  (0) 2011.07.01
공부의 필요성을 느끼다...  (0) 2011.06.08



[13] 툴 팁에 대하여

툴팁은 다른 말로 "도구설명"이라고도 합니다. 익스플로러나 워드프로세서 등의 프로그램들을 보면 도구단추들이 있는데, 이러한 도구단추들 위로 마우스를 가져가면 멈춤, 새로고침, 시작, 검색 등의 글자가 나타나 도구단추의 용도를 가르쳐줍니다. 툴팁은 바로 이러한 것을 말합니다. 다른 말로는 "풍선도움말"이라고도 하지요. 웹페이지에서의 툴팁은 주로 링크가 되어있는 텍스트나 이미지위에 마우스가 위치 할 때 링크되어 있는 페이지에 대한 정보를 제공해주는 것이 대부분입니다.
툴팁에는 수없이 많은 형태가 있습니다. 일반 태그를 이용하는 간단한 방법에서 부터 dhtml과 css, 자바 스크립트를 이용한 다양한 방법이 있습니다.

가장 간단한 방법

▒ 이미지에 설명글 달기.

<img src="그림주소" alt="설명글">
이미지에 설명글을 넣을 때는 alt를 사용합니다.
alt 뒤에 설명글을 넣어주면 이미지에 마우스가 올라간 후 1~2초 후에 설명글이 보입니다.

[ 사용 예시 ]
<img src="rose.gif" alt="장미 그림">

결과보기
아래 그림에 마우스를 가져가 보신 후 잠시 기다려 보세요.
장미 그림

▒ 링크에 설명글 달기.

<a href="링크주소" title="설명글"> 이미지에 설명글을 넣을때는 title을 사용합니다. title 뒤에 설명글을 넣어주면 링크에 마우스 오버 1~2초후에 설명글이 보입니다.

[ 사용 예시 ]
<a href="sanj.htm" target=_blank title="부산일보 산행정보로 갑니다"> 부산일보 산행정보</a>

결과보기
(아래에 마우스를...)
아름다운글 올리는방법

▒ 텍스트(일반글)에 설명글 달기.

<font size="2" title="설명글">
Text에 설명글을 넣을때도 title을 사용합니다.
title 뒤에 설명글을 넣어주면 Text에 마우스 오버 1~2초후에 설명글이 보입니다.

[ 사용 예시 ]
<font size="2" title="CURSOR:hand" style="CURSOR:hand;">
이글은 일반 Text 에서 Tooltip을 보여 주는 예제글 입니다.
이글위에 마우스를 가져 가시면 CURSOR:hand 라는 풍선 도움말이 보이실 것입니다.
바로 나오지 않는 분은 잠시만 기다려 보세요.
CURSOR:hand 라고 작은 풍선 도움말 보이세요?</a>

결과보기
(아래에 마우스를...)
이글은 일반 Text 에서 Tooltip을 보여 주는 예제글 입니다. 이글위에 마우스를 가져 가시면 CURSOR:hand 라는 풍선 도움말이 보이실것입니다. 바로 나오지 안는분은 잠시만 가다려 보세요. CURSOR:hand 라고 작은 풍선 도움말 보이세요?

▒ Text Box에 설명글 달기.

<input type="text" value="텍스트 박스글" title="설명글">
Text Box에 설명글을 넣을때도 역시 title을 사용합니다.

[ 사용 예시 ]
<input type="text" value="Text Box Tooltip" style="CURSOR:hand;" title="Text Box 툴팁입니다">

결과보기
(아래에 마우스를...)

▒ Button에 설명글 달기.

<input type="button" value="텍스트 박스글" title="설명글">
Text Box에 설명글을 넣을 때도 역시 title을 사용합니다.

[ 사용 예시 ]
<input type="button" value="버턴툴팁" style="CURSOR:hand;" title="버턴에도 풍선도움말이 됩니다">

결과보기
(아래에 마우스를...)

2. 툴 팁 줄 바꾸기.

alt 나 title의 줄바꿈울 할때는 일반 태그와 같이 br을 사용 할 수 없습니다.
alt 나 title의 줄바꿈은 &#13; 을 넣어야 합니다.

[ 사용 예시 1 ]
<img src="rose.gif" alt="이것은&#13;장미 그림&#13;입니다">

결과보기
아래 그림에 마우스를 가져가 보신 후 잠시 기다려 보세요.
이것은
장미 그림
입니다

[ 사용 예시 2 ]
<a href="http://asanak.com.ne.kr/asanak.htm" target=_blank title="게시판에 글을 올릴 때&#13;또는&#13;메일을 멋있게 보내고자 할 때는
&#13;오셔서 아름다운 글 올리는 방법을 보세요.&#13;
이 링크를 클릭하면 홈으로 갑니다">
아름다운글 올리는방법</a>

결과보기
(아래에 마우스를...)
아름다운글 올리는방법

이상과 같이 모든 툴팁에 줄바꿈 하실때 &#13;를 넣어주면 줄바꿈이 됩니다.

3. 스타일 시트를 이용하는법.

스타일 속성 중 visibility를 이용해 보겠습니다.
visibility란 어떠한 부분을 보여주거나 숨기거나 하는 것을 결정하는 속성입니다.
visibility의 값을 visible이라 하면 보여주고, hidden이라 하면 감춥니다.
소스는 아래와 같습니다.

<style type="text/css">:
#tooltip {visibility:hidden;}
</style>

이 부분은 스타일시트를 이용해서 visibility의 초기값을 hidden으로 설정하고 있습니다.
스타일시트이기 때문에 <style> 태그로 둘러싸고 있으며 <head> 태그 내에 써주어야 합니다.
#표시는 스타일을 선언할 때만 써주고 나중에 사용할 때는 쓰지 않습니다.

스타일시트를 정의 할 때 visibility외에 앞에서 레이어를 만들면서 배운 position, top, left, width, height 등의 속성을 이용하면 툴팁이 나타나는 위치를 바꿀 수 있습니다.

다음은 링크를 만드는 <a> 태그 부분입니다.

<a href="javascript:alert('툴팁 샘플입니다.');"
onmouseover="tooltip.style.visibility='visible';"
onmouseout="tooltip.style.visibility='hidden';">이곳에 마우스를</a>
<span id=tooltip>이것이 툴팁입니다.</span>

링크 하실 때는 javascript:alert('툴팁 샘플입니다.');대신 링크 주소를 넣어 주시면 됩니다.

[ 사용 예시 ]
<html>
<head>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=EUC-KR">
<title>아름다운글 올리는 방법-툴팁2-</title>
<STYLE TYPE=text/css>
#tooltip {visibility:hidden;}
</STYLE>
</head>
<body>
<a href="javascript:alert('툴팁 샘플입니다.');"
onmouseover="tooltip.style.visibility='visible';"
onmouseout="tooltip.style.visibility='hidden';">이곳에 마우스를</a>
<span id=tooltip>이것이 툴팁입니다.</span>

결과 보기>
이곳에 마우스를

이것이 툴팁입니다.

4. 자바 스크립트를 이용한 툴팁

자바 스크립트 소스를 분석 하기란 상당히 어렵습니다. 자바를 전문적으로 공부한 프로그래메가 아니면 자바소스를 만들지 못합니다. 우리는 그저 프로그래머가 만들어 놓은 자바 소스를 이용만 할수 있을 뿐입니다.

툴팁을 만들기 위해서 우선, 기본적으로 <body>와 </body> 사이에 아래 있는 div레이어와 JavaScript소스를 넣어야 합니다.

<div style="position:absolute;z-index:1;visibility:hide" id="overDiv"></div>
<script language="JavaScript">
<!--
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
if (ie4) {
if (navigator.userAgent.indexOf('MSIE 5')>0) {
ie5 = true;
}
else {
ie5 = false;
}
}
else {
ie5 = false;
}
var x = 0;
var y = 0;
var snow = 0;
var sw = 0;
var cnt = 0;
var dir = 1;
if ( (ns4) || (ie4) ) {
if (ns4) over = document.overDiv
if (ie4) over = overDiv.style
document.onmousemove = mouseMove
if (ns4) document.captureEvents(Event.MOUSEMOVE)
}
function drc(text, title, osy) {
dtc(1, text, title, osy);
}
function dlc(text, title, osy) {
dtc(0, text, title, osy);
}
function dcc(text, title, osy) {
dtc(2, text, title, osy);
}
function nd() {
if ( cnt >= 1 ) { sw = 0 };
if ( (ns4) || (ie4) ) {
if ( sw == 0 ) {
snow = 0;
hideObject(over);
}
else {
cnt++;
}
}
}
function dtc(d, text, title, osy) {
txt = text
layerWrite(txt);
dir = d;
offsety = osy;
disp();
}
function disp() {
if ( (ns4) || (ie4) ) {
if (snow == 0) {
if (dir == 2) {
moveTo(over,x,y+10);
}
if (dir == 1) {
moveTo(over,x,y+10);
}
if (dir == 0) {
moveTo(over,x,y+10);
}
showObject(over);
snow = 1;
}
}
}
function mouseMove(e) {
if (ns4) {x=e.pageX; y=e.pageY;
}
if (ie4) {x=event.x; y=event.y;
}
if (ie5) {x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;
}
if (snow) {
if (dir == 2) {
moveTo(over,x,y+10);
}
if (dir == 1) {
moveTo(over,x,y+10);
}
if (dir == 0) {
moveTo(over,x,y+10);
}
}
}
function cClick() {
hideObject(over);
sw=0;
}
function layerWrite(txt) {
if (ns4) {
var lyr = document.overDiv.document
lyr.write(txt)
lyr.close()
}
else if (ie4) document.all["overDiv"].innerHTML = txt
}
function showObject(obj) {
if (ns4) obj.visibility = "show"
else if (ie4) obj.visibility = "visible"
}
function hideObject(obj) {
if (ns4) obj.visibility = "hide"
else if (ie4) obj.visibility = "hidden"
}
function moveTo(obj,xL,yL) {
obj.left = xL
obj.top = yL
}
//-->
</script>

▒ 고급 방법

<a href="링크주소" target=자신의 타겟트 설정
onmouseover="dcc('<div style=margin-left:10;margin-top:10>
툴팁 설명글.</div>','','20')" onmouseout="nd()">링크</a>

이렇게 넣어 주시면 됩니다.

① 평범한 툴팁.

위에 있는 소스 넣기를 마친 후,
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.
소스중 http://asanak.com.ne.kr/index.html은 여러분의 링크 주소로 바꾸어 주시고 target=_blank 의 타겟트 설정도 홈에 맞게 수정해 줘야 합니다.

<a href="http://asanak.com.ne.kr/index.html" target=_blank
onmouseover="dcc('<div style=margin-left:10;margin-top:10;>
sample 1 <br>이것은 일반적인 툴팁 입니다.</div>','','20')"
onmouseout="nd()">아름다운글 올리는 방법</a>

결과 보기 ; (아래의 글에 마우스를 가져가 보세요)

② 툴팁 흐르는글.

이번에는 marquee를 이용하여 둘팁의 글이 움직이게 만들어 봅시다.
위에 있는 소스 넣기를 마친 후,
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.

<a href="http://asanak.com.ne.kr/index.html" target=_blank onmouseover="dcc('<div style=margin-left:10;margin-top:10;> sample 2 <br><marquee width=250>툴팁의 설명글이 옆으로 흐릅니다.</marquee></div>','','20')" onmouseout="nd()">아름다운글 올리는 방법</a>

결과 보기 (아래의 글에 마우스를 가져가 보세요)

③ 툴팁에 바탕색 넣기.

툴팁글에 바탕색도 넣어보죠.
font 에style=background-color:원하는 색상코드; 를 넣어 주시면 됩니다.
위에 있는 소스 넣기를 마친 후,
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.

<a href="http://asanak.com.ne.kr/index.html" target=_blank onmouseover="dcc('<div style=margin-left:10;margin-top:10;> <font color=#ffffcc size=3 style=background-color:708090;>바탕색이 있는 툴팁박스</div>','','20')" onmouseout="nd()">아름다운글 올리는 방법</a>

결과 보기 (아래의 글에 마우스를 가져가 보세요)

④ 툴팁에 테두리 넣기.

툴팁글에 바탕색과 테두리도 넣어보죠.
일반 테이블 작성법과 같습니다.
위에 있는 소스 넣기를 마친 후,
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.
수정법
폭은 width 의 숫자를 고치고, 바탕색은 bgcolor를 테두리색은 bordercolor를 글색은font color를 수정하시면 됩니다

<a href="http://asanak.com.ne.kr/index.html" target=_blank onmouseover="dcc('<div style=margin-left:10;margin-top:10;> <table border=1 cellspacing=0 cellpadding=3 width=250 bordercolor=#74a6ab bgcolor=#444444><tr><td><font color=orange size=3><center>SAMPLE4<br>테두리가 있는 툴팁박스 입니다</td></tr></table></div>','','20')" onmouseout="nd()">아름다운글 올리는 방법</a>

결과 보기 (아래의 글에 마우스를 가져가 보세요)

⑤ 툴팁에 테두리, 그리고 상단과 하단의 바탕색이 다르게 넣기.

위에 있는 소스 넣기를 마친 후,
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.

수정법
폭은 width 의 숫자를 고치고, 바탕색은 bgcolor를 테두리색은 bordercolor를 글색은font color를 수정하시면 됩니다

<a href="http://asanak.com.ne.kr/index.html" target=_blank onmouseover="dcc('<div style=margin-left:10;margin-top:10;> <table border=1 cellspacing=0 cellpadding=3 width=250 bordercolor=#74a6ab bgcolor=#444444><tr><td><font color=orange size=3><center>SAMPLE5</td></tr><tr><td bgcolor=999999><font color=#000000 size=3><center>상단과 하단의 배경색이 다른 툴팁박스</td></tr></table></div>','','20')" onmouseout="nd()">아름다운글 올리는 방법</a>

결과 보기 (아래의 글에 마우스를 가져가 보세요)


이방법을 응용하면 여러가지 방법이 나올수 있습니다.
JavaScript 는 js 파일로 만들어 링크해도 됩니다.

5. 간단하면서도 모든것을 표현 할 수도 있고 위치도 마음대로

먼저 아래의 소스를 <head>와</head> 사이에 넣으세요.

<STYLE TYPE=text/css>
.over    {color:#1111cc; font-weight:bold; font-size:12px; text-decoration:none}
.out     {color:#DCDCDC; font-size:12px; text-decoration:none}
</STYLE>

.over는 마우스가 글에 올라갔을때 
     color:#1111cc  글색  
     font-weight:bold 글을 굵게
     font-size:12pt 글자의 크기 
     text-decoration:none 링크의 밑줄을 삭제 하라는것이고.
.out 은 마우스를 때었을때 
     color:#DCDCDC 글색 
     font-size:12pt 글자의 크기 
     text-decoration:none 링크의 밑줄을 삭제 하라는것 입니다.

이 부분을 홈에 맞게끔 수정해 주세요.

메모장에 작성하면 아래와 같이 됩니다. 


                                                <head>
                <script type="text/javascript">if (!window.T) { window.T = {} }
window.T.config = {"TOP_SSL_URL":"https://www.tistory.com","PREVIEW":false,"ROLE":"guest","PREV_PAGE":"","NEXT_PAGE":"","BLOG":{"id":814431,"name":"finerss","title":"finerss's world!","isDormancy":true,"nickName":"finerss","status":"open","profileStatus":"normal"},"NEED_COMMENT_LOGIN":false,"COMMENT_LOGIN_CONFIRM_MESSAGE":"","LOGIN_URL":"https://www.tistory.com/auth/login/?redirectUrl=http://finerss.tistory.com/category","DEFAULT_URL":"https://finerss.tistory.com","USER":{"name":null,"homepage":null,"id":0,"profileImage":null},"SUBSCRIPTION":{"status":"none","isConnected":false,"isPending":false,"isWait":false,"isProcessing":false,"isNone":true},"IS_LOGIN":false,"HAS_BLOG":false,"IS_SUPPORT":false,"TOP_URL":"http://www.tistory.com","JOIN_URL":"https://www.tistory.com/member/join","ROLE_GROUP":"visitor"};
window.T.entryInfo = null;
window.appInfo = {"domain":"tistory.com","topUrl":"https://www.tistory.com","loginUrl":"https://www.tistory.com/auth/login","logoutUrl":"https://www.tistory.com/auth/logout"};
window.initData = {};

window.TistoryBlog = {
    basePath: "",
    url: "https://finerss.tistory.com",
    tistoryUrl: "https://finerss.tistory.com",
    manageUrl: "https://finerss.tistory.com/manage",
    token: "mIp1anHbzIqqKNKJXCHtqjGpTWhu15L6EBWw9Gic1F+RipjA0GAWuGBoyu+W0NPt"
};
var servicePath = "";
var blogURL = "";</script>

                
                
                
<META HTTP-EQUIV="Content-Type" content="text/html; charset=EUC-KR">
<title>-툴팁-</title>
<STYLE TYPE=text/css>
.over    {color:#1111cc; font-weight:bold; font-size:12px; text-decoration:none}
.out     {color:#DCDCDC; font-size:12px; text-decoration:none}
</STYLE>

                <style type="text/css">.another_category {
    border: 1px solid #E5E5E5;
    padding: 10px 10px 5px;
    margin: 10px 0;
    clear: both;
}

.another_category h4 {
    font-size: 12px !important;
    margin: 0 !important;
    border-bottom: 1px solid #E5E5E5 !important;
    padding: 2px 0 6px !important;
}

.another_category h4 a {
    font-weight: bold !important;
}

.another_category table {
    table-layout: fixed;
    border-collapse: collapse;
    width: 100% !important;
    margin-top: 10px !important;
}

* html .another_category table {
    width: auto !important;
}

*:first-child + html .another_category table {
    width: auto !important;
}

.another_category th, .another_category td {
    padding: 0 0 4px !important;
}

.another_category th {
    text-align: left;
    font-size: 12px !important;
    font-weight: normal;
    word-break: break-all;
    overflow: hidden;
    line-height: 1.5;
}

.another_category td {
    text-align: right;
    width: 80px;
    font-size: 11px;
}

.another_category th a {
    font-weight: normal;
    text-decoration: none;
    border: none !important;
}

.another_category th a.current {
    font-weight: bold;
    text-decoration: none !important;
    border-bottom: 1px solid !important;
}

.another_category th span {
    font-weight: normal;
    text-decoration: none;
    font: 10px Tahoma, Sans-serif;
    border: none !important;
}

.another_category_color_gray, .another_category_color_gray h4 {
    border-color: #E5E5E5 !important;
}

.another_category_color_gray * {
    color: #909090 !important;
}

.another_category_color_gray th a.current {
    border-color: #909090 !important;
}

.another_category_color_gray h4, .another_category_color_gray h4 a {
    color: #737373 !important;
}

.another_category_color_red, .another_category_color_red h4 {
    border-color: #F6D4D3 !important;
}

.another_category_color_red * {
    color: #E86869 !important;
}

.another_category_color_red th a.current {
    border-color: #E86869 !important;
}

.another_category_color_red h4, .another_category_color_red h4 a {
    color: #ED0908 !important;
}

.another_category_color_green, .another_category_color_green h4 {
    border-color: #CCE7C8 !important;
}

.another_category_color_green * {
    color: #64C05B !important;
}

.another_category_color_green th a.current {
    border-color: #64C05B !important;
}

.another_category_color_green h4, .another_category_color_green h4 a {
    color: #3EA731 !important;
}

.another_category_color_blue, .another_category_color_blue h4 {
    border-color: #C8DAF2 !important;
}

.another_category_color_blue * {
    color: #477FD6 !important;
}

.another_category_color_blue th a.current {
    border-color: #477FD6 !important;
}

.another_category_color_blue h4, .another_category_color_blue h4 a {
    color: #1960CA !important;
}

.another_category_color_violet, .another_category_color_violet h4 {
    border-color: #E1CEEC !important;
}

.another_category_color_violet * {
    color: #9D64C5 !important;
}

.another_category_color_violet th a.current {
    border-color: #9D64C5 !important;
}

.another_category_color_violet h4, .another_category_color_violet h4 a {
    color: #7E2CB5 !important;
}
</style>

                
                <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-dcd72a92cfa46d05916d7729aa74e508c9f6ce4f/static/style/revenue.css"/>
<link rel="canonical" href="https://finerss.tistory.com"/>

<!-- BEGIN STRUCTURED_DATA -->
<script type="application/ld+json">
    {"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":0,"item":{"@id":"https://finerss.tistory.com/entry/%EC%85%80%EC%8B%9C%EC%96%B4%EC%8A%A4celsius","name":"셀시어스(celsius)"}},{"@type":"ListItem","position":1,"item":{"@id":"https://finerss.tistory.com/entry/%EC%9E%84%EC%8B%9C","name":"JAVA Level Up"}},{"@type":"ListItem","position":2,"item":{"@id":"https://finerss.tistory.com/entry/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-%EB%8B%A8%EC%B6%95%ED%82%A4","name":"이클립스 단축키"}},{"@type":"ListItem","position":3,"item":{"@id":"https://finerss.tistory.com/entry/%ED%86%A0%EB%93%9C-%EB%8B%A8%EC%B6%95%ED%82%A4","name":"토드 단축키"}},{"@type":"ListItem","position":4,"item":{"@id":"https://finerss.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%9E%8C%ED%8A%B8%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0","name":"오라클 힌트사용하기"}},{"@type":"ListItem","position":5,"item":{"@id":"https://finerss.tistory.com/entry/%EB%A7%88%EC%9A%B0%EC%8A%A4-%EB%8C%80%EB%A9%B4-%EB%AF%B8%EB%A6%AC%EB%B3%B4%EA%B8%B0%ED%88%B4%ED%8C%81","name":"마우스 대면 미리보기(툴팁)"}},{"@type":"ListItem","position":6,"item":{"@id":"https://finerss.tistory.com/entry/Crontab-%EC%84%A4%EC%A0%95","name":"Crontab 설정"}},{"@type":"ListItem","position":7,"item":{"@id":"https://finerss.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4","name":"리눅스 기본명령어"}},{"@type":"ListItem","position":8,"item":{"@id":"https://finerss.tistory.com/entry/%ED%8A%B8%EB%9E%9C%EC%A0%9D%EC%85%98%EC%9D%B4%EB%9E%80","name":"트랜젝션이란"}},{"@type":"ListItem","position":9,"item":{"@id":"https://finerss.tistory.com/entry/Spring-IOC","name":"Spring IOC"}}]}
</script>
<!-- END STRUCTURED_DATA -->
<link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-dcd72a92cfa46d05916d7729aa74e508c9f6ce4f/static/style/dialog.css"/>
<link rel="stylesheet" type="text/css" href="//t1.daumcdn.net/tistory_admin/www/style/top/font.css"/>
<link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-dcd72a92cfa46d05916d7729aa74e508c9f6ce4f/static/style/postBtn.css"/>
<link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-dcd72a92cfa46d05916d7729aa74e508c9f6ce4f/static/style/comment.css"/>
<link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-dcd72a92cfa46d05916d7729aa74e508c9f6ce4f/static/style/tistory.css"/>
<script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-dcd72a92cfa46d05916d7729aa74e508c9f6ce4f/static/script/common.js"></script>
<script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-dcd72a92cfa46d05916d7729aa74e508c9f6ce4f/static/script/comment.js" defer=""></script>

                
                </head>
   예를 보면서 설명을 하겠습니다.
  
   1. 일반적인 툴팁.

<a href="http://asanak.com" target="_blank" onfocus="this.blur()" onMouseOver="this.className='over'; asanak1.innerHTML='<B>Go!!</B><br> asanak.com.';" onMouseOut="this.className='out'; asanak1.innerHTML='';">아름다운글 올리는 방법</a>
<div id='asanak1' style="margin-left:150;">&nbsp;</div>

       
      <head>와</head>의 소스를 넣은후
      <body>와 </body> 사이의 원하는 위치에 위의  1. 일반적인 툴팁. 소스를 넣습니다.
 
수정할 부분소스 설명
http://asanak.com링크할 주소입니다. 여러분의 주소로 고쳐야 겟죠.
target="_blank"target 설정 입니다.
onfocus="this.blur()"링크를 클릭하면 생기는 점선을 나타나지 않게하는 소스 입니다.
<B>Go!!</B><br> asanak.com.풍선도움말의 내용
margin-left:150풍선 도움말의 위치. 각자의 홈에 맞게 수치를 조절 하세요
&nbsp;윈도우의 에러를 방지 하기위한 공백 문자
메모장에 완성된소스는 아래와 같이 됩니다.
<html>
<head>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=EUC-KR">
<title>-툴팁-</title>
<STYLE TYPE=text/css>
.over {color:#FFFFCC; font-weight:bold; font-size:12px; text-decoration:none}
.out {color:#DCDCDC; font-size:12px; text-decoration:none}
</STYLE>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" bgcolor="#000000">
<a href="http://asanak.com" target="_blank" onfocus="this.blur()" onMouseOver="this.className='over'; asanak1.innerHTML='<B>Go!!v/B><br> asanak.com.';" onMouseOut="this.className='out'; asanak1.innerHTML='';">아름다운글 올리는 방법</a>
<div id='asanak1' style="margin-left:150;">&nbsp;</div>


결과 보기 (아래의 글에 마우스를 가져가 보세요)

아름다운글 올리는 방법

2. 툴팁 흐르는글.

이번에는 marquee를 이용하여 둘팁의 글이 움직이게 만들어 봅시다.
위에 있는 소스 넣기를 마친 후,
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.

<a href="http://asanak.com" target="_blank" onfocus="this.blur()" onMouseOver="this.className='over'; asanak2.innerHTML='<marquee width=200>Go!! asanak.com.</marquee>';" onMouseOut="this.className='out'; asanak2.innerHTML='';">아름다운글 올리는 방법</a>
<div id='asanak2' style="margin-left:150;">&nbsp;</div>

결과 보기 (아래의 글에 마우스를 가져가 보세요)

아름다운글 올리는 방법


3. 툴팁에 바탕색 넣기.

툴팁글에 바탕색도 넣어보죠.
p style=background-color:원하는 색상코드; 를 넣어 주시면 됩니다.
위에 있는 소스 넣기를 마친 후,
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.

<a href="http://asanak.com" target="_blank" onfocus="this.blur()" onMouseOver="this.className='over'; asanak3.innerHTML='<p style=background-color:708090;>Go!! asanak.com.</p>';" onMouseOut="this.className='out'; asanak3.innerHTML='';">아름다운글 올리는 방법</a>
<div id='asanak3' style="margin-left:150;">&nbsp;</div>

결과 보기 (아래의 글에 마우스를 가져가 보세요)

아름다운글 올리는 방법


4. 툴팁에 테두리 넣기.

툴팁글에 바탕색과 테두리도 넣어보죠.
일반 테이블 작성법과 같습니다.
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.
수정법
폭은 width 의 숫자를 고치고, 바탕색은 bgcolor를 테두리색은 bordercolor를 글색은font color를 수정하시면 됩니다

<a href="http://asanak.com" target="_blank" onfocus="this.blur()" onMouseOver="this.className='over'; asanak4.innerHTML='<table border=1 cellspacing=0 cellpadding=3 width=250bordercolor=#74a6ab bgcolor=#444444><tr><td><font color=orange size=3><center>Go!!<br> asanak.com.</center></font></td></tr></table>';" onMouseOut="this.className='out'; asanak4.innerHTML='';">아름다운글 올리는 방법</a>
<div id='asanak4' style="margin-left:150;">&nbsp;</div>

결과 보기 (아래의 글에 마우스를 가져가 보세요)

아름다운글 올리는 방법


5. 툴팁에 테두리, 그리고 상단과 하단의 바탕색이 다르게 넣기.

위에 있는 소스 넣기를 마친 후,
<body>와 </body> 사이의 원하는 위치에 아래 소스를 넣습니다.

수정법
폭은 width 의 숫자를 고치고, 바탕색은 bgcolor를 테두리색은 bordercolor를 글색은font color를 수정하시면 됩니다

<a href="http://asanak.com" target="_blank" onfocus="this.blur()" onMouseOver="this.className='over'; asanak5.innerHTML='<table border=1 cellspacing=0 cellpadding=3 width=200 bordercolor=#74a6ab bgcolor=#444444><tr><td align=center><font color=orange size=3>Go!!</font></td></tr><tr><td bgcolor=#666666 align=center><font color=#ffffee> asanak.com.</font></td></tr></table>';" onMouseOut="this.className='out'; asanak5.innerHTML='';">아름다운글 올리는 방법</a>
<div id='asanak5' style="margin-left:150;">&nbsp;</div>

결과 보기 (아래의 글에 마우스를 가져가 보세요)

아름다운글 올리는 방법


6. 이미지 넣기.

5번은 중앙에 선이 있습니다.
이 선을 삭제하고 이미지도 넣어서 풍선 도움말을 만들어 보죠.

<a href="http://asanak.com" target="_blank" onfocus="this.blur()" onMouseOver="this.className='over'; asanak6.innerHTML='<table border=1 cellspacing=0 cellpadding=3 width=180 bordercolor=#74a6ab bgcolor=#000000><tr><td align=center><table border=0 cellspacing=0 cellpadding=3 width=180><tr><td align=center bgcolor=#666666><font color=orange size=3>Go!!</font></td></tr><tr><td width=180 height=52 align=center><img src=rose.gif width=52 height=52 align=left><font color=#ffffee><br> asanak.com.</font></td></tr></table></td></tr></table>';" onMouseOut="this.className='out'; asanak6.innerHTML='';"> <img src=rose.gif border=0> 아름다운글 올리는 방법 </a>
<div id='asanak6' style="margin-left:150;">&nbsp;</div>

결과 보기 (아래의 글에 마우스를 가져가 보세요)

아름다운글 올리는 방법

[14] <input>, <form> - 버턴 만들기

1. 간단한 버튼 만들기

아래 소스에 주소와 버튼에 들어갈 이름만 고쳐 쓰면 된다.
<form action="주소" target="_blank">
<input type="submit" value="태그연습"> </form>
스타일시트로 응용해서 이쁜 색 버튼을 만들 수도 있다.

<input type="button" value="이쁜 버튼" style="color:white; font-size: 9pt;
background-color:pink; border:1 solid red;size= 30;height:20px"></style> 를 쓰면,

<input type="button" value="이쁜 버튼" style="color:white; font-size: 9pt;
background-color:00ccff; border:1 solid blue;size= 30;height:20px"></style>를 쓰면,

(버튼응용에서 연결까지)
<form action="연결시킬주소" target="_blank"> <input type="submit" value="버튼이름" style="color:white; font-size: 9pt; background-color:pink; border:1 solid red;size= 30;height:20px"></style></form>

2. 토글 버턴 만들기

토글버턴이란 하나의 버턴으로 두가지의 기능을 수행 하는 것입니다.

▒ 토글버턴 1

토글버턴 1은 자바스크립트 없이 가장 간단하게 만들 수 있는 것입니다만 단점은 한 번 밖에 사용 할 수 없다는 것 입니다.

예제보기: 아래 보이기를 클릭해 보세요.

♣ 보이기

♣ 숨기기

안녕 하세요?
토글버턴 예제 1번 입니다.

아래 소스를 복사해 사용 하세요

글자의 색상은 #HideText 의 color:#40FFC0; 와 #ShowText의 color:#FFF982;를 수정하면 됩니다.
♣ 보이기 ♣ 숨기기는 이미지로 대체 하여도 되고 나오는 내용 또한 어떤것이던 보이게 할수 있습니다

3. Form에 대한 개요

여기서는 간단히 Form이란 무엇인가에 대해 생각해 보도록 합니다.
대부분 Form은 Java Script, CGI와 함께 사용하게 됩니다. 회원제 사이트에 가면 이름, 주민등록 번호, 남녀 구분, 주소... 등등 입력하는 양식이 있죠? 이게 바로 Form으로 작성된 겁니다. 이것 저것 입력한 후 "확인" 버튼을 클릭하면 그 정보가 서버의 데이터 베이스에 전달되게 되는데, 이러한 정보를 데이터 베이스나 파일로 저장하는 작업을 해주는 것이 CGI라고 합니다. 검색엔진에서 원하는 단어를 넣고 검색을 하면 원하는 사이트가 나타나죠? 그것도 CGI를 이용한 것이랍니다.

그럼 CGI에 대해 간단히 알아볼까요? CGI는 Common Gateway Interface의 약자입니다. Common은 공통의, 공용의.. 이런 뜻을 갖고 있고, Gateway란 문, 출입구, 통로 그리고 interface는 경계면, 접점, 공유영역이란 뜻을 갖고 있습니다.
좀 더 어렵게 이야기 하자면 클라이언트 사용자와 서버 간에서 서로 필요한 정보를 서로 공유할 수 있도록 도와주는 것을 CGI라고 합니다.

CGI는 C, C++ 같은 컴파일 언어로 만들 수 있구요, Perl 같이 컴파일 과정 없이 사용되는 인터프리터 언어로 만들 수도 있어요. 단지 C, C++, Perl 등 만으로 가능한 것은 아니구요. 대부분의 언어로 구현이 가능합니다. 여기 하고 있는 프로젝트는 코볼로 했구요. 쉽게 접할 수 있는 CGI 프로그램은 방명록이나 게시판, 카운터, 순위 사이트 등이 있어요. 접해보신 분들이 계실테지만 게시판 중 Korea Famous CGI Server에서 제공하는 크레이지 보드는 C로 짠 게시판이고 Way-Board는 Perl로 되어있어요.

1) Form Tag

<FORM action="CGI Program Name" method = "post or get"> ... </FORM>

  • 모든 입력 양식(Form)의 시작과 끝을 나타냅니다.
  • action="CGI Program Name" - 서버에서 실행될 CGI 프로그램을 나타냅니다. Perl로 된 것이라면 action="/cgi-bin/abc.cgi" 나 action="http://www.abc.com/cgi-bin/abc.cgi" 와 같은 형태가 될 것입니다.
  • method = "post or get" - 입력된 정보를 처리하는 방식을 나타냅니다.
  • method = "post" - 입력된 내용들이 서버에 있는 데이터베이스나 파일에 저장될 경우에는 대부분 post 방식을 사용합니다. 게시판이나 방명록이 주로 여기에 속합니다.
  • method = "get" - 입력된 내용들이 방문객에게 보여질 경우에 주로 사용됩니다. 카운터나 검색엔진이 주로 여기에 속하겠죠. 한 번 소스 보기로 보세요. Client에서 Server로 보내지는 정보는 URL 형태로 전달되어 보안문제가 그대로 드러나기도 하고, 한번에 보낼 수 있는 정보가 256 byte로 한정되어 있습니다.

2) Form의 종류
Form의 종류에는

  • 텍스트(text)
  • 암호(password)
  • 체크박스(checkbox)
  • 라디오버튼(radio button)
  • 텍스트 영역(text area)
  • 선택목록(list box)
와 같은 것들이 있습니다.

3) 텍스트(text)

<INPUT type="text" name="text의 이름" size="n" maxlength="n" value="값">

사용은 Form Tag와 함께 사용해야 합니다.

  • type - type="text" 라고 하면 입력되는 형식을 텍스트 형태로 처리하겠다는 것을 뜻하는 것입니다.
  • name - 프로그래밍할 때 변수를 지정하는 것과 같은 원리입니다. name 이라는 항목으로 text input에 이름을 주어 서버에서 작동하는 프로그램에 전달하기 위해서 사용합니다. name을 주면 페이지가 로딩될 때 자바 스크립트 등을 이용해서 원하는 text input에 focus를 줄 수도 있습니다.
  • size - text의 길이를 n byte 만큼 글자가 들어갈 길이로 하겠다는 것입니다. text 모양의 길이를 나타냅니다.
  • maxlength - text에 들어갈 수 있는 실제 글자의 길이를 byte로 정합니다. text에 들어갈 수 있는 실제 문자의 길이를 정합니다.
  • value - 서버로 넘길 값입니다. text input에 사용자가 입력한 값입니다.
  • 아래의 예에서 메일 주소 항목을 보면 메일 주소는 text input의 길이를 25 byte 만큼하고 최대로 들어갈 수 있는 글자를 25 byte로 한정하겠다는 이야기입니다. 25 바이트란 영문자나 숫자 25개가 들어갈 수 있는 길이를 말합니다. 참고로 한글은 한 자가 2byte를 차지합니다.
  • 그리고 value에 미리 값을 셋팅했습니다. Default로 값이 들어있어야 할 경우 아래와 같이 사용하면 편리합니다.

모양은 텍스트 입력과 같습니다. 아래의 소스와 형식을 참조하세요.

<FORM>
<font size="2">
받는 사람 메일 주소 :
<INPUT type="text" name="r_email" size="25" maxlength="25">
<br>
받는 사람 이름 :
<INPUT type="text" name="r_name" size="10" maxlength="10">
<br>
보내는 사람 메일 주소:
<INPUT type="text" name="s_email" size="25" maxlength="25" value=" ">
<br>
보내는 사람 이름 :
<INPUT type="text" name="s_name" size="10" maxlength="10" value="한마음">
</font>
</FORM>asanak@com.ne.kr

받는 사람 메일 주소 :
받는 사람 이름 :
보내는 사람 메일 주소:
보내는 사람 이름 :

4) 비밀번호

<INPUT type="password" name="text의 이름" size="n" maxlength="n">>

사용법은 text input과 동일합니다. 단지 차이가 있다면 type을 password로 주었다는 것입니다. 여러분 어느 사이트에 회원으로 가입하고 로그온 할 경우 아이디와 비밀번호 넣지요? 그리고 비밀번호에 키보드로 비밀번호를 입력하면 "*******" 와 같은 형태로 나타나죠? 이게 바로 password input을 사용한 것입니다.

<FORM action="mail.cgi" method="post"><font size="2">
아이디 :
<INPUT type="text" name="id" size="8" maxlength="8">
<br>
비밀번호 :
<INPUT type="password" name="password" size="8" maxlength="8">
<br>
</FORM>

아이디 :
비밀번호 :

사용된 항목은 위에서 설명한 것 처럼 text input과 동일합니다. 위에 아이디와 비밀번호를 적어보세요. 아이디는 입력한 문자가 나타나는데 비밀번호에는 "******"라고 적힐 겁니다.

5) Submit

<INPUT type="> submit" value="버튼 이름>

입력창 (text input과 password input 등)에 입력된 값을 서버로 전송하기 위한 버튼의 형태입니다. value 값을 지정하지 않으면 아마 버튼 Label이 "쿼리 전송" 이라고 나타날 겁니다. Form에 입력된 내용을 보낸다는 뜻으로 이해 하세요.

검색엔진이나 어느 사이트에 가입할 경우 "가입" 이나 "Search" 라는 버튼을 클릭하죠? 다음과 같이 하면 그렇게 나타납니다.

<INPUT type="submit" value="확인"> 또는 <INPUT type="submit" value="Search">

6) Reset

<INPUT type="reset" value="버튼 이름>

Form에 입력된 내용을 Clear할 경우에 사용하는 버튼의 형태입니다. 방명록이나 가입양식에서 입력된 내용을 Clear 하고자 할 경우 입력항목이 많은데 일일이 지우면 불편하죠? 이 버튼 하나면 한방에 끝납니다.

<FORM action="mail.cgi" method="post">
<font size="2">
받는 사람 메일 주소 :
<INPUT type="text" name="r_email" size="25" maxlength="25">
<br>
받는 사람 이름 :
<INPUT type="text" name="r_name" size="10" maxlength="10">
<br>
보내는 사람 메일 주소:
<INPUT type="text" name="s_email" size="25" maxlength="25" value="marcel@shinbiro.com">
<br>
보내는 사람 이름 :
<INPUT type="text" name="s_name" size="10" maxlength="10" value="한마음">
</font>
<INPUT type="submit" value="메일 보내기">
<INPUT type="reset" value="화면 지우기">
</FORM>

받는 사람 메일 주소 :
받는 사람 이름 :
보내는 사람 메일 주소:
보내는 사람 이름 :

<FORM action="mail.cgi" method="post"><font size="2">
아이디 :
<INPUT type="text" name="id" size="8" maxlength="8">
<br>
비밀번호 :
<INPUT type="password" name="password" size="8" maxlength="8">
<br>
<INPUT type="submit" value="확인">
<INPUT type="reset" value="취소">
</FORM>

아이디 :
비밀번호 :

7) 체크 박스(Check Box)

<INPUT type="checkbox" name="이름" value="값" checked>

input tag는 변함 없이, 단지 type이 checkbox

  • 체크박스(Checkbox)는 다중 선택이 가능합니다. 이것이 뒤에 설명할 라디오 버튼(Radio Button)과 다른 점이죠.
  • 체크박스(Checkbox)의 크기는 앞에서 다룬 텍스트나 암호처럼 그 크기를 지정할 수가 없습니다.
  • name - 이름입니다. 담배를 좋아하는 아버지가 아기를 낳았는데 첫째는 한갑, 둘째는 두갑... 막내는 보루 라구 이름을 짓듯이 앞에 네모난 체크박스 달고 다니는 이것도 이름을 줍니다.
  • value - 서버로 보내거나 실질적인 연산을 할 경우 사용되는 값입니다. 앞에서 Submit, Reset 버튼에도 value가 있었는데 버튼에 나타나는 텍스트를 나타냈었습니다.
    * 체크박스에서는 각 value값을 다 다르게 줘야합니다.
  • checked - Default로 체크되게 하고 싶을 경우 사용합니다. 밑의 예제에서 차가 젤 비싼 것 같아서 거기다가 기본으로 체크해 뒀습니다.

<html>
<head>
<title> 체크 박스 </title>
</head>
<body>
<font size="2">
당신이 좋아하는 음식을 모두 선택하세요?<p>
<form action="hahaha.cgi" method="post">
<input type="checkbox" name="food" value="apple">
사과&nbsp;
<input type="checkbox" name="food" value="banana">
바나나 &nbsp;
<input type="checkbox" name="food" value="orange">
오렌지&nbsp;
<input type="checkbox" name="food" value="pizza">
피자
<p>
당신이 받고 싶은 선물을 모두 선택하세요?<p>
<input type="checkbox" name="present" value="doll">
인형&nbsp;
<input type="checkbox" name="present" value="car" checked>
자동차&nbsp;
<input type="checkbox" name="present" value="computer">
컴퓨터
<p>
음.. 이제 서버로 자료를 보낼까요??<p>
<input type="submit" value="보내 버려^^*">
&nbsp;&nbsp;&nbsp;
<input type="reset" value="다시 골라???">
</form>
</font>
</body>
</html>

당신이 좋아하는 음식을 모두 선택하세요?

사과 바나나 오렌지 피자

당신이 받고 싶은 선물을 모두 선택하세요?

인형 자동차 컴퓨터

음.. 이제 서버로 자료를 보낼까요??

그런데 보니까 위에 보면 체크박스가 7개 있는데, 이름은 딸랑 두 개네요. 체크될 그룹마다 하나의 이름으로 주어야 합니다. 항목에 따라 적당히 이름을 주면 됩니다.

8) 라디오 버튼(Radio Button)

<INPUT type="radio" name="이름" value="값" checked>

라디오 버튼은 주로 투표할 경우 많이 사용됩니다. 대부분 설명이 체크박스와 비슷합니다.

  • 라이오 버튼은 체크박스(Checkbox)와는 달리 딱~ 한 개만 선택할 수 있습니다. 한 개라 함은 name이 같은 것 중 하나만 선택할 수 있다는 것을 의미합니다. 이제 같은 name을 여러 개의 체크박스나 라디오 버튼에 주는 이유를 좀 아시겠죠?
  • 라디오 버튼 역시 체크박스처럼 크기를 앞에서 다룬 텍스트나 암호처럼 그 크기를 지정할 수가 없습니다.
  • name - 이름입니다. 체크박스와 설명이 동일합니다.
  • value - 체크박스와 동일합니다.
  • checked - 체크박스와 마찬가지입니다.
    그런데 체크박스에서는 여러 개에 Default로 Checked라는 옵션을 줄 수 있지만 라디오 버튼에서는 한 개만 지정하세요. 두 세 개 지정해도 첨에는 지정을 될런지도 모릅니다. 그런데 의미가 없습니다.

그럼 위의 예를 라디오 버튼으로 바꿔볼까요?

<html>
<head>
<title> 체크 박스 </title>
</head>
<body>
<font size="2">
당신이 좋아하는 음식을 모두 선택하세요?<p>
<form action="hahaha.cgi" method="post">
<input type="radio" name="food" value="apple">
사과&nbsp;
<input type="radio" name="food" value="banana">
바나나 &nbsp;
<input type="radio" name="food" value="orange">
오렌지&nbsp;
<input type="radio" name="food" value="pizza">
피자
<p>
당신이 받고 싶은 선물을 모두 선택하세요?<p>
<input type="radio" name="present" value="doll">
인형&nbsp;
<input type="radio" name="present" value="car" checked>
자동차&nbsp;
<input type="radio" name="present" value="computer">
컴퓨터
<p>
음.. 이제 서버로 자료를 보낼까요??<p>
<input type="submit" value="보내 버려^^*">
&nbsp;&nbsp;&nbsp;
<input type="reset" value="다시 골라???">
</form>
</font>
</body>
</html>

당신이 좋아하는 음식을 모두 선택하세요?

사과 바나나 오렌지 피자

당신이 받고 싶은 선물을 모두 선택하세요?

인형 자동차 컴퓨터

음.. 이제 서버로 자료를 보낼까요??

체크박스나 라디오 버튼이 어떻게 사용되는지 이해가 가죠?

9) 선택목록(List Box or Drop Down List Box)

리스트 박스나 드롭다운 리스트 박스에 대한 내용입니다.

<SELECTname="이름" size="n" multiple> <OPTION value="값"> 항목 1
...
<OPTION value="값"> 항목 n

</SELECT>

  • size와 multiple을 생략하고 SELECT Tag에 name만 주면 드롭다운 리스트 박스가 됩니다.
  • size="n" - 리스트 박스에서 화면에 보일 항목의 갯수를 의미합니다. 물론 "n" 보다 많은 항목이 들어있다면 스크롤 바가 생기게 됩니다.
  • multiple - 리스트 박스에서 한번에 여러 개의 목록을 선택할 수 있게 하는 옵션입니다. Ctrl 키를 누른 상태에서 마우스로 콕콕 누르면 선택이 되지요. 아니면 Shift 키를 누른 상태에서 선택을 할 수도 있습니다.
  • <SELECT> ...</SELECT> tag 사이에는 항상 하나 이상의 <OPTION> Tag가 들어가야 합니다.
  • <OPTION value="값"> 항목 - value는 서버로 넘길 값을 의미하고 항목은 리스트 박스나 드롭다운 리스트 박스에 나타날 목록(항목)을 의미합니다.

<html>
<head>
<title> 드롭다운 리스트 박스 </title>
</head>
<body>
<font size="2">
드롭다운 리스트 박스입니다. 한 개만 선택이 가능합니다.
리스트를 클릭하면 목록이 나타납니다.<p>
<form action="list.cgi" method="post">
<select name="fruit">
<option value="apple"> 사과
<option value="banana"> 바나나
<option value="orange"> 오렌지
</select>
<p>
</form>
</font>
</body>

드롭다운 리스트 박스입니다. 한 개만 선택이 가능합니다. 리스트를 클릭하면 목록이 나타납니다.

<html>
<head>
<title> 리스트 박스 </title>
</head>
<body>
<font size="2">
먹고 싶은 과일을 하나만 선택하세요.<p>
<form action="list.cgi" method="post">
<select name="fruit" size="3">
<option value="apple"> 사과
<option value="banana"> 바나나
<option value="melon"> 메론
<option value="watermelon"> 수박
<option value="orange"> 오렌지
<option value="strawberry"> 오렌지
</select>
<p>
</form>
</font>
</body>

먹고 싶은 과일을 하나만 선택하세요.

<html>
<head>
<title> 리스트 박스 </title>
</head>
<body>
<font size="2">
먹고 싶은 과일을 전부 다 선택하세요.<p>
<form action="list.cgi" method="post">
<select name="fruit" size="3" multiple>
<option value="apple"> 사과
<option value="banana"> 바나나
<option value="melon"> 메론
<option value="watermelon"> 수박
<option value="orange"> 오렌지
<option value="strawberry"> 오렌지
</select>
<p>
</form>
</font>
</body>

먹고 싶은 과일을 전부 다 선택하세요.

'공부 > HTML CSS' 카테고리의 다른 글

테이블/DIV태그에서 글자길어지면 자동으로 잘라주고 ...넣기  (0) 2011.08.19
html 색상코드 표  (0) 2011.08.08
HTML TABLE 총정리  (0) 2011.06.13

Crontab 설정

공부/기타2011. 12. 15. 15:43

출처 : http://linuxgazette.net/151/prestia.html

Cronttab(이하 크론탭)은 작업을 일정한 시간에 주기적으로 실행시키기 위해서 사용하는 task 스케쥴링 프로그램이다. 이와 비슷한 프로그램으로 at(1)와 anacron(1)이 있다. at는 원하는 시간에 명령을 한번만실행 시키며, crontab과 같이 주기적으로 실행시키는 기능은 가지고 있지 않다. anacron은 이름에서알 수 있듯이 crontab와 거의 동일하게 사용할 수 있다. 다른점은 시스템 다운이나 anacron 프로그램의 다운 등의 이유로 해당시간에 실행되어야할 프로그램이 실행되지 않았다면, 이를 확인해서 다시 실행시켜준다는 점이다.

다음은 at의 간단한 사용예이다.
# echo "점심시간" | at "12:00"  

joinc는 많은 프로그램들이 주기적으로 돌아간다. 대략 다음과 같은 프로그램들이 주기적으로 작동하고 있다.
  1. 매 5분간격으로 rrd 통계데이터를 생성한다.
  2. 매 5분간격으로 spam 데이터들을 삭제한다.
  3. wiki log 파일을 파싱해서 title에 사용할 색인데이터를 생성한다.
  4. 매 10분 간격으로 cpu 사용율을 측정해서 rrd에 저장한다.
  5. 매 시간주기로 teamblog의 category 정보를 갱신한다.
  6. 매 시간주기로 teamblog에 등록된 블로그RSS정보를 수집한다.
이러한 프로그램들은 특성상 daemon 프로세스로 개발을 해야 할 것인데, 개발하고 관리하기가 보통 까다로운 작업이 아닐 것이란걸 예상할 수 있다. crontab을 사용하면 간단하게 주기적으로 실행하도록 할 수 있다.

crontab는 시스템 프로그램으로 리눅스 배포판에 관계없이 기본적으로 설치가 된다. 크론탭은 내부적으로 자체관리하는 설정파일을 가지고 있는데, 이를 이용해서 크론탭이 사용할 , 에디터 등과 주기적으로 실행할 스크립트를 지정할 수 있다.
[root@localhost ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/  # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly [root@localhost ~]#  

환경변수 영역

첫번째 영역에서는 몇가지 변수를 설정한다.

SHELL
등록된 프로그램을 실행시킬 쉘프로그램을 지정한다. 정의 하지 않을 경우 /bin/sh이 쉘 프로그램으로 지정된다.
PATH
cron은 별도로 쉘을 띄우귀 때문에, 쉘에서 프로그램을 찾기 위한 PATH도 지정해줄 필요가 있다. 왜냐하면 로그인을 해서 shell을 실행시키지 않으므로, 로그인과정에서의 PATH변수를 사용할 수 없기 때문이다.
MAILTO
cron이 수행한 작업의 결과를 mail로 보낼 수 있다. 위의 경우 root유저에게 메일을 전송한다. 만약 MAILTO를 설정하지 않으면 crontab의 실행유저에게 메일이 전송된다.
HOME
cront의 home 디렉토리경로를 설정한다. 기본적으로는 crontab의 실행유저의 홈디렉토리로 /etc/passwd에 설정된 경로를 따른다.

크론탭 포맷

크론탭은 총 6개의 필드로 구성되어 있다. 앞의 5개의 필드가 시간 지정을 위한 필드이고, 마지막 필드에 스케쥴링할 명령어를 지정한다. 아래와 같이 사용한다.
# min             hours        day        month          day      command    34               2           *            *             *       sh /root/backup.sh  
위의 예는 "sh /root/backup.sh"를 매일 2시 34분에 실행한다.

시간은 아래와 같이 5개의 단위로 분류된다.
0-59
0-23
1-31
1-12
주/일 0-6 일요일이 0이다.

별표 (*)는 all을 의미한다.

crontab 설정

크론탭은 유저별로 설정이 가능하다. 해당 유저로 로그인한 다음 "-e"옵션과 함께 crontab을 실행하면 된다. 이때 미리 설정된 에디터가 실행되어서 크론탭 정보를 편집할 수 있는 상태가 된다.
[root@localhost ~]# crontab -e  * * * * * /usr/bin/wall "Hello From Crontab"  
내용을 저장하고 정료하면 다음과 같은 메시지가 출력된다.
crontab: installing new crontab [root@localhost ~]#  
잠시 후, 아래의 메시지가 출력되는 걸 확인할 수 있을 것이다.
Broadcast message from root (Thu Apr  3 14:52:01 2008):  Hello From Crontab  
이 메시지는 매 분마다 출력된다. 왜냐하면 시간 필드의 모든 값을 *로 설정해서, "매월, 매일, 매시간, 매분 마다 실행"하기 때문이다. 어떤 이유로 크론탭을 정지시키고 싶다면 "-r"옵션과 함께 실행하면 된다.
[root@localhost ~]# crontab -r  

Now, say at a certain time in the future you need to start the Apache 'httpd' Web server. We could use a cron job to do this. First, we'll check to see that httpd is not running. Then, we'll do a "date" command to get the current time, so we can set the service to run in the future.

root@localhost ~# service httpd status
httpd is stopped
root@localhost ~#
root@localhost ~# date
Thu Apr 3 15:45:32 MST 2008
root@localhost ~#

We can now easily figure out what 10 minutes from now will be, execute crontab -e in the editor, and write a simple crontab file, remembering the format.

# min(0-59) hours(0-23) day(1-31) month(1-12) dow(0-6) command

55 15 * * * /sbin/service httpd start

For now, just use stars for the day, month, and day of week, and only one space between elements; some distros complain if you have more spaces. So, enter something like this:

55 15 * * * /sbin/service httpd start

root@localhost ~# crontab -e
crontab: Installing new crontab

If you made any mistakes, 'crontab' will tell you about it right as you close the editor. Assuming that everything was right, though, we will have the Apache Web server running less than ten minutes from now. You can use "crontab -l" to list your jobs at any time, to see what is in your crontab and when these jobs are set to run:

root@localhost ~# crontab -l
55 15 * * * /sbin/service httpd start

Yours should look similar. What this means, though, is that 'httpd' is still set to run every single day at the specified time. Again, we'll remove it by executing "crontab -r" to delete all the entries in the file.

root@localhost ~# crontab -r

The combinations seem endless. There are also additional variations for specifying time: "20-27" specifies a range; "3,4,7,8" mean just those intervals for that selection; and */5 would be every 5th interval. Another feature of cron is that, upon completion of a job, it will mail the command output to the user who set up the cron job unless that feature is disabled.
Some more samples

This crontab entry would run the command every 15 and 30 minutes after every hour, during the month of May:

15,30 * * 5 * /usr/bin/command

To run a backup script on just Sundays, Mondays, and Tuesdays at 2:12 AM, the entry would be:

12 2 * * 0-2 sh /root/backup.sh

To run a script at 12 minutes after every 3rd hour of every day, the entry would look like this:

12 */3 * * * sh /root/script.sh

To get cron to write the output of the commands to a log, you can append something like this to the command entry:

12 */3 * * * sh /root/script.sh >> /root/script.log 2>&1

To have cron suppress the e-mail:

12 */3 * * * sh /root/script.sh > /dev/null 2>&1

This is a sample of cron output that would end up in the mail

From root@localhost.localdomain Thu Apr 3 12:08:01 2008
Date: Thu, 3 Apr 2008 12:08:01 -0700
From: root@localhost.localdomain (Cron Daemon)
To: root@localhost.localdomain
Subject: Cron <root@localhost> sh /root/s.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env:<SHELL=/bin/sh>
X-Cron-Env:<HOME=/root>
X-Cron-Env:<PATH=/usr/bin:/bin>
X-Cron-Env:<LOGNAME=root>
X-Cron-Env:<USER=root>

test

Some tips for using cron:

  • Always use absolute paths.
  • If you're not sure your cron job completed, check your mail.
  • Remove unneeded cron entries from old cron jobs.
  • Make sure 'crond' is running.

Commands:

crontab -e - Edits the current crontab, or creates a new one.
crontab -l - Lists the contents of the crontab file.
crontab -r - Removes the crontab file.
crontab -u - Edits user's crontab.



/////

RONtab

/etc/cron, /usr/spool/cron/crontabs/*

/etc/cron" 프로그램 주기적으로 어떤 프로그램을 수행시키는데 사용된다.

이때 주기적으로 수행되어질 프로그램은 "/usr/spool/cron/crontabs" 디렉토리

밑에 사용자의 사용자명과 같은 이름으로 생성된다.

화일은 만드는 방법은 아래 명령을 사용하면 된다.

% crontab -l root : /var/spool/cron/crontabs/root 내용 display

% crontab -e root :

명령을 root 수행했으면 /var/spool/cron/crontabs/ DIR 하위에

"root" 라는 이름의 화일이 생성된다)

또는 vi 편집

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

)

# more /var/spool/cron/crontabs/root

# minute hour day month week

# 0~59 0~23 1~31 1~12 0~6 (0=sunday, 1=monday)

#

15,45 3 * * * find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune

5 9 * * 6 /usr/lib/newsyslog >/dev/null 2>&1

15 0,8 16 * * find /var/preserve/ -mtime +7 -a -exec rm -f {} \;

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

crontab 화일의 앞의 5번째 칼럼까지에는 명령이 수행되어질 일시와 요일이다.

지정한 것들은 아래와 같은 의미를 갖는다.

시간 날짜 요일 : 구분은 Space

15,45 3 * * * : 매일 3 15분관 45분에 수행

5 9 * * 6 : 매주 금요일 9 5분에 수행

15 1,18 16 * * : 매달 16 115분과 오후 6 15분에 수행

1) /var/spool/cron/crontabs/root (root계정으로 가정할때..)

파일을 편집하여 원하는 스케쥴을 설정/편집 한다.

2) ps -ef|grep cron : 현재 cron deamon 돌고 있는지 확인

3) kill -9 "pid of cron" : cron deamon kill

4) rm /usr/lib/cron/FIFO : lock파일제거(/usr/lib/cron directory /etc/cron.d 링크되어있음)

5) /usr/sbin/cron : deamon 재실행( 편집한 명령대로 수행함)

) vi /var/spool/cron/crontabs/root

###############################

#Min Hour Day Month Day Command

###############################

15 4 * * * find /var/preserve/ -mtime +7 -a -exec rm -f {} \;

0 23 * * * sh `sed -n 1p /etc/Alis`/janitor

0 * * * * /usr/lib/acct/ckpacct

10 12 * * 1-6 /usr/lib/acct/dodisk

20 12 1 * * /usr/lib/acct/monacct

30 12 * * 1-6 /usr/lib/acct/runacct 2> /var/adm/acct/nite/fd2log

log /var/cron/..... 생성됨

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

1. 개요 (cron이 뭐하는 것인지 전혀 모르는 분들만)

cron(크론)은 원하는 시간에 명령(프로그램)을 시키기 위한 데몬이다.
서버는 늘 깨어있다는 것을 이용한 최대한의 활용법이 될 수 있다.

- 내가 새벽 3시에 서버에 특정 작업을 해줘야하는데 그 때 깨어있을 수 있는가?
- 또는 30분간격으로 HDD의 사용량을 운영자에게 알리도록 해야한다면?
- 매월 초에 자료를 백업 받고 싶다면?

바로 이럴 때 cron은 최고의 해결책을 제시한다.
cron은 항상 지정한 시간이 되었는지 확인을 하여 해당 명령어을 실행하는 것이다.

2. cron 설정

1) crontab 파일 위치 및 조회

작업 설정 파일을 crontab 파일이라고 부르며, 이 파일의 위치는 OS별로 차이가 있다.
리눅스는 /var/spool/cron/ID, 솔라리스는 /var/spool/corn/crontabs/ID 에 위치한다.
그럼 이 파일을 직접 수정해야 하는가? 그렇지 않다. crontab 명령을 통해 설정과 조회를 한다.

설정 내용을 조회해 보자. (-l 옵션)


$ crontab -l
no crontab for truefeel


설정한 적이 없어 아직 비어있다.

2) crontab 파일 형식


------ -------- ---------------------------------------------------
필 드 의 미 범 위
------ -------- ---------------------------------------------------
첫번째 분 0-59
두번째 시 0-23
세번째 일 0-31
네번째 월 1-12
다섯번째 요일 0-7 (0 또는 7=일요일, 1=월, 2=화,...)
여섯번째 명령어 실행할 명령을 한줄로 쓴다.
------ -------- ---------------------------------------------------


- 한 줄당 하나의 명령 (두줄로 나눠서 표시할 수 없음)
- # 으로 시작하는 줄은 실행하지 않는다.

설정을 해보자. (-e 옵션)
crontab -e 을 하면 vi 에디터가 나온다.(환경변수 EDITOR에 따라 다른 에디터를 사용할 수 있다.)

$ crontab -e
# /home 디렉토리를 /BACKUP/home 으로 백업해둠
#
# 30분, 새벽 4시와 낮 12시, 모든 일, 모든 월, 모든 요일
30 4,12 * * * /usr/bin/rsync -avxH --delete /home /BACKUP/home > /dev/null 2>&1
#
# 파일/디렉토리 퍼미션 설정
# 40분, 새벽 1시, 매주 일요일
40 1 * * 0 /root/bin/perm_set.sh > /dev/null 2>&1



위는 매일 4:30분과 12:30분에 rsync 명령을, 매주 일요일 1:40분에 perm_set.sh를 실행함을 의미한다.

vi 에디터를 통해 설정을 하므로 중요한 몇 가지 에디터 사용법은 익혀야 한다.

---- -----------------------------------------------------------------------------
키 의미
---- -----------------------------------------------------------------------------
i 현재 칸에 글을 넣는다.
o 다음줄에 글을 넣는다.
dd 한줄을 삭제한다.
:wq 저장하고 빠져나온다.
ESC 설정중에 명령어 모드(위의 i, o, dd 등을 사용할 수 있는 상태)로 빠져 나온다.
---- -----------------------------------------------------------------------------


3) 설정 예

시간 설정에서 몇가지 의미있는 것들을 알아보자.

- '*'표시는 해당 필드의 모든 시간을 의미한다.
- 3,5,7 와 같이 콤마(,)로 구분하여 여러 시간대를 지정할 수 있다.
- 2-10와 같이 하이픈(-)으로 시간 범위도 지정할 수 있다.
- 2-10/3와 같이 하이픈(-)으로 시간 범위를 슬래쉬(/)로 시간 간격을 지정할 수 있다.
(2~10까지 3간격으로. 즉, 3,6,9를 의미함)



원하는 시간 형 식
매주 토요일 새벽 2:20 20 2 * * 6 명령어
매일 오후 4,5,6시 0 4-6 * * * 명령어
매일 2시간간격으로 5분대에 5 */2 * * * 명령어
매월 1일 새벽 1:15 15 1 1 * * 명령어
1,7월 1일 새벽 0:30 30 0 1 1,7 * 명령어


3. FAQ

1) cron 설정한 후에는 crond 데몬을 재실행해야 하나요?

아닙니다. crontab -e 으로 설정 후 빠져나오면 바로 적용됩니다.

2) truefeel 사용자는 cron을 못 쓰게 하고 싶습니다.

/etc/cron.allow : 허용할 사용자 ID 목록
/etc/cron.deny : 거부할 사용자 ID 목록

cron.allow 파일이 있으면 이 파일에 들어있는 ID만 사용 가능
cron.deny 파일이 있으면 이 파일에 들어있는 ID는 사용 불가

따라서 cron.deny에 truefeel ID를 추가해주면 됩니다.

3) > /dev/null 2>&1 이 무슨 뜻입니까?

지정한 명령어 처리 결과와 발생할지 모르는 에러메시지를 출력하지 않고 모두 버린다는(/dev/null)는
뜻입니다. 만약 결과와 에러를 파일로 저장하려면 /dev/null 대신 파일명을 적어주면 됩니다.

'공부 > 기타' 카테고리의 다른 글

이클립스 단축키  (0) 2012.01.27
토드 단축키  (0) 2012.01.04
L4 로드밸런싱  (3) 2011.11.08
조인쿼리 정리  (0) 2011.06.13
OpenAPI OAuth  (0) 2011.06.13

리눅스 기본명령어

공부2011. 12. 15. 15:10

퍼미션(권한)이란?

Owner

Group

Other

Owner와 Group은 파일소유자자신과 자신이 속한그룹. Other은 제3자, 웹사이트 방문객은 제3자로 nobody로 취급.

r

w

x

r

w

x

r

w

x

r은 파일 읽기(4), w는 파일 쓰기(2), x는 파일 실행(1)

7

5

5

파일소유자는 그것을 읽고 쓰고 실행시킬 수 있지만, 제3자는 읽고 실행만 시킬 수 있다.

7

7

7

제3자도 쓰기 권한이 주어진다.

*.html *.cgi, *.pl *.txt등의 파일은 업로드시 반드시 ascii로 하고 나머지 그림(*.gif *.jpg)이나 자바 애플릿(*.class), 실행파일(*.exe *.zip *.rar)등은 binary mode로 업로드 할 것.

리눅스 기본명령어

명령어

사 용 법

login

사용자 인증과정

리눅스 시스템은 기본적으로 multi-user 개념에서 시작하였기 때문에 시스템을 이용하기 위해서는 반드시 로그인을 하여야 합니 다. 로그인은 PC 통신에서도 많이 사용되어져 왔기 때문에 그 개 념 설정에 그다지 어려움이 없을 것입니다. 흔히 말하는 ID를 입력하는 과정입니다.

passwd

패스워드 변경

리눅스, 특히 인터넷의 세계에서는 일반 컴퓨팅 상황에 비하여 훨씬 해킹에 대한 위험이 높습니다. 패스워드는 완성된 단어 보다는 단어 중간에 숫자나 키보드의 ^, #, ' 등과 같은 쉽게 연상 할 수 없는 기호를 삽입하여 만들어 주는 것이 좋습니다

du

하드사용량 체크(chkdsk)

자신의 하드공간을 알려면
# du
특정 디렉토리의 사용량을 알려면
# du -s diretory_name

ls

파일 리스트 보기(dir)

F : 파일 유형을 나타내는 기호를 파일명 끝에 표시
(디렉토리는 '/', 실행파일은 '*', 심볼릭 링크는 '@'가 나타남).
l : 파일에 관한 상세 정보를 나타냅니다.
a : dot 파일(.access 등)을 포함한 모든 파일 표시.
t : 파일이 생성된 시간별로 표시
C : 도스의 dir/w명령과 같 이 한줄에 여러개의 정보를 표시
R : 도스의 dir/s 명령과 같이 서브디렉토리 내용까지.

(예)
# ls -al
# ls -aC
# ls -R

cd

디렉토리를 변경

# cd cgi-bin : 하부 디렉토리인 cgi-bin으로 들어감.
# cd .. : 상위디렉토리로 이동
# cd 또는 cd ~ : 어느곳에서든지 자기 홈디렉토리로 바로 이동
# cd /webker : 현재 작업중인 디렉토리의 하위나 상위 디렉토리가
아닌 다른 디렉토리(webker)로 이동하려면 /로
시작해서 경로이름을 입력하면 된다.

cp

화일 복사(copy)

# cp index.html index.old
: index.html 화일을 index.old 란 이름으로 복사.

# cp /home/test/*.* .
: test 디렉토리내의 모든 화일을 현 디렉토리로 복사.

mv

파일이름(rename) / 위치(move)변경

# mv index.htm index.html
: index.htm 화일을 index.html 로 이름 변경

$ mv file ../main/new_file
: 파일의 위치변경

mkdir

디렉토리 생성

# mkdir download : download 디렉토리 생성

rm

화일삭제

# rm test.html : test.html 화일 삭제
# rm -r <디렉토리> : 디렉토리 전체를 삭제
# rm -i a.*
: a로 시작하는 모든 파일을 일일이 삭제할 것인지 확인하면서 삭제

rmdir

디렉토리 삭제

# rmdir cgi-bin : cgi-bin 디렉토리 삭제

pwd

현재의 디렉토리 경로를 보여주기

pico

리눅스용 에디터

put

ftp 상태에서 화일 업로드

> put guestbook.tar.gz

get

ftp 상태에서 화일 다운로드

> get guestbook.tar.gz

mput 또는 mget

여러개의 화일을 올리고 내릴때 (put,get과 사용법동일)

chmod

화일 permission 변경

리눅스에서는 각 화일과 디렉토리에 사용권한을 부여.

예) -rwxr-xr-x guestbookt.html
rwx :처음 3개 문자 = 사용자 자신의 사용 권한
r-x :그다음 3개 문자 = 그룹 사용자의 사용 권한
r-x :마지막 3개 문자 = 전체 사용자의 사용 권한

읽기(read)---------- 화일 읽기 권한
쓰기(write)---------- 화일 쓰기 권한
실행(execution)---------- 화일 실행 권한
없음(-)---------- 사용권한 없음

명령어 사용법
chmod [변경모드] [파일]

# chmod 666 guestbook.html
: test.html 화일을 자신에게만 r,w,x 권한을 줌

# chmod 766 guestbook.html
: 자신은 모든 권한을 그룹사용자와,전체사용자에게는
읽기와 쓰기 권한만 줌

alias

" doskey alias" 와 비슷하게 이용할 수 있는 쉘 명령어 alias는 말그대로 별명입니다. 사용자는 alias를 이용하여 긴 유 닉스 명령어를 간단하게 줄여서 사용할 수도 있습니다.
이들 앨리어스는 [alias ls 'ls -al'] 같이 사용하시면 되는데, 한 번 지정한 alias를 계속해서 이용하시려면, 자신의 홈디렉토리에 있는
.cshrc(Hidden 속성)을 pico등의 에디터를 이용하여 변경시 키면 됩니다.

cat

파일의 내용을 화면에 출력하거나 파일을 만드는 명령( 도스의 TYPE명령)

# cat filename

more

cat 명령어는 실행을 시키면 한 화면을 넘기는 파일일 경우 그 내용을 모두 볼수가 없다. 하지만 more 명령어를 사용하면 한 화면 단위로 보여줄 수 있어 유용.

# more <옵션>
옵션은 다음과 같습니다.

Space bar : 다음 페이지
Return(enter) key : 다음 줄
v : vi 편집기로 전환
/str : str 문자를 찾음
b : 이전 페이지
q : more 상태를 빠져나감
h : 도움말
= : 현재 line number를 보여줌

who

현재 시스템에 login 하고 있는 사용자의 리스트를 보여줍니다.

# who

whereis

소스, 실행파일, 메뉴얼 등의 위치를 알려줍니다

# whereis perl : perl의 위치를 알려준다

vi,
touch,
cat

새로운 파일을 만드는 방법

# vi newfile : vi 편집기 상태로 들어감
# touch newfile : 빈 파일만 생성됨
# cat > newfile : vi 편집기 상태로 들어감, 문서 작성후 Ctrl+D로 빠져나옴

cat,
head,
tail

파일 내용만 보기

# cat filename : 파일의 내용을 모두 보여줌
# head -n filename : n줄 만큼 위세서부터 보여줌
# tail -n filename : n줄 만큼 아래에서부터 보여줌

압축명령어 사용법

압축 명령어

사 용 법

tar .tar, _tar로 된 파일을 묶거나 풀때 사용하는 명령어
(압축파일이 아님)

# tar cvf [파일명(.tar, _tar)] 압축할 파일(또는 디렉토리): 묶을때
# tar xvf [파일명(.tar, _tar)] : 풀 때
(cf) cvfp/xvfp 로 하면 퍼미션 부동
compress 확장자 .Z 형태의 압축파일 생성

# compress [파일명] : 압축시
# uncompress [파일명] : 해제시
gzip 확장자 .gz, .z 형태의 압축파일 생성

# gzip [파일명] : 압축시
# gzip -d [파일명] : 해제시
기타 .tar.Z
이것은 tar로 묶은 후에 compress를 사용하여 압축한 것으로 uncompress를 사용해서 압축을 푼 다음,
다시 tar를 사용해서 원래의 파일들을 만들어내면 됩니다.
아니면 다음과 같이 한 번에 풀 수도 있다.
# zcat [파일명].tar.Z : 해제시

.tar.gz또는 .tar.z
# gzip -cd [파일명] : 해제시

.tar.gz 또는 .tar.z .tgz
gzip을 사용해서 푼 다음 다시 tar를 사용해서 원래 파일을 만들어 낼 수 있으나,
하지만 다음과 같이 하면 한 번에 처리를 할 수 있다.

# gzip -cd 파일.tar.gz | tar xvf - 또는
# tar xvzf 파일.tar.gz
# tar xvzf 파일.tgz

리눅스 필수명령어

Linux/Unix 명령어

설 명

MS-DOS 비교

./x

x 프로그램 실행
(현재 디렉토리에 있는 것)

x

/

이전에(↑) / 다음에(↓) 입력했던 명령어

doskey

cd x (또는 cd /x)

디렉토리 X로 가기

cd

cd .. (또는 cd ../ 또는 cd /..)

한 디렉토리 위로 가기

cd..

x 다음 [tab] [tab]

x 로 시작하는 모든 명령어 보기

-

adduser

시스템에 사용자 추가

/

ls (또는 dir)

디렉토리 내부 보여주기

dir

cat

터미널 상의 텍스트 파일 보기

type

mv x y

파일 x를 파일 y로 바꾸거나 옮기기

move

cp x y

파일 x를 파일 y로 복사하기

copy

rm x

파일 지우기

del

mkdir x

디렉토리 만들기

md

rmdir x

디렉토리 지우기

rd

rm -r x

디렉토리 x를 지우고 하위도 다 지우기

deltree

rm p

패키지 지우기

-

df (또는 df x)

장치 x의 남은 공간 보여주기

chkdsk ?

top

메모리 상태 보여주기(q는 종료)

mem

man x

명령어 x에 관한 매뉴얼 페이지 얻기

/

less x

텍스트 파일 x 보기
(리눅스에서는 더 많은 필터 적용 가능)

type x | more

echo

어떤 것을 echo 화면에 인쇄한다.

echo

mc

UNIX를 위한 노턴 커맨더

nc

mount

장치 연결(예: CD-ROM, 연결을 해제하려면 umount)

-

halt

시스템 종료

-

reboot ([ctrl] + [alt] +[del])

시스템 다시 시작하기

[ctrl] + [del] + [del]

고급명령어

고급 명령어

chmod <권한> <파일>

파일 권한(permissions) 변경

ls -l x

파일 x의 자세한 상황을 보여줌

ln -s x y

x에서 y로 심볼릭 링크를 만들어 줌

find x -name y -print

디렉토리 x안에서 파일 y를 찾아서 화면에 그 결과를 보여줌

ps

지금 작동중인 모든 프로세스들을 보여줌

kill x

프로세스 x를 종료 (x는 ps 명령으로 알 게 된 PID)

[alt] + F1 - F7

터미널 1-7까지 바꾸기 (텍스트 터미널에서; F7은 X-윈도우(시작될때))

lilo

부트 디스크를 만듦

용어

symlink

다른 파일이나 디렉토리로 심볼릭 링크. 윈도유98의 바로가기 같은 것

shell script

여러 명령어들을 차례로 수행하게 한 것. MS-DOS의 배치 파일 같은 것

팁!!

- 웹에서 생성한 노바디파일 삭제 하는방법..

기본적으로 웹서버는 nobody 권한으로 동작이 되게 됩니다.
고객님께서 FTP 로 접속하여 전송한 파일이 아니라 웹상에서 사용자들이 파일을 업로드 한 경우나 웹상에서 생성된 파일의 경우 삭제가 되지 않는 경우가 있을 수 있습니다.

웹서버의 동작 권한은 nobody 이고 웹상에서 생성된 파일이므로 해당 파일이 nobody 소유권으로 시스템에 생성이 되게 됩니다.

아래와 같이 웹상에서 실행시키면 됩니다.

1. 메모장을 열어 아래 소스를 붙여넣기 하신후..

<?

//폴더/파일 삭제시

$cmd = `rm -rf 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "폴더가 삭제 되었습니다.";

?>

-- 위에까지..
-- **위에서 수정할 사항은 "노버디로된파일혹은폴더명"을 삭제하시고자 하는 파일명으로 바꿔주세요..

2. 파일 -> 다른이름으로저장 -> 아래 탭에서 파일형식을 "모든파일"로 선택후

-> "원하는파일명.php" 로 저장 (ex: del.php)

3. ftp를 통해 고객계정에 파일업로드를 하시고 웹에서 파일을 불러주시면 됩니다

ex: html폴더안에/temp 안에 삭제하고자하는 파일이 있을경우 / html폴더/temp안에 del.php를 업로드하고..

브라우저에서 http://고객도메인/temp/del.php 를 하면 됩니다

4. 실행하시면 삭제되고 nobody 권한의 폴더만 남습니다.(폴더안의화일들만 지워짐)

그후 ftp 접속후 폴더를 삭제하시면 됩니다.

ex)

<?

퍼미션 변경시

$cmd = `chmod -R 777 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "퍼미션 변경되었습니다.";

?>


/////////////////////

출처 : http://blog.daum.net/warmfeel/72

addbib - 도서목록 형식의 데이터베이스를 만들거나, 확장
apropos - 사용설명서의 키워드 검색
ar - 라이브러리 만들기, 관리
at, batch - 원하는 시간에 원하는 명령을 실해하게 하는 명령
awk - 패턴 검색과 언어 처리
banner - 큰 글자(배너) 만들기
basename - 경로 이름에서 마지막에 있는 이름만 출력
biff - 자신에게 편지가 배달되면 알려주는 명령
bin-mail, binmail - 예전에 사용한 전자우편 프로그램
cal - 달력보기
calendar - 간단한 일정표
cat - 파일 병합과 내용 보기
cb - 간단한 C 프로그램 beautifier(?)
cc - C 컴파일러
cd - 작업 디렉토리 바꾸기
checknr - nroff 또는 troff 입력 파일 검사; 오류를 보여준다
chgrp - 파일의 사용자 그룹 바꾸기
chmod - 파일의 접근 권한 바꾸기
clear - 터미날 화면 깨끗이 하기
cmp - 두 파일을 바이트 단위로 비교
colcrt - troff 파일의 밑줄 속성 문자 처리
comm - 지정 두파일의 줄 단위 비교와 그 처리
compress, uncompress, zcat - 파일 압축관련 유틸리티들
cp - 파일 복사
cpio - copy file archives in and out
cpp - C 언어 전처리기
csh - C 문법과 비슷한 쉘 스크립트 문법과 기타 여러 기능이 내장된 쉘
ctags - ex 나 vi 편집기에서 사용될 tag 파일을 만드는 명령
date - 시스템 시간 보기나 지정하기
dbx - 소스 수준의 디버거
deroff - nroff, troff, tbl, eqn 관련 내용 지움
df - disk free: 디스크의 남은 용량 보기
diff - 두 파일의 차이점 비교
du - disk used : 디스크 사용량 보기
echo - 인자를 표준 출력으로 출력
ed, red - 기본 줄 편집기
eqn, neqn, checkeq - 수식 표현 포멧 도구
error - 컴파일러 오류 메시지 목록
ex, edit, e - 줄 편집기
expand, unexpand - TAB 문자를 공백문자로 바꿈, 또는 그 반대로
expr - 인자를 수식으로 처리
file - 파일 형식 알아보기
find - 파일 찾기
finger - 사용자 정보 알아보기
fmt, fmt_mail - 간단한 문서나, 편지 포멧 도구
fold - 긴 줄 출력 방법 지정
ftp - 파일 전송 프로그램
gcore - 실행 중인 프로세스의 core 이미지를 구한다.
gprof - call-graph profile data(?)를 보여줌
grep - 문자열 찾기
groups - 사용자의 그룹을 보여줌
history - 이전 명령 보기
hostname - 현재 시스템 이름을 보여줌
imake - makefile 만드는 프로그램
indent - C 프로그램 소스 파일을 들여쓰기 하는 포멧 도구
install - 파일 설치
join - 관계형 데이터베이스 연산자
kill - 프로세스 stop :-)
last - 사용자가 마지막 접속 상태를 보여줌
ld, ld.so - 링크 편집기, 동적 링크 편집기
leave - 자신의 접속 종료 시간을 알려줌
less - more 명령의 확장
lex - 어휘 분석 프로그램 생성기
lint - C 프로그램 verifier
ln - 파일의 하드, 심벌릭 링크 명령
login - 시스템 접속 명령
look - 시스템 디렉토리나, 정열된 목록에서 단어 찾기
lookbib - 도서목록형 데이타베이스에서 찾기
lorder - 오브젝트 라이브러리의 관계 찾기
lp, cancel - 인쇄 시작, 취소
lpq - 인쇄 작업 상황 보기
lpr - 인쇄
lprm - 인쇄 작업 지우기
ls - 디렉토리 내용 보기
mail, Mail - 전자 우편 프로그램
make - 실행 파일을 만들거나, 특정 작업 파일을 만들 때 사용하는 도구
man - 온라인 사용자 설명서를 보는 명령
mesg - 메시지 수신 상태를 보거나 지정
mkdir - 디렉토리 만들기
mkstr - C 소스 파일을 참조로 오류 메시지 파일을 만듬.
more, page - 텍스트 파일 보기 명령
mv - 파일 이동이나, 이름 바꾸기
nawk - 패턴 검색과 언어 처리
nice - 낮은 우선권에서 명령 실행
nm - 심블 이름 목록 보기
nroff - 문서 포멧 도구
od - 8진수, 10진수, 16진수, ascii 덤프
passwd, chfn, chsh - 비밀번호, 핑거정보, 쉘 바꾸기
paste - 여러파일의 서로 관련 있는 줄 연결시키기
pr - 문서 파일 양식화 도구
printenv - 현재 환경 변수들의 내용과 그 값 알아보기
prof - profile 자료 보기
ps - 현재 프로세스 정보 보기
ptx - permuted(순열화된?, 교환된?) 색인 만들기
pwd - 현재 작업 디렉토리 보기
quota - 한 사용자에게 지정된 디스크 할당량보기
ranlib - archive를 random 라이브러리로 변화
rcp - 리모트 카피
rcs - RCS 파일 속성 바꾸기
rcsdiff - RCS revisions 비교
rev - 한 줄의 문자열 꺼꾸로
rlogin - 리모트 로그인
rm, rmdir - 파일, 디렉토리 지우기
roffbib - 도서목록형 데이터베이스 보기 또는 양식화
rsh - 리모트 쉘
rup - 로칼 머쉰의 호스트 상태 보기(RPC version)
ruptime - 로칼 머쉰의 호스트 상태 보기
rusers - 현재 접속자 보기 (RPC version)
rwall - 모든 사용자에게 알림(RPC)
rwho - 현재 접속자 보기
sccs - Source Code Control System (SCCS)
sccs-admin, admin - SCCS 사용 내역 파일을 만들고, 관리
sccs-cdc, cdc - SCCS 델타의 델파 주석을 바꿈
sccs-comb, comb - SCCS 델타 조합
sccs-delta, delta - SCCS 파일에 데해 델타를 만듬
sccs-get, get - SCCS 파일 버전확인
sccs-help, help - SCCS 오류나 경고 메시지 검색
sccs-prs, prs - SCCS 사용내역의 선택된 부분 보기
sccs-prt, prt - SCCS 파일에서 델타 테이블 정보를 봄
sccs-rmdel, rmdel - SCCS 파일에서 델타를 지움
sccs-sact, sact - SCCS 파일의 편집 상태를 봄
sccs-sccsdiff, sccsdiff - SCCS 파일들의 버전 비교
sccs-unget, unget - SCCS 파일의 미리 얻은 것(?)을 취소한다.
sccs-val, val - SCCS 파일 유요화
script - 화면 갈무리
sed - stream editor
sh - 유닉스 표준 쉘
size - 오브젝트 파일의 크기들을 보여줌
sleep - 지정한 시간 만큼 실행 보류
sort - 줄 정열과 검색
sortbib - 도서목록형 데이터베이스 정열
spell, hashmake, spellin, hashcheck - 맞춤범 검사(물론 영어겠지요)
split - 파일 나누기
strings - 오브젝트 파일이나, 실행 파일에서 문자열 찾기
strip - 오브젝트 파일에서 심벌 테이블과 중복된 비트 삭제
stty - 터미날 설정
su - super-user, 임시적으로 새 ID로 바꿈
symorder - 심벌 순서 바꿈
tabs - 터미날 tab 크기 지정
tail - 파일의 끝 부분 보기
talk - 다른 사용자와 이야기하기
tar - 여러 파일 묶기 또는 묶긴 파일 풀기
tbl - nroff 또는 troff의 도표 작성 도구
tee - 표준 출력으로 방향 전환
telnet - TELNET 프로토콜을 이용한 원격 리모트 호스트 접속
test - 주워진 환경이 참인지, 거짓인지를 돌려줌
tftp - 간단한 ftp.
time - 명령 실행 시간 계산
touch - 파일 날짜 관련 부분을 바꿈
troff - 문서 양식화 도구
true, false - 쉘 스크립트에서 사용되는 참/거짓을 리턴하는 명령
tsort - topological sort
tty - 현재 터미날 이름 보기
ue - MICROemacs
ul - 밑줄 속성 문자 표현
unifdef - cpp 입력 줄에서 ifdef 부분 바꾸거나 지움
uniq - 중복되는 빈줄 지우기
units - 프로그램 변환도구
uptime - 시스템 부팅 기간 보기
users - 현재 접속 사용자 보기
uucp, uulog, uuname - 시스템 간의 복사
uuencode, uudecode - 이진 파일을 아스키파일로 인코딩, 반대로 디코딩
uusend - 리모트 호스트에 파일 보내기
uux - 리모트 시스템 명령 실행
vacation - 자동으로 편지 답장하기
vgrind - grind nice program listings
vi, view, vedit - ex 바탕의 편집기
vtroff - 문서 양식화 도구
w - 현재 누가 접속해 있으며, 무엇을 하고있는지
wait - 프로세스가 마치기를 기다림
wall - 모든 사용자에게 알림
wc - 단어, 줄, 바이트 계산
what - 파일에서 SCCS 버전 정보 알아냄
whatis - 명령의 간단한 설명 보여줌
whereis - 찾는 명령의 실행파일, 소스, 맨페이지가 어디 있는지 경로를 보여 줌
which - 명령만 찾음.
who - 시스템에 접속되어 있는 사람만 보여줌
whoami - 현재 사용하고 있는 자신이 누군지 보여줌
write - 다른 사용자의 화면에 특정 내용을 알림
xargs - 명령행 인자 처리 명령
xstr - extract strings from C programs to implement shared strings
yacc - yet another compiler-compiler: 파싱(형태소분석) 프로그램 생성기
yes - 항상 yes만 응답하는 명령
zcat - 압축 파일 내용보기




[2]명령어 상세


adduser
루트로 로그인해서 이용자를 추가
$ adduser [ID]


admin
SCCS(Source code control system) 파일을 작성 또는 관리를 위한 명령어
$ admin [-nirtfdaemyhz] files
-n : 신규 SCCS 화일을 작성
-i[name] : 신규 SCCS 화일에 등록된 화일명(name)
-f : flag SCCS 화일에 등록하는 플래그들의 값을 지정
-r : 번호 초기 델타의 릴리즈 번호 지정은 -i와 함께 사용
-t[name] : SCCS 화일의 주석문으로 등록되는 화일명(name)
-e : login 델타 작성 가능한 사용자 리스트로 부터 삭제되는 로그인명
-h : 신규 check sum을 계산하고 기존 check sum과 비교
-z : check sum을 계산하여 SCCS 화일에 기록


alias
자주 쓰이는 명령어를 쓰기 편하게 바꾸는 명령
$ alias [새로만들 명령어]='[기존 명령어] [옵션]'


$ alias cp='cp -i'
$ alias la='ls $LS_OPTIONS -a'
$ alias less='less -rf'
$ alias lf='ls $LS_OPTIONS -F'
$ alias ll='ls $LS_OPTIONS -l'
$ alias ls='ls $LS_OPTIONS'
$ alias mv='mv -i'
$ alias rm='rm -i'
$ alias dir='ls -al


ar
아카이브 화일에 있는 화일의 그룹들을 유지 관리하는 명령어
$ ar [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...
$ ar -M [<mri-script]


d : delete file(s) from the archive
m[ab] : move file(s) in the archive
p : print file(s) found in the archive
q[f] : quick append file(s) to the archive
r[ab][f][u] : replace existing or insert new file(s) into the archive
t : display contents of archive
x[o] : extract file(s) from the archive
command specific modifiers:
[a] : put file(s) after [member-name]
[b] : put file(s) before [member-name] (same as [i])
[N] : use instance [count] of name
[f] : truncate inserted file names
[P] : use full path names when matching
[o] : preserve original dates
[u] : only replace files that are newer than current archive contents
generic modifiers:
[c] : do not warn if the library had to be created
[s] : create an archive index (cf. ranlib)
[S] : do not build a symbol table
[v] : be verbose
[V] : display the version number
[-X32_64] : (ignored)


at
프로그램을 지금이 아닌 나중에 실행하도록 예약한다.
$ at [option]
-q 큐 : 대소문자 알파벳으로 큐를 지정한다. 순서적으로 빠른 알파벳이 지정된 큐 일수록 CPU 시간 점유 우선권이 낮다.
-r 작업번호 : 큐에서 작업 번호가 지시하는 작업을 지운다. 슈퍼유저가 아니라면 자신의 작업만을 지울 수 있다.
-l : 현재 계획된 작업들의 목록을 보여준다. 슈퍼 유저라면 모든 작업들의 계획목록을 보여준다.
-m : 작업이 완결되면 사용자에게 메일을 보낸다.
-f filename : 표준 입력이 아닌 지시된 파일에서 작업을 읽어온다.
ps- 수행 시간 지정 명령어 -->at 11:30 pm


awk
program file에서 기술된 pattern들 중 일치되는 line 을 찾기 위해 입력 화일을 검색하는 명령어
$ awk [-Fc] [profile] [file] ...
$ awk [-Fc] [-f profile] [file] ...
-Fc : 입력필드의 구분기호로서 c를 이용
-f : progam file로서 다음 인수 사용


background : 하나의 명령을 수행시킨후 그 수행의 종료 이전에 다른 명령을 수행 하는 것
명령어 끝에 &로 표시 (cc -o test1 test1.c &)


banner
인수로 주어진 문자열을 큰 글씨로 만들어서 출력
$ banner [ -w [숫자] ] 문자열
-w : 옵션 지정만 하면 80 칼럼으로 폭을 바꾼다. 지정하지 않으면 132 칼럼으로 내정되어 있다. -w 옵션 뒤에 숫자를 지정하면 원하는 폭으로 조정할 수 있다.


bang
'!' 문자를 부르는 말로, C shell에서 '!!'를 명령어 라인에 입력하면, 마지막 명령을 반복하며, Bang!Bang!(뱅뱅)이라고 부른다.


bash
bash 셸이 아닌 사용자가 셸을 변경하고자 할 때 사용하는 명령입니다.
bash셸은 일반적으로 Linux의 기본 셸로 지정되어 있습니다.
만약 다른 셸을 사용하고 있으면서 bash 셸로 바꾸기 위한 명령은 다음과 같습니다.
# bash (enter)'


bc
C Language와 유사한 대화식 번역기이며 무제한 정도의 연산을 제공하는 명령어
$ bc [-cl] [file ... ]
-c : compile만 한다
-l : 임의 정밀도의 수학 library명을 의미


bg %1( " ) : 포그라운드로 " " 백그라운드로 전환

biff
전자우편의 수신을 즉시 알려주는 동작을 가능하게 할 것인지 그렇지 않은 지의 여부를 보여주거나 결정
$ biff [ y 혹은 n]

닉스 셸은 사용중이라도 주기적으로 전자우편의 수신 여부를 점검한다. 만일 사용자가 전자우편이 도착하는 즉시 알고자 한다면
biff를 사용하여 그것을 지시할 수 있다. 또는 언제라도 그 기능을 해제할 수도 있다. biff는 인수없이 사용되면 현재 어떤
상태로 되어 있는지 보여준다. 기능 설정과 해제 여부는 y 혹은 n 인수를 주어서 결정한다.


bzip2
자료를 압축하기 위한 새로운 알고리즘이다. 보통은 gzip으로 한 것의 60-70%의 크기로 압축한다.
bzip2는 압축률과 복원률에서 탁월한 성능을 자랑하고 있다. 또한 UNIX 및 WIN32에서 모두 사용할 수 있으며 프로그램은 GNU을 따르므로 누구든지 사용할 수 있다.


cal
서기 원년부터 9999년까지의 달력을 볼 수 있다 .
$ cal [-jy] [ [ 달 ] 연도 ]
-j : 1월 1일부터 날짜수를 계산하는 julian 날짜를 표시한다.
-y : 올해의 달력을 표시한다.
cal 9 1995 : unix 시스템에 내장되어있는 달력을 화면에 출력


cancel [print name] ; 프린터 취소

cat
파일의 내용을 표준 출력으로 내보내어, 파일내용을 알아보거나, 여러 파일을 하나의 파일로 출력하여 연결합니다. 또는 표준 입력으로부터 파일을 만들 수도 있습니다.
$ cat [option] file_name(s)
-b : 공백 외의 글자가 있는 모든 행의 개수를 센다.
-e : 제어 문자를 ^ 형태로 출력하면서, 각 행의 끝에 $를 추가한다. -vE와 같다.
-n : 각 행을 출력하면서 행 번호를 함께 첨부한다.
-s : 중복되고 겹치는 빈 행은 하나의 빈 행으로 처리한다.
-r : 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다. -vT와 같다.
-u : 유닉스 호환성을 위해 추가된 옵션으로서 무시된다.
-v : tab과 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
-E : 각 행마다 끝에 $ 문자를 출력한다.
-T : 시로서 탭(tab) 문자를 출력한다.
-A : -vET 옵션을 사용한 것과 같은 효과를 가진다.


cat address.list : 파일의 내용을 화면에 출력한다

cat : 파일을 작성하거나 파일의 내용을 간단하게 출력
# cat test1.c
# cat > test1.c


cc
C Language를 compile 하는 compiler
$ cc [option] file
-c : compile의 linkage editor 단계를 억제한다
-E : 지정된 C program에 대해 cpp만을 실행하고 결과는 표준출력하지 않는다
-f : C program에서 부동소수점을 포함하는 코드를 linkage editor시킨다
-o : outfile outfile이라는 화일명으로 목적프로그램을 저장하며 생략시는 a.out에 저장
-s : C program을 compile 하지만 assemble하지 않으며 어셈블리 언어 출력은 .S가 붙은 화일에 저장
cc test.c
-옵션 -r: 이전에 지정된 작업 취소, -l : 지정된 작업 번호 출력
(sleep 20; cc -o sample sample.c)& -->백그라운드 실행, 20초 뒤 프로그램 컴파일
(sleep 10; ps -el) --> 10초후 모든 프로세서 상태 출력
time cc -o test test.c --수행 시간 출력 명령어


cd
디렉토리를 변경
$ cd [directory]
$ cd cgi-bin : 하부 디렉토리인 cgi-bin으로 들어감.
$ cd .. : 상위디렉토리로 이동
$ cd or cd ~ : 어느곳에서든지 자기 홈디렉토리로 바로 이동
$ cd /webker : 현재 작업중인 디렉토리의 하위나 상위 디렉토리가 아닌 다른 디렉토리(webker)로 이동하려면 /로 시작해서 경로이름을 입력하면 된다.


chfn
사용자의 finger 정보를 바꾸는 명령어입니다.

chgrp
파일의 그룹 소유권을 바꾼다.
$ chgrp [option] 그룹_파일들
-c : 실제로 소유자가 바뀐 파일에 대해서 자세히 기술한다.
-f : 파일의 그룹 소유권을 바꿀 수 없더라도 에러 메시지를 출력하지 않는다.
-v : 소유권의 바뀜에 대해서 자세히 기술한다.
-R : 디렉토리와 그 내용 파일들의 소유권을 재귀적으로 모두 바꾼다.


chmod
화일 permission 제어
$ chmod [option] [file]
$ chmod [option] 레벨 동작 권한 파일이름(들)
-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.
-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 권한에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.
참고
예) -rwxr-xr-x guestbookt.html
rwx : 처음 3개 문자 = 사용자 자신의 사용 권한
r-x : 그다음 3개 문자 = 그룹 사용자의 사용 권한
r-x : 마지막 3개 문자 = 전체 사용자의 사용 권한


읽기(read)---------- 화일 읽기 권한
쓰기(write)---------- 화일 쓰기 권한
실행(execution)------ 화일 실행 권한
없음(-)------------ 사용권한 없음
chmod --- 파일 및 디렉토리에 이미 정해진 접근 허가 모드를 변경
- 사용 형식: %chmod [ugoa] [+-=] [rwx] [file name]
u: 파일 소유자, g: 그룹, o: 기타 사용자, a: 모든 사용자
+: 사용허가부여, -: 사용허가박탈, =: 허가 취소
r: 읽기 허가, w:쓰기 허가, x: 실행 허가
특정 사용자를 지정하지 않으면 모든 사용자를 의미한다
chmod go+r test.c ; 소유자 그룹과 기타 사용자에게 읽기 허가
chmod ugo-w test.c ; 소유자,그룹,기타 사용자에게 읽기 허가 박탈
chmod +x test.c
chmod o -rwx test.c
r = 4, w = 2, x =1
chmod 744 test.c
-rwxr--r-- 1 edul user 235 Oct 15 13:23 test.c
chmod 724 test.c
-rwx-w-r-- 1 edul user 235 Oct 15 13:23 test.c


chown
파일의 소유권을 다른 사람에게로 변경시킨다.
$ chown [option] [user file]
-c : 실제로 파일의 소유권이 바뀐 파일만 자세히 기술한다.
-f : 파일의 소유권이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 소유권에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 소유권을 재귀적으로 모두 바꾼다.
파일의 소유권을 다른 사람에게로 바꾸는 것은 슈퍼 유저만이 할 수 있다.


chsh
사용자의 shell을 바꾸는 명령어입니다.


clear
화면 지우기


cmp
두 개의 파일 내용을 비교
$ Cmp [option] [file1] [file2]
-l : 두 파일 내용을 비교하여 틀린 곳마다 byte수(10진수)와 틀린 byte수(8진수) 출력
-s : 비교하여 틀린 내용을 출력하지 않고 return code 만 반환


comm
두 개의 정렬(sort)된 화일에서 공통된 line을 선택하거나 삭제
$ comm [option] file1 file2
-1 : file1에만 있는 line을 출력하지 않는다
-2 : file2에만 있는 line을 출력하지 않는다
-3 : file1, file2 양쪽 화일에 있는 line을 출력하지 않는다


compress
확장자 .Z 형태의 압축파일 생성
$ compress [file] : 압축시
$ uncompress [file] : 해제시
compress test.c (파일 압축) --->uncompress test.c.Z (압축 풀기)


cp
화일 복사(copy)
$ cp [option] [file1] [file2]
$ cp [option] [file1] [directory]
-a : 가능한한 원 파일의 구조와 속성을 그대로 복사한다.
-b : 복사할 때 덮어쓰게 되는 파일은 백업을 만든다.
-d : 심볼릭 링크는 심볼릭 링크로 복사한다. 그리고 원본 파일과의 하드 링크 관계를 유지한다.
-f : 복사 위치에 존재하는 파일을 제거하고 복사한다.
-i : 복사시 같은 이름의 파일이 존재한다면 덮어쓸 것인가 확인한다.
-I : 하드 링크를 만든다.
-P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사한다.
-r : 파일과 하위 디렉토리에 포함된 파일 모두를 재귀적으로 복사한다.
-s : 디렉토리가 아닌 파일의 심볼릭 링크를 만든다. 소스 파일의 이름은 전체 경로 이름으로 한다. 목적지 파일 이름은 전체 경로를 주지 않아도 현재 디렉토리로 간주되므로 상관없다.
-u : 파일의 정보를 갱신한다.
-x : 다른 파일 시스템인 하위 디렉토리는 무시한다.
-R : 디렉토리를 재귀적(recursive)으로 복사한다.
cp :시스템내에 있는 특정 파일을 복사
# mkdir temp --temp라는 디렉토리 생성
# cp sample test temp --temp라는 디렉토리 밑에 sample 과 test 라는 파일을 복사
# mkdir example
# cp -r temp example --temp라는 디렉토리 아래에있는 모든 내용을 example디렉토리에 복사


cpio
아카이브 파일을 복사하여 입출력
$ cpio -o [abcv]
$ cpio -i [Bdmtuvsb] [patterns]
$ cpio -p [adlmv] directory
-o 복사 출력 : 화일을 path명과 정보 상태를 함께 출력
-i 복사 입력 : 표준 입력 화일로 부터 pattern에 일치하는 화일을 추출
-p : *directory 내에 file 을 조건부로 작성하고 복사
command:
a : *file 복사후 입력 화일의 최종 접근 시간을 reset한다
B : 입출력을 5,120 byte의 레코드로 블럭화한다
c : ASCII 문자로 헤드 정보를 쓴다
d : 필요에 따라 directory를 생성
m : 존재하는 최종 화일 수정 시각을 보존
r : 대화 문법으로 화일명을 변경
t : 입력 화일명 목록을 출력하여 화일은 작성되지 않는다
u : 무조건 복사
v : 화일명 목록을 출력


crontab
지정한 화일을 입력으로 받아 user의 크론탭 화일을 관리 및 directory로 복사하는 명령어
$ crontab [file]
$ crontab [-u user] file
$ crontab [-u user] { -e | -l | -r }
-l : crontab 파일 목록을 보여준다.
-e : 에디터를 사용하여 crontab 파일을 수정한다.
-d : 사용자의 crontab 파일을 지운다.
-u user : 특정 사용자의 crontab 파일을 다루도록 지정한다.
이 명령을 사용하려면 슈퍼 유저로 로그인해야만 한다.
crontab 파일 내의 빈 핵과 # 문자로 시작되는 행은 무시된다.
파일의 각 행은 M H D m d cmd 형태로 되어 있다. 필드의 에스테리스크(*)표시는 어떠한 값이든 일치하는 조건으로 가정한다는 의미이다.


csh
유닉스 C 셸이다. 하지만 리눅스에서는 tcsh에 링크되어 있는 파일에 불과하다.


cu
다른 system을 호출
$ cu [options] [system or phone-number]
-h : 반이중 모드만을 지원하는 시스템을 호출
-t : 자동응답 모드에 설정된 ASCII단말기 호출
-d : message 출력
-o : 홀수 parity 생성을 지시
-n : 전화번호 입력을 요구
-l : line 통일 회선 장치명을 지정
-s : speed 전송 속도(1200,2400,4800,7200,9600 bps)를 지정


cut
파일에서 필드를 뽑아낸다. 필드는 필드 구분자나 문자 위치로 지정된다.
$ cut -c문자위치 [file1 file2]
$ cut -f필드 -d필드구분자 [-s] [file1 file2 ...]
-c문자위치 : 잘라낼 곳의 글자 위치를 지정한다. 콤마를 사용하거나 하이픈을 사용하여 범위를 정할 수도 있으며, 이런 표현들을 혼합하여 사용할 수도 있다.
-f필드 : 잘라낼 필드를 정한다. 지정하는 방법은 -c 옵션과 같다.
-d필드 구분자: 필드를 구분하는 문자를 지정한다. 디폴트는 탭 문자다.
-s : 필드 구분자를 포함할 수 없다면 그 행은 하지 않는다.


date: 현재의 날짜와 시간을 화면에 표시
date;who;cat > sample.c : 한 줄에 두 개 이상의 명령어를 동시에 입력하고자 할 경우 명령어와 명령어 사이를 ; 으로 구분한다
date > date.out : 이전 내용이 지워지고 새로운 내용이 저장
* date >> date.out : 이전 내용과 함께 새로운 내용 첨가


dc
system을 이용한 탁상계산기
$ dc [file]
file : 읽어들일 화일 지정, 생략시 표준 입력으로 간주


dd
다양한 데이타 형식을 가진 화일을 복사, 변환
$ dd [option = value] ...
bs=n : 입출력 블럭의 크기를 n byte로 쓴다
cbs=n : buffer 크기변환
conv=ascii : EBCDIC 코드를 ASCII 코드로 변환
conv=ebcdic : ASCII 코드를 EBCDIC 코드로 변환
conv=lcase : 알파벳을 소문자로 변환
conv=ibn : 약간은 다르지만 ASCII 코드를 EBCDIC 코드로 변환
conv=noerror : 에러처리를 중지하지 않는다
conv=swab : 두개의 byte를 서로 교환
conv=sync : 각 입력 레코드를 ibs로 패딩
conv=ucase : 알파벳을 대문자로 변환
...,... : 컴마로 구분된 여러개의 변환
count=n : 입력코드를 n개만 복사
files=n : 복사 시작전에 n개의 화일을 건너뛴다
seek=n : 복사 시작전에 출력화일의 처음으로 n 레코드를 탐색
ibs=n : 입력블럭크기를 n byte로 한다 (디폴트는 512)
if=file : 입력화일명(디폴트는 표준입력)
obs=n : 출력블럭크기를 n byte로 한다 (디폴트는 512)
of=file : 출력화일명(디폴트는 표준출력)
skip=n : 복사전에 입력레코드를 건너뛴다


df
이용 가능한 디스크 블록 수 출력
$ df [-f] [-t] [file sysytem]
-f : 디스크내의 자유리스트내의 정확한 블럭수를 출력
-t : 사용가능 블럭 및 i-node와 할당된 전체블럭과 i-node가 출력
-m : 파일 크기를 Mbyte단위로 출력


diff
두 개의 파일 중에서 다른 라인을 출력
$ diff [option] file1 file2
-b : 비교할 때 라인의 마지막에 있는 탭(tab)과 공백을 무시
-e : file1으로부터 file2를 재생성. ed 편집을 위한 a,c 그리고 d 명령어의 script를 만든다
-f : 비슷한 script를 만들지만 역순이기 때문에 ed 편집에서는 사용할 수 없다
-h : 정밀도가 없어도 빠른 속도를 처리하고자 할 때 사용하며 -e와 -f와 함께 사용할수 없다
-i : 대소문자를 구분하지 않는다.
-w : 탭(tab) 문자를 포함한 모든 공백 문자를 무시하고 비교 작업을 수행한다.


diff3
세 개의 파일 중에서 다른 라인을 출력
$ diff3 [option] file1 file2 file3
-e : file1에 file2와 file3의 차이 비교를 기록
-x : file1에 3개 화일 모두의 차이 비교를 기록
-3 : file1에 file3과 차이 비교되는 부분만 기록
disable -c [print name] ; 지정한 프린터에서 현제 출력중인 작업 취소
* disable -w laser-3 ; 모두 인쇄한 다음 프린터를 disable 상태로 만든다
* disable -c -r "out of paper" laser-1 ; 주석을 달아 놓는다


dmesg
부팅 메시지를 보여주는 명령어
Done : 백그라운드 프로세서의 수행이 완전히 종료된 상태


du
하드 사용량 체크(chkdsk)
$ du [option][dirctory, file]
-s : 총 합계만을 따진다. 하위 디렉토리의 숫자 등은 나오지 않는다.
-a : 크기가 계산된 각 파일의 크기를 보인다.
-b : 바이트 크기로 출력한다.
-x : 현재 디렉토리에 마운트된 파일 시스템만 검사된다.
-L : 심볼릭 링크 자신의 공간 대신 연결된 파일의 크기를 다룬다.


echo
외부 프로그램과 내부 쉘명령어 사이에 있으며 echo의 인수는 공백에 의해 구분되어지며 new line으로 종료하는 각 인수를 화면에 표준출력하는 명령어
$ echo [option] [string]
-n : 새로 개행하지 않고 출력하게 한다.
-e : 문자열 중에서 백슬래쉬와 조합되는 특수 문자를 인식하게 한다.
그러한 특수 문자들은 다음과 같은 것들이 있다.
\a 밸소리 \b 백스페이스
\f 용지바꿈(form feed) \n 행바꿈
\r 0 칼럼으로(carriage return) \f 탭(tab)
\v 수직 탭 \\ 백슬래쉬 문자
\nnn 8진법으로 표기되는 ASCII 문자 \c 출력 후 행바꿈 금지


ed
풀 스크린 에디터를 사용할 수 없는 열악한 환경의 터미널을 위한 라인 에디터
$ ed [-] [-s] [-p문자열] [file]
- : e, r, w, q, ! 명령에 의해 발생하는 메시지를 금지한다.
-s : 검사 작업을 금지한다.
-p문자열 : 프로프트를 원하는 문자열로 바꾼다.


edquota
사용자의 하드디스크 용량 및 파일의 개수를 제한한다.
$ edquota [option] [ID]
-n : 쿼터 할당을 림트 서버에 할 수 있다.
-u : 사용자를 정희한다. (기본값)
-p : 사용자 그룹에 제한을 주기위한 옵션
-t : 파일시스템의 soft time의 제한 값을 정한다. 디폴트 값은 /linux/quota.h를 따른다.


env
현재의 환경에 영향을 주지 않고 원하는 환경을 만들어 명령을 실행, 또는 현재의 환경 보고
$ env [-][-i ][-u 이름][name=value][command arg]
- : 뒤에 오는 이름=값 목록으로 환경을 제한한다.
-i : 현재의 환경을 무시하고 빈 환경 상태로 시작한다.
-u 이름 : 현재의 환경에 그 이름의 변수가 있다면 제거한다.
-name=value : 명령 수행 전의 원래 환경을 지정
-command arg: 수행하고자 하는 명령어 지정


ex
ed 기능을 강화한 텍스트 편집기
$ ex [-] [-trRV] [+command] name ...
- : 대화형 사용자를 위해 feed-back을 억제
-t : tag tag를 갖는 화일을 편집후 편집기를 그 화일의 위치에 지정
-r : file file을 복구
R : 읽기 허가만 된 모드로 한다
+ command : 지정한 명령어를 수행하고 편집


exit
현재의 프로세스를 종료하고 빠져나감
Exit : 백그라운드 프로세서가 수행도중 오류 때문에 빠져 나온 상태


fdformat
플로피 디스켓을 포멧한다
$ fdformat [device]


fg
후면 작업을 전면 작업으로 전환
$ fg [%작업번호]
fg %1(작업 번호) : 백그라운드로 수행중인 작업을 포그라운드로 전환


fgrep
문자열에 따라 파일 검색
$ fgrep [option] string [file]
-b : 각 행의 선두에 그 행이 발견된 블럭번호를 넣어줌.
-c : 일치하는 패턴을 갖고 있는 행의 수 만을 출력함.
-l : 일치하는 행이 있는 화일의 화일명만을 복귀개행으로 구별시켜 출력하는데, 화일내에 패턴이 몇 개나 포함되어 있어도 화일명은 한 개밖에 출력하지 않음.
-n : 각 행의 선두에 화일내의 행번호를 넣음.(1 라인은 1임)
-i : 비교시 소문자와 대문자의 차이를 무시
-v : 일치하는 행을 제외한 모든행을 출력.


file
파일이 어떤 형태의 파일인지 알아낸다.
$ file [option1][option2] file
-c : 매직 파일의 파생된 형태를 보여준다
-z : 압축되어 있는 파일의 형태를 검사
-l : 뒤따르는 심볼릭 링크를 야기 시킴
-f 파일명 : 검사한 파일에 대해 리포트를 만들 파일의 이름을 지정
-m 파일명 : 파일의 형태를 결정하는 데에 사용되는 매직 파일을 정함
file < test > test.out : test 파일을 입력으로 받아서 file 명령을 실행하고 test.out에 출력
file test.c : test.c라는 파일의 형태를 출력


find
원하는 특정 파일이나 디렉토리를 탐색하여 찾는다.
$ find path_list expression!


Expression!s
-name 파일명 : 찾고자 하는 파일의 이름을 정한다. 와일드 카드도 가능하다.
-perm 모드 : 파일권한(permission)이 일치되는 것을 찾는다. 원하는 권한은 ls로 볼 수있는 형태와 같이 지정한다.
-type ? : 형태가 같은 파일을 찾는다. 물음표(?) 부분에 디렉토리는 d, 파이프는 p, 심볼릭 링크는 l, 소켓은 s, 블록 파일은 b, 일반 파일은 f 등의 기호를 사용한다.
-links ? : 특정 개수의 링크를 가진 파일을 찾는다. 물음표 부분에 링크의 숫자를 표기한다.
-size ? : 파일의 크기가 일치하는 것을 탐색한다. 파일 크기는 블록단위로 물음표 부분에 지정한다. 한 블록은 512바이트로 내정되어 있지만 블록 숫자 뒤에 단위로 k자를 붙이면 1키로바이트 크기의 블록 숫자로 간주된다.
-user 사용자 : 파일 사용자의 ID에 따라서 검색한다. 로그인 이름이나 번호 모두가 가능하다.
-atime ? : 최근 며칠내에 엑세스한 파일을 검색한다. 날짜수는 ?에 명시한다.
-exec 명령 : 원하는 검색 조건에 맞는 파일을 찾으면 명시된 명령을 실행한다. 명령의 끝은 \;을 사용하여 끝낸다. find가 검색해낸 파일의 이름을 인수로 사용하고 싶다면 그 위치에 {}를 사용한다.
-newer 파일 : 어떤 파일보다 최근에 갱신된 모든 파일을 검색한다.
-cpio device : 현재의 화일은 cpio(1)의 문법(5120byte 레코드)으로 장치에 써넣는다
-ctime n : 화일이 n 날짜내에 변경되면 참
-group gname: 화일에 gname에 포함되어 있으면 참
-mtime n : 화일이 n 날짜 이내에 수정되면 참
-ok cmd : 명령어 라인을 의문부호를 선두에 부과하여 화면에 출력하며 만약 사용자가 y를 칠 경우에만 실행 가능
find: 사용자가 지정한 특정 범위에 해당하는 모든 파일을 검색
# find / -name test1.c -print ; 최상위 루트 디렉토리부터 검색하여 검색된 파일을 한 행에 하나씩 표준 출력
# find . -name test1.c -print ; 현제의 작업 디렉토리에서 검색
# find / -size +1000 -print ; 최상위 루트에서 크기가 1000블록 이상인 파일 검색
# find . -size -1000 -print ; 현 디렉토리에서 크기가 1000블록 이하인 파일 검색
# find . -mtime +10 -print ; 10일 이전에 수정된 파일 검색
# find . -mtime -10 exec rm {} \: ; 10일 이내에 수정한 파일을 검색하여 모두 지운다


finger
시스템 상의 사용자들에 대한 정보를 보여준다.
특정 사용자에 대한 정보를 알려면 finger username(또는 사용자가 다른 컴퓨터에 있으면 finger
username@domain)을 입력한다.
$ finger [option] [user]
-s : 사용자의 로그온 이름, 실제이름, 터미널 이름, 로그온 시간 등등을 보인다.
-l : -s 옵션 정보에 몇 가지를 추가하여, 여러 줄에 걸쳐서 보여준다.
-p : -l 옵션 정보에서 .plan과 .project 파일을 보이지 않는다.


foreground : 하나의 명령이 실행되어 결과를 출력할때까지 다른 명령을 수행 할 수 없다

free
메모리의 사용상태와 남은 상태, 버퍼의 상태등을 보여줌


fsck
파일 시스템의 완전한 상태를 유지하고 있는가를 검사하고, 잘못된 것은 수정한다.
$ fsck [option] [file system]
-f : 빠른 속도로 블록과 크기 및 자유리스트를 점검
-n : fsck 명령 수행중에 모든 질문에 대해 no라 응답한다.
-y : fsck 명령 수행중에 모든 질문에 대해 yes라 응답한다.


-a : 검사도중 발견된 에러를 자동적으로 복구한다.
-r : 검사도중 에러가 발견되면 복구할 것인가를 물어온다. 이것은 하위 호환성을 위한 것으로서 사실상은 사용되지 않는다.
-s : 병렬적인 방법이 아니라 순차적인 방법으로 검색한다.
-V : 검색중 각종 정보를 자세하게 보여준다.
-N : 실제로 검사 작업을 하지는 않도록 한다.


grep
파일 중에서 어떠한 패턴을 검색합니다.
$ grep [option] expression! [file]
-A : [숫자] 라인에서 패턴과 매치되는 문자열을 찾아서 그 이상의 라인을 전부 보여줍니다.
-B : [숫자] 라인에서 패턴과 매치되는 문장열을 찾아서 그 이하의 라인을 전부 보여줍니다.
-b : 매치되는 라인과 그 크기(bite)를 출력합니다.
-c : 매치되는 개수를 출력합니다.
-f : 파일로부터 패턴을 입력받아 들입니다.
-n : 매치되는 라인과 그 라인수를 출력합니다.
-v : 매치되지 않는 라인을 출력합니다.
-w : 주어진 단어와 완전히 매치되는 라인을 출력합니다.
-l : 매치되는 내용이 있는 파일의 이름만을 표시한다.
-h : 매치되는 내용을 찾은 파일의 이름을 표시하지 않는다.
-i : 대소문자 구분을 하지 않는다.
-e expression! : 표현이 하이픈 문자로 시작될 때 사용한다.
-f file : 규칙적인 식(grep) 또는 리스트열(fgrep)이 화일로부터 취한다
-s : 읽지못하는 화일이거나 존재하지 않는 화일에 대한 에러 메세지 출력을 억제
grep [option] 형태 [화일명] -- 정규식을 이용 패턴 지정
# grep -i tom sample.c -- sample.c 라는 파일에서 tom 이라는 문자열을 대소문자 구분 없이 검색
# grep -n tom sample -- 행 번호와 함께 출력
# grep -i "tom is" sample -- 공백은 " "로 표기
# grep -v tom sample --tom이라는 형태를 포함하지 않는 행을 출력
# cat sample
computer science
computer graphics
# cut -c10-17 sample -- sample 파일에서 칼럼 단위10-17을 절단 --> science/graphics
# cmp test1 test2 -- 서로 다른 두 파일을 비교
# dircmp test test -- 서로 다른 두 디렉토리 비교


groupadd
그룹 이용자를 추가하는 명령어.


gpasswd
group의 사용자나 관리자를 추가, 또는 삭제할 때 쓴다.
root또는 관리자만이 group member를 추가, 삭제할 수 있다.
$ gpasswd [-r|-R] group
$ gpasswd [-a user] group
$ gpasswd [-d user] group
$ gpasswd [-A user,...] [-M user,...] group


gzip
파일 압축(확장자 .gz, .z 형태의 압축파일 생성)
$ gzip [파일명] : 압축시
$ gzip -d [파일명] : 해제시
gzip은 tar파일을 압축하는데 사용하는 명령어로 1단계에서 9단계로 압축률을 조정할 수 있다. 6단계를 사용하면 적절한 압축률로 압축할 수 있고 압축하는데 시간을 줄일 수도 있다.


halt
신속하게 system을 정지시키는 명령어


hd
16진수로 파일을 덤퍼하는 명령어(od참조)
$ hd [-bcdox] [file] [[+[x]] offset [.] [b]]


head
파일의 처음 n개의 내용을 보고자 할때 사용하는 명령


help
system 명령어에 대한 설명과 메시지에 대한 정보를 On-line 으로 제공
$ help [args]


history
작업 내역을 보여줌


hostname
현재 설정되어 있는 호스트의 이름을 표시하거나 변경한다.
$ hostname [name of host]

-i : 서버의 ip를 알려준다.

id
시스템에 등록된 ID를 확인한다.
$ id [option]
-g : 그룹 ID만을 출력한다.
-G : 추가 그룹들만을 출력한다.
-n : ID 번호대신 이름으로 출력한다.
-r : 실제 사용자나 그룹 ID를 출력한다. 다른 옵션과 함께 사용한다.
-u : 사용자의 ID만을 출력한다.


ifconfig
네트워크 정보 표시
$ ifconfig [네트워크명]


ipcs
process 상호간의 통신에 대한 상태를 출력하는 명령어
$ ipcs [option]
-c : 사용자의 로그인 명과 그룹명을 출력
-o : 사용 상황 상태에 대한 정보를 출력
-p : 프로세서 번호에 대한 정보를 출력
-q : 수행중인 메세지 큐(Queue)에 대한 정보를 출력
-t : 시간에 대한 정보를 출력


ispell
영어 단어의 철자를 확인
$ ispell [option] [file(s)]
파일 이름을 써주면 해당 파일의 단어를 검사하며, 파일 이름없이 실행시키면 표준 입력의 단어를 체크합니다. 해당하는 단어가 없을 때는 비슷한 단어들의 리스트를 보여줍니다.


install
파일을 갱신하고 이진 파일로써 인스톨하기 위해 makefile에서 종종 사용되는 유틸리티


jobs
현 터미널에서 수행된 작업들을 간략하게 나열해 준다.
$ jobs [-lnprs] [jobspec ...] or jobs -x command [args]
-l : 프로세서 번호를 추가해서 보여준다.
jobs : 백그라운드로 수행중인 모든 프로세서의 상태 출력


join
두 개의 정렬된 파일을 하나로 수평 병합한다.
$ jobs [option] [file1] [file2]
-an : 첫 번째나 두 번째 파일로부터 일치하지 않는 것도 처리, n은 1이나 2
-e 문자열 : 비어 있는 필드는 문자열로 대체
-j n m : 파일 n의 m번째 필드를 두 파일에 병합
-o file : 명시된 파일의 형태에 따라서 출력을 만듬
-t 문자 : 필드 구분 as자를 정한다. 기본적으로 공백, 탭, 개행 문자
-v file : file1이나 file2의 짝이 연결되지 않는 행을 지정된 파일로 출력


joe
emacs에 기초한 텍스트 에디터
kernel; 생성되는 프로세스마다 PCB 부여하고 관리


kill
프로세스를 강제 종료하는 명령어
$ kill [-signal number] process id
$ kill -l : 시그널 종류를 나열한다. 시그널의 종류는 시그널 번호 순서대로 이름으로 나열한다.
1 hang up 2 인터럽터 3 정지
4 정확하지 않는 명령 5 trace trap 6 IOT
7 EMT 8 부도소수점 expression! 발생 9 강제 종료
10 버스 에러 11 세그먼트 위배 12 bad system 콜
13 읽는 사람없이 파이프에 써 넣음 14 경보 신호 15 Software 종료
kill [번호] -- 프러세서 강제 종료 명령어
* 강제 종료가 안될 경우 -9옵션을 사용 %kill -9 1239


killall
system내에 활동중인 모든 프로세서를 강제로 종료하는 명령어


last
시스템에 마지막으로 접근한 사용자를 표시
$ last [option]
-f : 파일명을 참조하여 출력합니다.
-t : tty로 로그인한 터미널을 추적합니다.
-v : 로그인한 연도를 추가해서 출력합니다.


less
more와 유사하게 페이지 단위로 문서를 보여준다. 문서의 앞으로 이동하는 것이 가능
$ less [option] file
-? : less에서 사용할 수 있는 명령들에 대한 도움말을 제공한다. 이 옵션이 사용되면 다른 인수는 무시되고, 도움말 화면을 보여준다.
-a : 마지막 라인이 화면에 출력되고 나서 탐색을 시작한다.
-c : 필요할 때 전체 화면은 다시 갱신한다.
-C : -c 옵션과 같지만 갱신할 때 화면 전체를 지우고 시작한다.
-e : 두 번째로 파일의 끝에 도달하면 자동적으로 종료한다.
-E : 파일의 끝에 도달하기만 하면 자동적으로 종료한다.
-i : 대소문자를 구분하여 탐색한다.
-n : 행번호를 추가한다.
-q : 특정 에러가 발생하지 않으면 아무 소리도 내지 않고 조용히 동작한다.
-Q : 결코 아무 소리도 내지 않는다.
-s : 연속되는 공백 라인은 하나의 행으로 처리한다.
-x 숫자 : 수치를 지정해서 탭 간격을 조정한다. 기본값은 8이다.


link / unlink
file 및 directory 링크 / 링크해제 명령
$ (un)link file1 file2


ln
실제 file을 file name에 연결시키는 명령
$ ln [-s] file_name1 file_name2
$ ln file_name(s) directory
-s : 하드 링크 대신 심볼릭 링크를 만듬
ln test1 test2 --- test1과 test2라는 2개의 파일을 연결 (unlink ; 연결 해제)


locate
저장 위치를 찾아줌


login / logout
자신을 식별하고 시스템에 대한 액서스를 얻기 위해 사용하는 명령
$ logiin [option] ID
-f : 뒤의 사용자명으로 로그인
-g : 뒤의 그룹사용자명으로 로그인


longname
현재 시스템에서 자신이 사용하는 로그온 이름을 보여줌


lp
특정 file / 정보를 프린터로 출력하는 명령어
$ lp [options] files
-c : 프린터가 끝나기전에 화일 변경이 가능하도록 프린트할 화일을 복사
-d dest : 프린터 또는 프린터 클라스를 dest로 지정
-m : 프린트 후 전자우편을 보낸다
-n number : 프린트 할 매수를 지정
-s : 메세지 출력을 억제
-w : 프린트 후 사용자의 단말장치에 메세지를 보낸다


lpadmin
스풀 프린터 시스템 구축 명령어
$ lpadmin [options]
-d dest : 기존 dest를 신규 시스템의 생략시 수신자로 한다


lpstat
출력되는 라인 프린터의 상태에 대한 정보를 화면에 나타내는 명령어
$ lpstat [option]
-a list : 프린터나 클라스의 처리 상태 출력
-c list : 클라스명과 멤버 출력 이때 list는 프린터명 또는 클라스명의 리스트
-d : lp에 대한 system을 생략시 주소를 출력
-o list : 출력 request의 상태 출력 이때는 프린터명,클라스명,request id 리스트
-p list : 프린터 상태 출력 이때 리스트는 프린터명
-r : 라인 프린터 scheduler 상태 출력
-t : 프린터의 모든 상태 출력
lpstate : 프린터의 현제 상태 (활성화: enable, 비활성화: disable)
* lp -c temp.c ; 내용이 변경되어도 문제가 지속되지 않도록미리 출력될 파일을 복사
* lp -n7 /etc/lp/temp ; 7장 프린트
* lp -m temp.c ; 출력이 끝난후 사용자에게 전자우편을 보냄
* lp -t"chon bing hee" test.out ; chon bong hee라는 표제를 달아 줌


ls
directory의 내용을 화면에 출력하는 명령어
$ ls [option] file..
-a : .file을 포함한 전 entry를 출력
-A : -a option과 유사하지만 .또는 ..을 포함하는 화일은 출력 억제
-c : 마지막 변경된 i-node의 시간을 출력
-C : 멀티칼럼으로 출력하며 디폴트로는 CRT에 출력
-d : directory명만 출력하며 내용은 출력하지 않는다
-D : directory만 출력
-f : 인수를 directory로 해석하며 각각의 슬롯에 있는 directory 및 file명을 출력
-F : system에 있는 화일이 directory면 /를 실행가능한 화일이면 *를 붙인다
-g : 옵션 -l과 같으나 소유자명이 출력되지 않는다
-i : 첫 칼럼에 i-number를 출력
-l : 화일 및 directory 상태 정보를 long 문법으로 출력
-m : 스트림 문법의 출력
-n : 소유자명과 그룹명 대신에 UID 번호와 GID 번호가 출력되는 것을 제하고는 옵션 -l과 같다
-g : 비도형문자를 ?문자로 출력
-r : 화일명이나 수정시간을 알파벳 또는 오래된 역순으로 출력
-R : 발견되는 sub-directory의 내용을 순환적으로 출력
-s : 간접블럭을 내포하는 블럭수를 출력
-t : 화일명 대신에 수정된 시간으로 분류
-u : -t 또는 -l option으로 분류하는 중에서 최종접근 시간을 사용
ls: 현재 위치한 디렉토리 아래에 있는 파일 및 서브디렉토리의 정보를 나열
- 옵션: -l: 파일의 모든 정보 출력
-c: 최근 변경한 시간 순서데로 출력
-d: 디렉토리 명만 출력
-F: 파일의 특성을 출력( /디렉토리 *실행화일)
-a: dot(.)으로 시작하는 파일의 이름을 포함한 모든 내용을 출력


mail
사용자들간에 전자우편을 주고 받는 명령어
$ mail
ID@domain_address
$ mail [-f file] [-par]
-f file : 지정한 화일을 전자우편 화일로 한다
-p : 조치를 위한 prompt를 나타내지 읺고 전자우편을 출력
-g : 인터럽터를 건후에 종료
-r : 메세지를 FiFo(선입선출)방식으로 한다


mailx
대화형 메시지 처리를 하는 명령어
$ mailx [option] [name ...]
-e : 전자우편이 있는가 없는가를 조사
-f[file name] : mailbox 대신에 화일명에서 메세지를 읽는다
-F : 메세지를 최종 수신자명이 붙어 있는 화일에 기록
-S : subject 종속 헤드필드를 subject로 한다
-U : user 사용자의 mailbox를 읽어낸다


man
원하는 명령어의 사용방법을 검색하여 보여주는 명령어
$ mailx [option] [chapter] title ...
-k : 인수로 주어진 단어를 키워드로 사용하여, 해당 키워드가 발견되는 모든 매뉴얼의 내용을 검색
man date : 예약어나 명령어에 대한 온라인 매뉴얼


mcd
MSDOS 시스템으로 현재 사용하는 디렉토리 장소로 이동
$ mcd [dos directory]


mcopy
MSDOS file system으로 or DOS file system의 file을 복사
$ mcopy [option] file_name1 file_name2
-t : 텍스트 파일 복사시 CR/LF 문자를 \n 하나로 바꾼다.
-n : 파일을 덮어쓰게 되는 경우에도 경고하지 않는다.
-v : 자세히 안내문을 보여준다.
-m : 파일 갱신 시간을 보존한다.


mdel
MSDOS file system에서 file을 제거
$ mdel [-v] file
-v : 진행되는 상황을 자세히 보여줌


mdir
MSDOS directory의 목록을 보여준다.
$ mdir [-w] file
-w : 파일 크기나 생성 날짜는 제외하고 넓은 형식으로 보여줌


mesg
teminal에 들어오는 메시지를 허가 또는 거부하는 명령어
$ mesg [n] [y]
n : 메세지 거부
y : 메세지 허가


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


mfs
모든 file system을 mount 하는 명령어


mkdir
directory 생성
$ mkdir [-m mode] [-p] directory
-m : 디렉토리를 만들 때 같이 사용하여 사용자 권한을 줄수 있다.
-p : 만들 디렉토리의 상위 elfprxhflRK지 한꺼번에 만든다.
mkdir : 디렉토리 생성 명령어 (%mkdir [option] [directory name]


mknod
특수화일을 위해 directory와 이에 i-node를 만드는 명령어
$ mknod file [b] [c] major minor
b : 특수화일이 블럭형
c : 특수화일이 문자형
major : 주장치 번호
minor : 부장치 번호


mkswap
swap 공간 생성


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


설명
more 명령은 몇 가지 명령을 인식할 수 있다. 스페이스 바를 누르는 것을 포함해서 다음과 같은 조작을 하는 것이 가능하다.
■ <return> : 한 줄만 스크롤된다.
■ D : 반 페이지만 뒤로 이동한다.
■ <space> : 한 페이지만 뒤로 이동한다.
■ B : 한 페이지 앞으로 이동한다.
■ H : 도움말을 제공한다.
■ V : vi 에디터를 부른다. 에디터를 종료하면 원 위치로 돌아간다.
■ Q : more 를 종료한다.


more [file name] : 한 번에 한 화면씩 파일의 내용을 표준 출력
-내용을 보지 않고 종료시 q 나 Q 키를 누른다


mount
다른 파티션의 디스크나 물리적으로 다른 rldr 장치를 파일 시스템으로 연결
$ mount [option] 장치명 디렉토리
-v : 마운트 작업을 수행하면서 자세한 정보를 출력한다.
-w : 마운트되는 파일 시스템을 읽기와 쓰기가 가능하도록 한다.
-r : 마운트되는 파일 시스템이 읽기 동작만 가능하도록 한다.
-n : 마운트 정보가 기록되는 /etc/rntab 파일에 정보를 기록하지 않는다.
-a : /etc/fstab 파일에 있는 모든 파일 시스템을 마운트하도록 한다.
-t 형태 : 마운트되는 파일 시스템의 형태를 지정한다.


mountall
여러개의 file system을 mount하는 명령어
$ mountall [-] file system
$ mountall [-k]
- : 입력되는 데이타가 표준입력
-k : 화일을 open시키고 프로세서를 찾은 다음 SIGKILL 시그널을 보낸다


Multitask

mv
파일의 위치를 이동하거나 파일의 이름을 바꾸어 준다.
$ mv [ -fi ] 파일명1 파일명2
$ mv [ -fi ] 파일명(들) 디렉토리명
-f : 같은 이름의 파일이 존재하고 쓰기 권한이 금지되어 있더라도 물어 보지 않고 덮어쓰기를 해버린다. 이런 경우 이 옵션을 사용하지 않으면 사용자에게 다시 확인을 할 것이다.
-i : 파일을 덮어쓰기 전에 사용자에게 확인한다.
mv [file name1] [file name2] --file name1을 file name2로 이름 변경
mv [file1] [file2] [directory1] --file1, file2를 directory1으로 이동
mv [directory1] [directory2] --directory1의 모든 내용을 directory2로 이동
**명령어 cp, mv, rm에서 option -i는 사용자에게 여부를 묻는 옵션입니다


mvdir
file system 내에서 directory 변경을 하는 명령어
$ mvdir [oldname] [newname]


nice
프로세스의 순위를 변경하는 명령어
$ nice command -n XX
nice
값은 -20에서 19까지 있는데, 값이 작을수록 우선 순위가 높습니다. -n옵션을 쓰기 않으면 디폴트로 10이 쓰입니다. 일반
유저는 nice값을 증가시킬 수밖에 없지만 root는 nice값을 감소시켜 우선 순위를 높을 수도
있습니다.  
nice [-정수값:1~39 , 20으로 설정] 명령어 -->우선 순위 변경 명령어
정수값이 높을수록 우선 순위가 낮다 (nice -10 cc -o test test1.c)


nl [file name] : 지정한 파일의 내용을 츨력할 때 맨 앞에 행 번호를 이어서 출력

nohup cc -o sample1 sample1.c & 1132[PID번호]
백그라운드로 실행, 로그 아웃이나 중지 신호후에도 프로세서의 수행 계속

nslookup
네임 서버를 조회한다.
$ nslookup [option] [host or IP Address] [name server]
-q=A : IP Address
-q=MX : 메일서버 확인
-q=NS : 네임서버 확인
-q=CNAME : 호스트의 앨리어스
-q=PTR : 호스트 또는 포인터명
-q=SOA : Statt of Authority 정보


od
8, 10, 16진 또는 파일의 ASCII 덤프를 만들기 위한 명령어
$ od [option] file
-b : 바이트를 8진수로 출력
-c : 바이트를 아스키 문자로 출력
-x : 바이트를 16진수 워드 단위로 출력


pack test.c (파일 압축) ---> unpack test.c.z


page [option] [file name] : 한 번에 한 화면씩 파일의 내용을 표준출력(=== %pg)

passwd
자신의 패스워드를 관리하는 명령어
$ passwd [user]
암호화 되어 /etc/passwd 파일에 놓여집니다.
암호는 최소한 6자 이상이어야 합니다(8자 이상 권장).
암호는 구두점 기호와 숫자뿐만 아니라 대소문자를 모두 포함해도 됩니다.


paste
하나 혹은 그 이상의 파일로부터 칼럼 형태의 출력을 만든다. cut과 함께 사용
$ paste [-s] [-d 구분문자] file_name(s)
-s : 각 file을 순회하면서 paste를 수행한다.
-d 구분문자 : 어떠한 문자로 칼럼을 구분하는지 지정. 기본값은 탭 문자


pico
UNIX용 에디터


pine
PINE 4.10 MAIN MENU Folder: INBOX 19 Messages


? HELP - Get help using Pine
C COMPOSE MESSAGE - Compose and send a message
I MESSAGE INDEX - View messages in current folder
L FOLDER LIST - Select a folder to view
A ADDRESS BOOK - Update address book
S SETUP - Configure Pine Options
Q QUIT - Leave the Pine program
Copyright 1989-1999. PINE is a trademark of the University of Washington.
[Folder "INBOX" opened with 19 messages]
? Help P PrevCmd R RelNotes
O OTHER CMDS > [ListFldrs] N NextCmd K KBLock
메일을 주고 받을 수 있는 명령


ping
자신의 네트워크나 다른 네트워크가 통신이 잘되고 있는지 점검함
$ ping hostname


ps
프로세서들의 상태를 점검하는 명령어
$ ps [options]
-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 -l --프로세스에 관한 모든 상태 정보 출력
ps -e --현제 실행중인 모든 프로세스에 관한 정보 출력
ps ps -t 00 --지정된 터미널에서 실행중인 프로세스에 관한 정보 출력


pstree
프로세서의 트리구조를 출력한다.


pwd
현재 작업하는 디렉토리를 알기 위해서 pwd 명령을 사용한다.
print working directory, 현재 작업 Directory를 출력한다.
pwd : 현제 작업 디렉토리 출력 명령어


quota
계정에 할당된 사용량을 확인한다.
$ quota [-vq] [[-ug] | -u[ user] | -g[ group]]


quit
대화식 모드에서 떠남


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


rcp
컴퓨터 사이에서 file을 복사할 때 사용된다.
$ rcp [option] file_name1 file_name2
$ rcp [option] file(s) directory
-q : 현재의 프로세서들을 종료시키지 않고, 부팅 동작만을 수행한다. 이 옵션을 사용하면 더 빠르게 리부팅할 수 있다. 다시 부팅한 기록은 로그 파일인 /var/adm/wtmp에 기록된다.
-r : 하위 디렉토리까지 재귀적으로 모두 복사한다.
-p : 파일의 시간과 모드를 보존한다.
-k : kerberos ticktets을 요구한다.
-x : 복사되는 모든 데이터에 암호화 과정을 거친다.


rfd:디스켓, rct:카트리지테이프, rmt: 테이프) 백업 및 복사에 관한 명령어 하드 ----> 디스켓
Non-preemptive(비선점) ; 커널 모드
# tar -cvf /dev/rfd0c test1
(c: 저장되는 파일들이 디스크의 처음부터 기록, v:기록되는 화일명 화면 출력)
# tar -tvf /dev/rfd0c --- 디스켓의 파일 목록 확인
디스켓 ----> 하드
# tar -xvf /dev/rfd0c test1 --- 지정한 파일 복원
동일한 하드 ---> %tar -cvf test1.tar test1
test.c.Z (파일 생성) --- >zcat test.c.Z (파일 보기)
touch : 내용이 없는 빈 파일을 생성, 이미 생성된 파일의 수정 시간 갱신
# touch [option] [시간] [파일명]


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


rmdir
원하는 directory를 제거한다.
$ rmdir [-p] directory
-p : mkdir의 -p 옵션의 반대 동작으로 하위 디렉토리와 그 상위 디렉토리 모두를 제거할 수 있다. 이때 모든 디렉토리는 비워져 있어야 한다. 수행 후 결과가 어떻게 되었는지를 보여준다.
rmdir : 디렉토리 삭제 명령어
- 옵션: rm -r test ; test의 하위디렉토리와 파일을 전부 삭제
- 옵션: rm -i test ; 삭제 여부를 사용자에게 물어 본다


rm test1 test2 test3 --- test1,test2,test3 파일을 삭제
rm -r quit --- quit 디렉토리 및 모든 내용을 삭제


route
현재 라우터에 상태 확인 및 라우터 정보를 수정할 수 있다.
$ route add -net network address netmask device
route를 이용해서 라우터의 정보를 변경 또는 추가할 수 있다. 특히 가상 IP 설정을 할 수 있다. 즉, 한 대의 서버에 여러개의 IP를 사용할 수 있다.


rpm
레드헷 패키지 관리자
$ route add -net network address netmask device
rpm
명령어는 바이너리 소프트웨어를 설치해주는 역할을 하므로써 일반사용자에게 설치의 편리성을 제공해주는 편리한 명령어이다. 설치뿐만
아니라 소프트웨어의 삭제도 간단한 명령어로 간단하게 해결해 주기 떄문에 설치된 소프트웨어의 파일을 일일이 찾아 삭제하는 수고를
덜어준다.


Running : 현제 백그라운드 수행중인 상태

sh
원래의 nunix 명령인 본 셀을 불러내는 명령어


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


sleep
이름 그래로 잠자는 일 외에는 하는 일이 없다.
$ sleep 시간

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


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

S 초 m 분
h 시간 d 날짜


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


split
텍스트 file을 작은 조각으로 나눈다. 너무 커서 다루기 불편한 텍스트 문서를 나눌 때 사용
$ split -행 수 file_name [tag_name]
-행 수 : 몇 개의 행 단위로 조각을 나누는지 정한다.


Stopped : fg로 수행되다가 ^D로 잠시 중단된 상태

su
다른 사용자 계정으로 서브 셸을 생성한다. 잠시만 다른 사용자 계정으로 작업할 필요가 있을 때 사용한다.
$ su [-] [userID] [인수]
- : 하이픈 (-)을 사용하면 새로운 셸로 로그인할 때 자신의 로그인 과정을 수행한다. 옵션이 주어지지 않으면 새로운 셸은 단지 셸 역할을 수행할 뿐이다.
아무런 인수없이 su를 사용하면, 이것은 root 계정으로 로그인하기를 원하는 것으로 간주된다. 그래서 많은 사람들이 su가 'super user'를 의미하는 말로 생각하지만, 사실은 'substitute user'를 의미하는 말이다. 물론 수퍼 유저의
패스워드를 알고 있어야만 한다.


swapon
스왑 공간 사용하기


sync
현재 시스템 디스크의 IO 버퍼에 있는 디스크 이미지를 하드 디스크로 기록한다.
$ sync

스템을 다운시키기 전에 버퍼에 있는 이미지를 반드시 디스크로 기록해야 한다. 그렇지 않으면 디스크는 기록된 정보의 이미지와 일치하지 않는 이미지를 가지게 될지도 모른다. 사실, 이것을 사용할 경우는 극히 드물다. 왜냐하면 shutdown등의 동작을 수행하면 그들이 자동적으로 sync를 호출하기 때문이다.


tail
문서의 끝 부분을 화면에 출력한다.
$ tail [-행수] file_name(s)
-행 수 : 출력될 행수를 지정한다.


tar
file들을 묶는 명령어
$ su [-] [userID] [인수]
주요 동작 모드 :
-t, --list : 아카이브의 내용물을 출력합니다
-x, --extract, --get : 아카이브에서 파일을 추출합니다
-c, --create : 새로운 아카이브를 만듭니다
-d, --diff, --compare : 아카이브와 파일 시스템간의 차이점을 비교합니다
-r, --append : 아카이브 끝에 파일을 추가합니다
-u, --update : 아카이브 안의 것보다 새로운 파일만 추가합니다
-A, --catenate : 아카이브에 tar 파일을 추가합니다
--concatenate : -A와 같음
--delete : 아카이브로부터 제거합니다 (자기 테이프에선 안됨!)

동작 변경자:
-W, --verify : 아카이브를 기록한 다음 검증하도록 합니다
--remove-files : 아카이브에 파일을 추가한 다음 지웁니다
-k, --keep-old-files : 추출할 때 이미 존재하는 파일을 덮어쓰지 않습니다
-U, --unlink-first : 추출하기에 앞서 대상 파일을 지웁니다
--recursive-unlink : 디렉토리를 추출하기에 앞서 그 체계를 비웁니다
-S, --sparse : 스파스 파일을 효율적으로 처리합니다
-O, --to-stdout : 표준 출력으로 파일을 추출합니다
-G, --incremental : 오래된 GNU 형식의 점진적 백업 파일을 처리합니다
-g, --listed-incremental : 새로운 GNU 형식의 점진적 백업 파일을 처리합니다
--ignore-failed-read : 읽을 수 없는 파일에 대해 영 아닌 값으로 종료하지 않습니다


장치 선택과 전환:
-f, --file=ARCHIVE : 아카이브 파일 또는 ARCHIVE 장치를 사용합니다
--force-local : 이름에 콜론이 있는 아카이브 파일도 지역 파일로 인식합니다
--rsh-command=COMMAND: rsh 대신 원격 COMMAND를 사용합니다
-[0-7][lmh] : 드라이브와 기록 밀도를 지정합니다
-M, --multi-volume : 다중 볼륨 아카이브를 생성/출력/추출합니다
-L, --tape-length=NUM : NUM x 1024 바이트를 쓴 뒤에 테이프를 바꿉니다
-F, --info-script=FILE : 각 테이프의 끝에서 스크립트를 실행합니다 (-M을 포함함)
--new-volume-script=FILE: -F FILE과 같음
--volno-file=FILE : FILE 안에 있는 볼륨 번호를 사용/갱신합니다


장치 블럭 설정:
-b, --blocking-factor=BLOCK: 레코드당 BLOCK x 512 바이트
--record-size=SIZE : 레코드당 SIZE 바이트, 512의 배수
-i, --ignore-zeros : 아카이브에서 영으로 된 블럭을 무시합니다 (EOF를 의미함)
-B, --read-full-records : 읽은 것을 재블럭화합니다 (4.2BSD 파이프용으로)
정보 출력에 관한 옵션:
--help : 이 도움말을 인쇄하고 끝냅니다
--version : tar 프로그램의 버전 번호를 인쇄하고 끝냅니다
-v, --verbose : 처리되는 파일을 순서대로 출력합니다
--checkpoint : 아카이브를 읽을 동안 디렉토리 이름을 인쇄합니다
--totals : 아카이브를 만들 동안 쓰여진 총 바이트 수를 인쇄합니다
-R, --block-number : 각 메시지마다 아카이브내의 블럭 번호를 표시합니다
-w, --interactive : 모든 행동에 대해 확인을 요구합니다
--confirm!ation : -w와 같음
-s, --same-order : sort names to extract to match archive
--preserve-order : same as -s
--preserve : same as both -p and -s
-z, --gzip, --ungzip : filter the archive through gzip
-Z, --compress, --uncompress: filter the archive through compress
--use-compress-program=PROG: filter through PROG (must accept -d)


tcsh
c 셸 명령 번역기. c 셸의 확장판
$ tcsh [option] file
-T : tenex라고 하는 특수한 기능을 수행하도록 한다.
-V : -v 옵션과 같지만 초기화 스크립트의 수행에도 영향을 미친다.
-X : -x 옵션과 같지만 초기화 스크립트의 수행에도 영향을 미친다.
나머지 옵션들은 bash셸과 같다.


tee
파이프 연결 출력을 양방향으로 나눈다.
$ tee [option] file_name(s)
-i : 인터럽트를 무시하도록 한다.
-a : 지정된 파일들로 출력이 덮어쓰지 않고, 뒤에 추가되도록 한다.
Terminated : Kill 명령을 사용해 강제로 종료된 상태


test
file의 각종 상태를 검사하여 결과를 알려준다. 셀 스크립트 상에서 if 문이나 while 문등과 함께 사용되는게 보통이다.
$ test [expression!]


Expression!s
-r 파일명 : 파일이 읽기 권한이 있으면 참
-w 파일명 : 파일이 쓰기 권한이 있으면 참
-x 파일명 : 파일이 실행하기 권한이 있으면 참
-f 파일명 : 파일이 일반(regular) 파일이면 참
-d 파일명 : 파일이 디렉토리이면 참
-b 파일명 : 파일이 존재하고 블록 장치 파일이면 참
-c 파일명 : 파일이 문자 전용 파일(character special file)이면 참
-u 파일명 : 파일이 set-user-ID 플래그가 세트되어 있으면 참
-g 파일명 : 파일이 set-group-ID 플래그가 세트되어 있으면 참
-k 파일명 : 파일이 sticky 비트가 세트되어 있으면 참
-s 파일명 : 파일의 크기가 0보다 크면 참
-t 파일 디스크립터 : 파일 디스크립터에 해당하는 파일이 열려 있고, 터미널 장치로부터 사용되고 있으면 참, 기본 디스크립터 값은 1이다.
-z 문자열 : 문자열의 길이가 0이면 참
-n 문자열 : 문자열의 길이가 t 이상이면 참
-문자열 1 = 문자열2 : 문자열1과 문자열2가 같으면 참
-문자열 1 != 문자열2 : 문자열1과 문자열2가 다르면 참
-문자열 : 문자열이 널(null)이 아니면 참, 널 문자열이면 거짓
-정수1-eq정수2 : 두 개의 정수1과 정수2가 같으면 참
-정수1-ne정수2 : 두 정수가 다르면 참
-정수1-gt정수2 : 정수1이 정수2 보다 크면 참
-정수1-ge정수2 : 정수1이 정수2 보다 크거나 같으면 참


이외에도 -lt(작으면) -le(작거나 같으면), !(논리부정), -a(AND), -o(OR) 등과 같은 표현을 사용할 수 있으며, 괄호를 사용할 수도 있다.

time
프로그램이 수행되는 시간을 측정한다.


설명
time의 인수로 측정하고자 하는 명령을 준다. time은 세 가지 다른 형태의 시간 측정 결과를 보고한다. 실제로 얼마만큼의 시간이 걸렸는가 하는 real 커널이 사용한 시간을 제외하고 CPU에서 소비된 시간을 나타내는 user그리고 실제로 얼마만큼의 커널 시간을 할애했는가 하는 sys시간이 있다. sys+user 시간이 실제로 작업에 할애된 시간이며, real 값에서 sys+user 값을 뺀 결과값은 다른 프로세서 처리에 할당된 시간이다.


top
프로세서의 상태를 실시간으로 확인한다.


설명
top명령어는 현재 시스템의 메모리의 상태를 실시간으로 점검할 수 있는 장점이 있다. 현재 사용중인 프로세서와 사용중인 메모리 및 스왑의 양이 출력된다. 시스템을 주의 관찰해야 되는 경우에 사용하면 상당히 도움이 된다.


touch
파일의 엑세스 시간이나 갱신 시간을 수정한다.
$ touch [option] file
$ [-acm] MMDDhhmm[YY] file (obsolescent)
-a : change only the access time
-c : do not create any files
-d, --date=STRING : parse STRING and use it instead of current time
-f : (ignored)
-m : change only the modification time
-r, --reference=FILE : use this file's times instead of current time
-t STAMP : use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD : access -a, atime -a, mtime -m, modify -m, use -a
--help : display this help and exit
--version : output version information and exit


tr
특정한 문자들을 다른 문자로 변경한다. redirection과 함께 사용
$ tr [option] 변경할문자 변경문자
-c : 파일의 모든 내용을 보이지 않고 바꾸는 작업만 보여준다.
-d : 파일에서 변경할 문자를 제거한다.


설명
문자 표현시 백슬래쉬 문자 뒤에 8진법 숫자를 써서 문자 코드를 표현할 수 있다. 또한 [c1-c2]와 같은 하이픈 표현으로 문자의 범위를 지정할 수 있으며 [c*n]과 같은 방법으로 n 만큼의 문자 반복을 표현할 수도 있다. 변경할 문자의 변경 문자의 개수는 같아야 한다.


traceroute
네트웍크의 구간에 접속한 시간을 측정한다.
$ traceroute [IP Address 또는 Host]


true
셸 상에서 참의 의미를 가지는 0을 반환한다.


tty
현재 로그온 되어 있는 터미널의 장치 이름을 알려준다.
$ tty [-s]
-s : 표준 입력이 터미널 장치인지 아닌지를 시험한다. 터미널이 표준이라면 0을 반환하며 아니면 1을 반환한다.
tty : 현재 사용하고 있는 단말 장치의 이름을 경로와 함께 표준 출력


umask
파일을 생성할 때 현재 사용되고 있는 권한(permission)값의 마스크가 무엇인지 알려주거나 그것을 새로 지정할 때 사용된다.
$ umask [마스크]
마스크 값은 세 자리의 8진법 숫자로 구성된다. 이것을 마스크라고 부르는 이유는 마스크 값의 각 비트가 들어오는 값을 걸러내는
역할을 하기 때문이다. 즉 마스크 값이 0이면 권한 지정에 제한을 두지 않는다는 것이고 6이라면 읽기와 쓰기에 제한을 가한다는
의미가 되기 때문이다.


umount
설정된 마운트 정보를 해제한다.
$ umount 장치면 or mount_piont
$ umount -a
$ umount -t file_system_type
-a : 모든 파일 시스템의 마운트 정보를 해제한다.
-t : 특정 형태의 파일 시스템만을 선택하여 해제된다. 옵션 뒤에는 어떤 파일 시스템을 해제할 것인지 지정한다.


uname
시스템 이름과 다른 정보를 보여준다.
$ uname [option]
-s : 시스템 이름을 알려준다. (기본값으로 내장)
-n : 시스템의 노드(node) 이름을 알려준다.
-r : 오퍼레이팅 시스템의 증명번호를 알려준다.
-v : 오퍼레이팅 시스템의 버전(version) 번호를 알려준다.
-m : 하드웨어의 이름을 알려준다.
-a : 모든 정보를 알려준다. -snrvm 과 같다.


uncompress
compress로 압축되어 있는 file의 압축을 푼다.
$ uncompress file_name(s)

실상, compress의 -d 옵션을 사용하면 압축을 풀 수 있기 때문에 이 명령은 불필요하다. 하지만 옵션을 사용하는 것보다
의미있는 단어를 사용함으로 좀더 친숙하게 사용할 수 있다. uncompress는 자신이 압축 풀기 동작을 수행하는 것이 아니라
-d 옵션을 주어 compress를 호출한다. uncompress 자신의 파일 크기는 아주 적다.


users
간단히 사용자들의 ID 이름만을 알고자 할때 사용한다.


uptime
서버 부팅시간과 현재 시간이 출력된다.


uundecode / uuencode
uuencode는 USENET과 같이 ASC2 코드만을 다루는 미디어를 위해 바이너리 코드를 변환한다.
uudecode는 그 반대의 동작을 수행한다.
$ uudecode file..
$ uuencode file.. 이름


사용예
$ uuencode canexe.Z canexe.Z > exemail.uu
canexe.Z 라는 파일을 인코딩 작업을 거친 후 exemail.uu라는 파일로 저장한다. 이 파일을 디코딩하면 canexe.Z라는 이름으로 파일이 만들어진다.


vi
vi 에디터. 유닉스 계열의 운영체제에서 가장 널리 쓰이는 에디터


vi 명령어 요약
1. 시작
vi file : vi를 시작하여 지정한 파일 편집
vi -R file : 읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집
view file : 읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집

2. 종료
:wq : 데이터를 저장하고 종료
:q! : 데이터를 저장하지 않고 종료


3. 시스템이 다운된 후에 되살리기
vi -r : 되살릴 수 있는 모든 파일 이름 보여주기
vi -r file : vi를 시작하여 지정한 파일 되살리기

4. 디스플레이 제어하기
^L : 현재 화면을 다시 디스플레이하기
:set number : 내부 줄 번호 디스플레이
:set nonumber : 배부 줄 번호 디스플레이 않기
5. 마지막으로 지운 것 복사하기
p : 마지막으로 지워진 것을 커서의 뒤/아래에 삽입
P : 마지막으로 지워진 것을 커서의 앞/위에 삽입
xp : 두 문자를 바꿈
deep : 두 단어를 바꿈
ddp : 두 줄을 바꿈

6. 패턴 검색
/rexp : 지정된 정규 표현식에 대해 앞으로 이동
/ : 이전의 패턴에 대해 앞으로 검색을 반복
?rexp : 지정된 정규 표현식에 대해 뒤로 이동
? : 이전의 패턴에 대해 뒤로 검색을 반복
n : /나 ?명령에 대해 같은 방향으로 반복
N : /나 ?명령에 대해 반대 방향으로 반복


7. 약어의 사용
:ab short long : short를 long에 대한 약어로 변경
:ab : 현재 약어 목록을 표시
:una short : 약어 short를 표시

8. 줄 길이의 조정
r<Return> : 문자를 뉴라인으로 변경
J : 줄의 결합
:set wm=n : 오른쪽으로 n문자 위치에서 자동적으로 줄 나눔

9. 커서 이동
h<Left> : 커서를 한 칸 왼쪽으로 이동
j<Down> : 커서를 한 줄 아래로 이동
k<Up> : 커서를 한 줄 위로 이동
l<Right> : 커서를 한 칸 오른쪽으로 이동


<Backspace> : 커서를 한 칸 왼쪽으로 이동
<Space> : 커서를 한 칸 오른쪽으로 이동
- : 커서를 이전 줄의 처음으로 이동
+ : 커서를 다음 줄의 처음으로 이동
<Return> : 커서를 다음 줄의 처음으로 이동
0 : 커서를 현재 줄의 맨 앞으로 이동
$ : 커서를 현재 줄의 맨 끝으로 이동
^ : 커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동
w : 커서를 다음 단어의 첫 글자로 이동
e : 커서를 다음 단어의 끝 글자로 이동
b : 커서를 이전 단어의 첫 글자로 이동
W : w와 같음(문장 부호 무시)
E : e와 같음(문장 부호 무시)
B : b와 같음(문장 부호 무시)
( : 다음 문장의 처음으로 이동
) : 이전 문장의 처음으로 이동
{ : 다음 문단의 처음으로 이동
} : 이전 문단의 처음으로 이동
H : 커서를 화면 맨 위로 이동
M : 커서를 중간으로 이동
L : 커서를 맨 아래로 이동

10. 편집 버퍼를 통한 이동
^F : 한 화면 아래로 이동
^B : 한 화면 위로 이동
n^F : n화면 아래로 이동
n^B : n화면 위로 이동
^D : 반 화면 아래로 이동
^U : 반 화면 위로 이동
n^D : n줄만큼 아래로 이동
n^U : n줄만큼 위로 이동
11. 셸 명령 실행
:!command : vi를 중단하고 지정한 셸 명령을 실행
:!! : vi를 중단하고 이전의 셸 명령을 실행
:sh : vi를 중단하고 셸을 실행
:!csh : vi를 중단하고 새로운 C-셸을 실행

12. 패턴에 의한 치환
:s/pattern/replace/ : 현재 줄의 치환
:lines/pattern/replace/ : 지정한 줄의 치환
:line,lines/pattern/replace/: 지정한 범위의 치환
:%s/pattern/replace/ : 모든 줄의 치환

13. 데이터 읽기
:liner file : file의 내용을 지정한 줄 다음에 삽입
:r file : file의 내용을 현재의 줄 다음에 삽입
:liner !command : command의 결과를 지정한 줄 다음에 삽입
:r !command : command의 결과를 현재의 줄 다음에 삽입
:r !look pattern : 지정한 pattern으로 시작된 단어 삽입

14. 정규 표현식을 사용하기 위한 특수 기호
. : 뉴라인을 제외한 모든 단일 문자와 대응
* : 영 또는 그 이상의 선행 문자와 대응
^ : 줄의 시작과 대응
$ : 줄의 끝과 대응
\< : 단어의 시작과 대응
\> : 단어의 끝과 대응
[ ] : 묶여진 문자중의 하나와 대응
[^ ] : 묶여진 문자를 제외한 아무것하고나 대응
\ : 이어지는 기호를 문자 그대로 해석


15. 줄 번호
nG : 줄번호 n으로 건너뛰기
1G : 편집 버퍼의 첫 줄로 건너뛰기
G : 편집 버퍼의 마지막 줄로 건너뛰기
:map g lG : g가 lG와 같도록 매크로 정의

16. 삽입
i : 입력 모드로 전환, 커서 위치 앞에서 삽입
a : 입력 모드로 전환, 커서 위치 뒤에서 삽입
I : 입력 모드로 전환, 현재 줄의 앞에 삽입
A : 입력 모드로 전환, 현재 줄의 끝에 삽입
o : 입력 모드로 전환, 현재 줄의 아래에 전개
O : 입력 모드로 전환, 현재 줄의 위에 전개

17. 편집하고 있는 파일을 바꾸기
:e file : 지정한 파일의 편집
:e! file : 지정한 파일의 편집, 자동 점검의 생략

18. 내용 고치기
r : 단지 한 글자만 변경(입력 모드로 바뀌지 않음)
R : 입력하는 대로 겹쳐 써서 변경
s : 삽입에 의해 한 단어의 변경
C : 커서의 위치로부터 줄 끝까지 삽입에 의한 변경
cc : 전체 줄을 삽입에 의한 변경
S : 전체 줄을 삽입에 의한 변경
cmove : 커서부터 move까지 삽입에 의해 변경
~ : 대,소문자 바꾸기
19. 고치기의 취소 또는 반복
u : 편집 버퍼를 수정했던 마지막 명령을 취소
U : 현재 줄을 저장
. : 편집 버퍼를 수정했던 마지막 명령 반복

20. 문자 삭제
x : 커서가 있는 문자 삭제
X : 커서의 왼쪽 문자 삭제
D : 커서부터 줄의 끝까지 삭제
dd : 현재 줄의 전체 삭제
dmove : 커서부터 move까지 삭제
dG : 커서부터 편집 버퍼의 끝까지 삭제
d1G : 커서부터 편집 버퍼의 맨 앞까지 삭제
:lined : 지정한 줄의 삭제
:line, lined : 지정한 범위의 삭제

21. 여러 줄의 복사와 이동
:linecotarget : 지정한 줄을 복사하여 target 줄 밑에 삽입
:line, linecotarget : 지정한 범위를 복사하여 target 줄 밑에 삽입
:linemtarget : 지정한 줄로 이동하여 target 줄 밑에 삽입
:line, linemtarget : 지정한 범위로 이동하여target 줄 밑에 삽입

22. 데이터를 처리하기 위한 셸 명령의 사용
n!!command : n번 줄에서 command의 실행
!move command : 커서부터 move까지 command 실행
!move fmt : 커서부터 move까지 줄들을 형식 맞추기

23. 데이터 저장하기
:w : 원래의 파일로 데이터를 저장
:w file : 지정한 파일로 데이터를 저장
:w>> file : 지정한 파일에 데이터를 추가


w
현재 시스템에 접속한 사용자들의 정보를 출력한다.
$ w [user]


wait [작업번호] --백그라운드 실행 종료

wall
현재 시스템에 로그온되어 있는 모든 사용자들에게 메시지를 보낸다.
$ wall [message]
메시지는 각 사용자의터미널에 나타나게 된다. 인수로 파일 이름이 주어지지 않으면 표준 입력으로부터 데이터를 받아들이며, ^D로
입력을 종결하고 메시지를 발송한다. 이것을 사용하려면 슈퍼 유저로 로그인되어야 한다. 사용자가 자신의 터미널을 메시지 수신 거부
상태로 만들어 놓더라도 슈퍼 유저는 그것을 무시할 수 있다.


wc
file 내의 단어 수 등의 정보를 출력한다.
$ wc [option] file(s)
-c : 문자(character)의 개수만을 알고 싶을 때 사용한다.
-w : 단어(word)의 개수만을 알고 싶을 대 사용한다.
-l : 행(line)의 숫자를 알고 싶을 때 사용한다. 혹은 개행 문자의 개수를 알고자 할 때 사용될 수도 있다.


whereis
문자열 또는 file을 검색한다.


which
등록된 path를 통해서 특정 프로그램을 찾는다.


who
현재의 시스템에 접속한 사용자의 이름이나 로그온 정보를 보여준다.
$ who [ -uTHqs ] [로그온 정보파일 ]
-u : 현재 시스템에 누가 로그온되어 있는지 보여준다.
-T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. +기호는 메시지를 쓸 수 있고, -는 그렇지 않음을 보여준다.
-H : 헤더 라인을 프린트한다.
-q : 사용자 이름과 카운트가 구분된 목록을 보여줌, 다른 옵션은 무시된다.
-s : 호환을 위해 포함된 옵션으로 무시된다.
who : 유닉스 시스템에 로그인 되어 있는 사용자들에 대한 정보를 화면에 표시


whoami
현재 접속한 계정명 확인 및 접속자의 정보를 출력한다.
$ whoami


write
사용자의 터미널 사이에 메시지를 전달한다.
$ write [user] [tty]

시지를 전달하고자 하는 사용자의 이름을 지정한다. 만일 한 사용자의 이름으로 두 명 이상이 사용중이면 특정 터미널을
지정하여(tty) 메시지를 전달할 수 있다. write는 표준 입력 장치로 전달할 메시지를 입력받는다. 각행에서 리턴 키를 누를
때마다 메시지가 전달되며, ^D를 누르면 그만둔다.


메시지가 수신되면 'Message from 보낸사람 터미널'등의 정보를 보여주어서
누가 어느 터미널에서 메시지를 보내는지를 알 수 있도록 한다. 보내고자 하는 사람이 로그인되어 있지 않다면 'user is
not logged on이라고' 알려주며 만일 그 사람의 터미널이 메시지 수신을 거부하고 있는 상태라면 'permission
denied 라는' 말을 보여준다. 그는 아마도 mesg n 명령을 사용했을 것이다.


xdm
X-Widows상에서 login screen을 보여준다.
어떤 system은 특정 level로 가도록 지정하면 xdm을 시동시킨다(/etc/inittab를 보도록).
리눅스 부팅 스크립트에 넣어두면 리눅스를 처음 부팅할 때부터 엑스윈도우로 부팅할 수 있다.


zcat
데이터를 다른 명령에 파이프 하려는 경우 사용하는 명령어


cat 명령과 똑같이 작업하지만 입력으로 압축된 파일이 필요하다.
zcat은 파일을 압축 해제한 후 표준 출력 디바이스에 프린트한다.
zcat namelist | program1 | program2 ...


'공부' 카테고리의 다른 글

오라클 힌트사용하기  (0) 2012.01.02
Oracle 날짜함수  (0) 2011.08.08
ORACLE에서 제공되는 내장함수  (0) 2011.08.08
스프링을 공부하기전에  (0) 2011.07.01
공부의 필요성을 느끼다...  (0) 2011.06.08

트랜젝션이란

공부/용어2011. 12. 13. 09:48
트랜잭션(Transaction)은 ATM, 데이터베이스 등의 시스템에서 사용되는 쪼갤 수 없다는 업무처리의 단위이다.
영어의 Transaction은 거래를 뜻한다. 예를 들어 돈을 주었는데 물건을 받지 못한다면, 그 거래는 이루어 지지 못하고 원상태로 복구되어야 한다. 이와 같이 쪼갤 수 없는 하나의 처리 행위를 원자적 행위라고 한다. 여기서 쪼갤 수 없다는 말의 의미는 실제로 쪼갤 수 없다기 보다는 만일 쪼개질 경우 시스템에 심각한 오류를 초래할 수 있다는 것이다. 이러한 개념의 기능을 ATM 또는 데이터베이스 등의 시스템에서 제공하는 것이 바로 트랜잭션이다.
트랜잭션은 사용자가 시스템에 요구를 시작하여 시스템 내의 처리, 시스템에서 사용자에게 응답하는 모든 처리를 포함한다. 이러한 트랜잭션이 충족해야 하는 기술적인 요건은 ACID가 있다.
[편집]종류

트랜젝션의 범위에 따라 다음과 같이 분류된다.
로컬 트랜잭션 (Local Transaction)
단위 시스템에서 처리되는 트랜잭션으로 트랜잭션에 대한 관리를 DBMS에서 담당한다.
분산 트랜잭션 (Distributed Transaction)
여러 개의 시스템에서 처리되는 트랜잭션이다. 여러 DBMS에 걸친 트랜잭션을 담당하는 경우도 많아서 주로 미들웨어에서 트랜젝션 관리를 담당한다.
[편집]예

ATM에서의 인출 거래는 하나의 트랜잭션이다. 인출 거래는 사용자로부터 필요한 정보를 입력받고 사용자의 계좌를 조회하고 잔고를 확인하여 요청 금액을 지불할 수 있는지 살펴보고, 잔고를 감소시킨 후 현금을 지급하는 일련의 절차이다. 만약 정전 또는 통신망 장애 등으로 인해 도중에 중단되면 인출 거래 전의 상태로 복구될 것이다. 데이터베이스에서 여러 개의 질의를 트랜잭션으로 묶어 놓은 경우도 마찬가지이다.

출처 :http://ko.wikipedia.org/wiki/트랜잭션



트랜잭션은 응용 프로그램에서 모두 성공적으로 완료하지 않으면 각 작업의 변경 사항이 철회되는 일련의 작업입니다. 예를 들어 당좌 계좌의 자금을 저축 계좌로 대체하는 것은 다음 단계로 구성된 트랜잭션입니다.

당좌 계좌에 대체에 충분한 자금이 있는지 확인합니다.

당좌 계좌에 충분한 자금이 있을 경우 당좌 계좌의 금액을 차변에 기입합니다.

저축 계좌의 대변에 자금을 기입합니다.

당좌 계좌 로그에 대체를 기록합니다.

저축 계좌 로그에 대체를 기록합니다.

이 단계 중 어느 한 단계라도 실패할 경우 이전 단계의 모든 변경 사항이 철회되고 당좌 계좌와 저축 계좌는 트랜잭션 시작 전과 동일한 상태가 되어야 합니다. 이 이벤트를 롤백이라고 합니다. 모든 단계가 성공적으로 완료되면 트랜잭션은 완결된 상태에 있습니다. 트랜잭션은 완결 또는 롤백 상태로 종료됩니다.

'공부 > 용어' 카테고리의 다른 글

WS(Web Server) 와 WAS(Web Application Server) 정의  (0) 2011.11.08

Spring IOC

공부/Spring2011. 12. 12. 22:19

-Spring 에서의 IOC

Spring 프레임워크를 보면 Lightweight Container 라는 단어나 IoC라는 단어가 자주 나온다.

Spring 프레임워크를 이해하기 위해서 가장 먼저 이해해야 하는 것은 IOC 개념이다. 또한  이 IOC 개념이 Container 기능이 된다.

Spring 프레임워크에는 여러가지 모듈이 있는데 IoC모듈은 모든 Spring 모듈의 가장 기본적인 Core 기능을 제공함으로 그만큼 중요하다고 할수 있다.

-Container, Lightweight Container 란

컨테이너의 기본 틍징을보면
Lifecycle Management
Lookup
Configuration
Depenency Resolution
Thread Management
Object Pooling
Clustering Management
Remotion
Exposing remote services
Customization and extensibility

등의 기능을 포함 한다는 것이다.

컨테이너는 여러가지 면에서 반드시 필요한데 첫쨰로 컴포넌트/오브젝트의 자유로운 삽입(Pluggability)이 가능하도록 하기위한
calling code 의 독립성 떄문이다. 둘쨰는 서비스의 lookup이나 configuration이 일관성을 갖도록 하기 위한 것이다.
셋쨰는 단일화된 서비스의 접근방법을 제공하기 위한것이다. 예로 개발자 각자 자기만의 스타일로 싱글톤이나 팩토리를 만들어 쓸 필요가 없어야 한다는 것이다. 넷쨰는 비지니스 오브젝트에 부가적으로 필요로하는 각족 enterprise service를 제공하기 위해서이다.

그렇다면 lightweight Container 의 특징은 무엇일까? 일반 컨테이너처럼 애플리케이션 코드를 관리해 주지만 그 코드 내에 컨테이너에 대한 의존적인 부분들이 필요 없도록 해준다. 코드 내에 컨테이너에서 동작하기 위해서 특별히 필요로하는 부분이 없기떄문에 가볍다고 할수있는것이다.
컨테이너를 알지못하는 오브젝트 또는 알 필요도 없는 오브젝트를 가능하게 해준다는 것이다. 이는 컨테이너 내에 오브젝트를 배치(deploy) 하기 위한
복잡한 과정이 없다는 것을 의미한다. 컨테이너  그 자체로 가볍다는것을 의미한다.

'공부 > Spring' 카테고리의 다른 글

About Spring  (0) 2011.12.12
엔티티 빈  (0) 2011.07.26
RMI(원격 메소드 호출, Remote Method Invocation)  (3) 2011.07.04