posted by 구름너머 2007. 2. 14. 15:09

crontab에 등록이 되었는데 실행이 안되는경우?

질문자>crontab에 등록이 되었는데 실행이 안되는경우?

실행파일을 직접 유닉스 프롬프트상에서는 실행시는 정상처리됨.

해결자>crontab 에 등록한 shell 이 실행될때 환경이 달라서 그런거니까
등록한 shell 내부 또는 crontab 등록시 .profile 실행하게끔 하면 됨

예>해당 실행할 shell의 첫줄에 다음을 추가한다.

~/.profile

<기타>

crontab 작업등록시 주의사항!

man crontab 대신에 crontab /?란 명령어를 도스를 사용해본 사람이실수로 입력하게되면

어떤 유닉스 머신은 기존의 crontab 정보를 삭제하는 버그가 있음.

따라서 항상 다음과 같은 절차로 작업하시길....

$>crontab -l ==>현재 등록된 crontab 목록을 보여줌! 만약의 사고시

화면 출력된 내용을 그대로 복사해서 재입력하면됨!

$>crontab -l > crontab_bk_YYYYMMDD.txt ===>해당 text로 목록을 저장함!

$>crontab -e ==>crontab 수정모드로 들어감..

만약 여기서 vi 에디터로 들어가질 않을 경우는 아래를 실행 후 실행한다.

$>EDITOR=vi
$>export EDITOR

$>crontab -e

'UNIX' 카테고리의 다른 글

XML 프로젝트들  (0) 2007.03.13
exec와 system  (0) 2007.03.05
gdb  (0) 2007.02.12
Unix에서 100MB이상인 자료 찾기...  (0) 2007.01.19
unix에서 .profile변경시 다시 로그인 하지 않고 적용하는 방법  (0) 2006.09.19

gdb

posted by 구름너머 2007. 2. 12. 17:30
http://compiler.snu.ac.kr/yanne/ToolManuals/gdb.doc 문서의 HTML 버전입니다.
G o o g l e은 웹문서를 수집하면서 자동적으로 문서의 HTML 버전을 생성합니다.
다음의 페이지 주소를 즐겨찾기 목록에 저장하시고 싶으시면 다음의 URL을 보관하세요: http://www.google.com/search?q=cache:P9Ty2oDDC04J:compiler.snu.ac.kr/yanne/ToolManuals/gdb.doc+core+%ED%8C%8C%EC%9D%BC+%EB%B6%84%EC%84%9D&hl=ko&ct=clnk&cd=4&gl=kr&lr=lang_ko


Google은 이 페이지의 작성자와 관련이 없으며 따라서 페이지 내용에 대한 책임도 없습니다.
다음의 검색어들이 하이라이트 되었습니다:core파일분석

GDB 사용하기

  1. GDB

GDB같은 디버거의 목적은 다른 프로그램 수행 중에 프로그램내부에서무슨 일이 일어나고 있는지 보여주거나 프로그램이 잘못 실행되었을 무슨 일이 일어나고 있는지 보여주는 것이다. GDBC, C++, Modula-2 프로그램을 디버그 있다.

쉘에서 gdb GDB 시작하면 quit 종료명령을 주기전까지는 터미널로부터 명령라인을 읽어 들인다. help명령을 사용하여 gdb내부에서 도움말을 있다.

디버깅을 하기 위해서는 –g옵션을 주고 컴파일/링크 해야 한다. 만약 링크가 libg.a 찾을 없다고 하면서 실패하게 되면, /usr/lib/ligb.a 갖고 있지 않기 때문이다. 파일 특별한 라이브러리로서 디버깅 가능 C라이브러리이다. libc 패키지에 포함되어 있거나 또는 libc 소스 코드를 받아서 컴파일 하면 생긴다. /usr/lib/libc.a /usr/lib/libg.a 링크 시켜도 된다.

  • 코어파일 분석하기

코어파일 충돌할 당시 프로세스의 메모리 이미지를 덤프한 것이다. 코어파일 gdb 함께 사용하여 프로그램의 상태를 조사하고 실패 원인을 규명할 있다. 어떤 예기치 않은 일이 발생하여 비정상적인 종료가 발생할 운영체계는 디스크에 코어 파일 남긴다.메모리에 관한 문제는 Checker 패키지를 사용하여 예방할 있다. 하지만 메모리 fault 일으키는 경우에는 충돌하면서 파일 덤프한다. 코어파일 일반적으로 프로세스를 실행시킨 현재 작업 디렉토리에 생성되지만 프로그램 내에서 작업 디렉토리를 바꾸는 경우도 있다.

보통 리눅스는 부팅시에 코어 파일 만들지 않도록 세팅되어 있다. 코어 파일 생성을 가능케 하려고 한다면 그것을 다시 가능케 하는 셀의 내장 명령을 사용한다.

만약C 호환 (tcsh) 쓰고 있다면 다음과 같이 명령을 내린다.

% limit core unlimited

만약 본쉘류( sh , bash , zsh , pdksh ) 사용하고 있다면,

$ ulimit –c unlimited

같은 명령을 내린다.

코어파일 함께 사용하기 위해선 다음과 같이 한다.

% gdb program core


  • 실행 중인 프로그램 디버깅하기

gdb 이미 실행중인 프로그램도 디버깅할 있게 해준다. 프로세스 실행을 가로채고 조사한 다시 원래 상태로 실행하도록 있다. attach명령을 사용하여 실행중인 프로세서에 gdb 붙인다. attach 명령을 사용하기 위해서는 프로세스에 해당하는 실행 프로그램에 허가권을 가지고 있어야 한다. 예를 들어 프로세스 ID 254번으로 실행 중인 pgmseq 프로그램이 있다면 다음과 같이 한다.

% gdb pgmseq

% attach 254

다음과 같이 해도 된다.

% gdb pgmseq 254

일단 gdb 실행 중인 프로세스에 부착되면 프로그램을 일시 중지 시키고 gdb명령을 사용할 있도록 제어권을 가져온다. break 사용하여 중지점을 사용할 있고 중지점에 이를 때까지 실행하도록 continue 명령을 사용할 있다.

detach명령을 사용하여 gdb 실행 중인 프로세스에서 떼어 낸다. 필요에 따라 다른 프로세스에 대하여 attach명령을 사용할 있다.

  1. gdb시작하기

% gdb- gdb를 먼저 실행 후file이라는 명령으로 program을 부른다.

% gdb program- 일반적인 방법이다.

% gdb program core- 코어파일을 사용할 때 동시에 인자로 준다.

% gdb program 1234- 실행중인 프로세스를 디버그 하려면 프로세스 ID를 번째 인자로 주면 된다. 명령은 gdb (‘1234’ 이름의 파일 없다면) 프로세스 1234 접속시킨다.(gdb core파일 먼저 찾는다.)

실행절차

% gcc –g test.c –o test

% gdb test

명령을 실행하면 다음과 같은 메시지가 나타난다.

% gdb test

GNU gdb 4.18

Copyright 1998 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

Welcome to change it and/or distribute copies of it under certain conditions.

Type “show copying” to see the conditions.

There is absolutely no warranty for GDB. Type “show warranty” for details.

This GDB was configured as “i386-redhat-linux”...

(gdb)


  1. 많이 사용하는 GDB명령어

list현재 위치에서 소스 파일 내용을 10 보여준다

list 2, 15 : 소스 파일2 ~ 15 까지를 보여준다.

run프로그램을 시작한다.(break 있다면 break까지 실행)

run arg : 새로운 인수를 가지고 프로그램을 시작한다.

arg “*” “[…]” 포함할 수도 있다.

쉘의 사용까지도 확장될 있다.

“<”,“>” , “>>”같은 입출력 방향 재지정기호도 또한 허용된다.

break특정 라인이나 함수에 정지점을 설정한다.

break function : 현재 파일 안의 함수 function 정지점을 설정한다.

break file:function : 파일file안의 function 정지점을 설정한다.

watch : 감시점 설정(감시점은 어떤사건이 일어날 때에만 작동한다)

until : 실행중 line까지 실행

clear특정 라인이나 함수에 있던 정지점을 삭제한다.
delete몇몇 정지점이나 자동으로 출력되는 표현을 삭제한다.
next다음 행을 수행한다. 서브루틴을 호출하면서 계속 수행한다.

호출이 발생하지 않으면 step 같다.

next n : 이를 n 수행하라는 의미

step 줄씩 실행 시킨다.

함수를 포함하고 있으면 함수 내부로 들어가서 줄씩 실행시킨다.

printprint expr : 수식의 값을 보여준다.
display현재 display 명령의 목록을 보여준다.
bt프로그램 스택을 보여준다. (backtrace)
kill디버깅 중인 프로그램의 실행을 취소한다.
filefile program : 디버깅할 프로그램으로서 파일 사용한다.
contcontinue : 현재 위치에서 프로그램을 계속 실행한다.
help명령에 관한 정보를 보여주거나 일반적인 정보를 보여준다.
quitgdb에서 빠져나간다.






  1. gdb 해보기

예제1

% vi test.c

1 #include <stdio.h>

2

3 main()

4 {

5 int i;

6 double j;

7 /*다음은i/2+i 값을 출력하는 문이다.

8 i1이면 j1.5 되어야 하지만 실제는 그렇지 않다.*/

9 for( i=0; i<5 ; i++){

10 j=i/2+i;

11 printf(“j is %f \n”,j);

12 }

13 }

% gcc –g test.c –o test

% test

실행이 되지 않으면 mv test a.out으로 하여a.out 실행시킨다. 실행을 시키면 원하는 답이 아니다. 그러면 gdb 해보자.

% gdb a.out

(gdb) list // list는 소스 내용을 10줄씩 보여준다.

1#include <stdio.h>

2

3main()

4{

5int i;

6double j;

7/*다음은i/2+i 값을 출력하는 문이다.

8i1이면 j1.5 되어야 하지만 실제는 그렇지 않다.*/

9 ( i=0; i<5 ; i++){

j=i/2+i;

(gdb) b 9 // break 9 : for 문에 이상이 있다고 판단하여 line 9 breakpoint 잡는다.

Breakpoint 1 at 0x80483d6: file test.c, line 9.

(gdb) r // run : breakpoint까지 실행된다.

Starting program: /home/pllab/chowing/gdb/a.out

Breakpoint 1, main () at test.c:9

9 for( i=0; i<5 ; i++){

(gdb) s// step : 한줄 실행시킨다.

j=i/2+i;

(gdb) s

11 printf(“j is %f \n”,j);

(gdb) p j// print j : j 값을 본다.

$2 = 0

(gdb) n

j is 0.000000

for( i=0; i<5 ; i++){

(gdb) display i

(gdb) display j

(gdb) n

11 printf(“j is %f \n”,j);

2: j = 1

1: i = 1

// 10 line에서 실행 i=1 , j=1이므로 10 line에서 잘못된 것을 있다.

// 10 line j = (double) i/2 + i; 고친다.

(gdb) quit

예제2

% vi hab.c

1 #include <stdio.h>

2

3 int hab(int x, int y);

4

5 main(void)

6 {

7 int a, b,dab;

8 printf(“정수a, b 입력하시오”);

9 scanf(“%d %d”,&a,&b);

10 dab = hab(a,b);

11 printf(“\n%d + %d = %d \n”,a,b,dab);

12 }

13 int hab(int x, int y)

14 {

15 return (x + y);

16 }


// 프로그램은 이상은 없다. 스택을 보기 위한 것이다.

// 여러 곳에서 호출되는 함수 안에서 충돌이 일어날 경우를 생각해 보자. 때는 함수가 어디로부터 호출되었는지 그리고 어떤 상황에서 충돌이 일어났는지 파악하고자 것이다.

backtrace (bt) 명령을 이용하면 충돌이 일어난 시점에서 프로그램의 현재 호출 스택(call stack) 상태를 있다. 호출 스택은 현재 함수까지 이르는 호출 목록이다. 함수를 호출할 때마다 보관된 레지스터 , 함수 전달 인수, 지역 변수 등의 자료를 스택에 push한다. 이렇게 해서 함수들은 스택상에 일정 공간을 차지한다. 특정함수에 대하여 스택에서 사용되고 있는 메로리 부분을 스택프레임(frame)이라 부르며 호출 스택은 이러한 스택 프레임을 순서대로 정렬한 목록이다.

% gdb hab

(gdb) b 10 Breakpoint 2 at 0x8048428: file hab.c, line 10.

(gdb) r

Starting program: /home/pllab/chowing/gdb/hab

정수a, b 입력하시오3 4

breakpoint 2, main () at hab.c:10

10dab = hab(a,b);

(gdb) bt// 현재 스택에 main 있다.

#0 main () at hab.c:10

(gdb) s

hab (x=3, y=4) at hab.c:15

15 return (x + y);

(gdb) bt// 지금은 스택에 hab 있다.

#0 hab (x=3, y=4) at hab.c:15

#1 0x8048435 in main () at hab.c:10

(gdb) frame 0// hab 상태를 점검하기 위해서 스택 프레임0번으로 이동

#0 hab (x=3, y=4) at hab.c:15

15 return (x + y);

(gdb) up// hab 어떻게 호출되었는가를 보기 위하여 상위 스택프레임으로 이동

#1 0x8048435 in main () at hab.c:10

dab = hab(a,b);

(gdb) finish

(gdb) info program// 프로그램의 실행 상태를 보여 준다.

Using the running image of child Pid 12909.

Program stopped at 0x804843d.

It stopped after being stepped.

(gdb) info locals// 현재 함수 내에서 모든 지역 변수 이름과 값을 출력한다.

a = 3

b = 4

dab = 7

(gdb) info variables// 소스파일 순서대로 프로그램 내에 알려져 있는 모든 변수를 출력한다.

(gdb) info address a// 어떤 변수가 어디에 저장되어 있는지에 대하여 알려 준다.

Symbol “a” is a local variable at frame offset -4.

// a 스택프레임 꼭대기로부터4바이트 아래에 놓여 있다는 뜻이다.

(gdb) info frame// 현재 프레임 정보를 보여 준다.

Stack level 0, frame at 0xbffff848:

eip = 0x804843d in main (hab.c:11); saved eip 0x400301eb

source language c.

Arglist at 0xbffff848, args:

Locals at 0xbffff848, Previous frame’s sp is 0x0

Saved registers:

ebp at 0xbffff848, eip at 0xbffff84c

예제3

% vi core.c

1 #include <stdio.h>

2

3 main()

4 {

5 char *bug = NULL;

6

7 strcpy(bug,“debug”);

8 printf(“bug is %s \n”,bug);

9

10 return;

11 }

12

% coredebug

Segmentation fault

// core 파일 생성

% gdb coredebug

(gdb) b 7

Breakpoint 1, main () at core.c:7

7 strcpy(bug,”debug”);

(gdb) p bug

$1 = 0x0// gdb 에서0x0는 null이다. 즉 번지가 없다.

(gdb) s

Program received signal SIGSEGV, Segmentation fault.

0x40075434 in ?? ()

// strcpy에서 segmentation fault 발생한 것을 있다.

// bug 번지를 할당하면 된다.

% gdb corebug core// core파일 이용하면 bug정보가 나온다.

GNU gdb 4.18

Copyright 1998 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

welcome to change it and/or distribute copies of it under certain conditions.

Type “show copying” to see the conditions.

There is absolutely no warranty for GDB. Type “show warranty” for details.

This GDB was configured as “i386-redhat-linux”...

warning: core file may not match specified executable file.

Core was generated by ‘a.out’.

Program terminated with signal 11, 세그멘테이션 오류.

Reading symbols from /lib/libc.so.6...done.

Reading symbols from /lib/ld-linux.so.2...done.

#0 strcpy (dest=0x0, src=0x8048490 “debug”) at ../sysdeps/generic/strcpy.c:38

../sysdeps/generic/strcpy.c: 그런 파일이나 디렉토리가 없음.

gdb signal 11 번과 함께 코어 파일 생성되었음을 알려 준다. 여기서는 허가받지 않은 메모리 공간에 읽기, 쓰기를 시도했기 때문에 커널이 프로세스에게 signal 11 보냈다.

시그널로 인해 프로세스는 종료하면서 코어 파일 덤프한다.

  • 기타 기능

gdb 매우 많은 기능을 가진 프로그램이다.

Breakpoint

중지점을 조건적으로 설정할 있다. 어떤 동작이 참일 때만 작동하도록 있다. Ex) break 184 if (stace == 0)

info break 사용하면 모든 중지점과 감시점 목록을 보여 주고 상태도 보여 준다.

disable 사용하여 작동불능으로 있고 enable 사용하여 가능하게 수도 있다.

인스트럭션 레벨 디버깅

gdb 통해 인스트럭션 레벨의 디버깅을 있으므로 프로그램의 매우 깊은 내부까지 조사할 있다.

(gdb) disass play //play함수에 대한 디스어셈블리.

(gdb) display/ i $pc//현재의 인스트럭션을 보여준다. $pc gdb내부 변수로서 현재 인스트럭션의 위치를 가리키는 프로그램 카운터이다.

참고

GDB 대한 매뉴얼은

http://kkucc.konkuk.ac.kr/~kipal/html/gdb-man.html에서 있다.

(복사본)

http://pl.changwon.ac.kr/~chowing/gdb_man.html

posted by 구름너머 2007. 1. 19. 14:54

Unix에서 100MB이상인 자료 찾기...

특정한 기간의 특정한 파일사이즈 이상인 자료 찾기...


$>find ./file_mt ./file_pbs -size +204800 -mtime +1 -mtime -10


루트에서 file_mt폴더 이하와
file_pbs폴더 이하에서
최근 10일이내에 만들어지고
파일사이즈가 204,800blocks이상인 파일들의 목록을 조회하는 쿼리입니다.

1block은 512bytes이므로 204,800blocks는 100MB입니다.

아래도 같은 의미입니다.

c가 붙으면 blocks단위가 아니고 bytes단위로...
$>find ./file_mt ./file_pbs -size +104857600c -mtime +1 -mtime -10

'UNIX' 카테고리의 다른 글

crontab에 등록이 되었는데 실행이 안되는경우?  (0) 2007.02.14
gdb  (0) 2007.02.12
unix에서 .profile변경시 다시 로그인 하지 않고 적용하는 방법  (0) 2006.09.19
arg list too long  (0) 2006.09.08
grep 명령어  (0) 2006.09.07
posted by 구름너머 2006. 9. 19. 09:31

unix에서 .profile변경시 다시 로그인 하지 않고 적용하는 방법

$>. ./.profile

'UNIX' 카테고리의 다른 글

gdb  (0) 2007.02.12
Unix에서 100MB이상인 자료 찾기...  (0) 2007.01.19
arg list too long  (0) 2006.09.08
grep 명령어  (0) 2006.09.07
간단한 network 명령외... for DOS and UNIX  (0) 2006.08.31
posted by 구름너머 2006. 9. 8. 10:27

현재 사용하는 컴팩장비에서

ls명령으로 조회시 파일수가 많으면 "arg list too long" 이란 메시지가

나면서 조회가 불가능하다.

원인은 서버 설정문제.

2.방법2: 아래와 같은 방법으로 조회한다.

$ls *.log

ksh: /bin/ls: arg list too long

$ls | grep log

또는

$ls -lrt | grep log

1.방법1: 설정 값을 변경한다.

Last Updated:2000-12-14Solution-id:253.0.10495272.2883413
Environment:
Tru64 Unix
ARG_MAX
Problem Description:
Error ksh: /bin/rm: arg list too long
Unable to delete 1400 files using /sbin/rm *
Solution:
# pwd
# ls | xargs -t -i rm*
NOTE: Take care using rm especialy in the / directory. This can destroy the system.
Cause:
Exceed system limit - "arg list too long" - Is a Tru64 Unix limit defined as ARG_MAX in the limits file. This is a predefined value of 38912 bytes. This is a set value. Excerpt from errno man page- Arg list too long Indicates that the specified argument and environment lists exceed the system limit of ARG_MAX bytes, or the number of bytes in the message exceeds the predefined limit.

Excerpt from: /usr/sys/include/sys/syslimits.h

#define ARG_MAX 38912 /* max bytes for an exec function */

Excerpt from exec man page - ERRORS The exec functions set errno to the specified values for the following conditions: The number of bytes used by the new process image's argument list and environment list is greater than ARG_MAX bytes.
buy online or call 1.800.AT.COMPAQ

posted by 구름너머 2006. 9. 7. 13:41
출처 블로그 > 마하나임의 세상쏘기
원본 http://blog.naver.com/almdri1004/50007077472
1 grep 명령어

3.1.1 grep의 의미

grep : 파일 전체를 뒤져 정규표현식에 대응하는 모든 행들을 출력한다.
egrep : grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.
fgrep : fixed grep 이나 fast grep으로 불리며, 모든 문자를 문자 그래도 취급한다. 즉,
정규표현식의 메타문자도 일반 문자로 취급한다.

3.1.2 grep의 동작 방법

grep에서 사용하는 정규표현식 메타문자
메타문자
기 능
사용 예
사용 예 설명
^
행의 시작 지시자
'^love'
love로 시작하는 모든 행과 대응
$
행의 끝 지시자
'love$'
love로 끝나는 모든 행과 대응
.
하나의 문자와 대응
'l..e'
l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
*
선행문자와 같은 문자의 0개 혹은 임의개수와 대응
' *love'
0개 혹은 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응
[]
[] 사이의 문자 집합중 하나와 대응
'[Ll]ove'
love나 Love를 포함하는 행과 대응
[^ ]
문자집합에 속하지 않는 한 문자와 대응
'[^A-K]love'
A와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열과 대응
\<
단어의 시작 지시자
'\
love로 시작하는 단어를 포함하는 행과 대응(vi,grep에서 지원)
\>
단어의 끝 지시자
'love\>'
love로 끝나는 단어를 포함하는 행과 대응
(vi,grep에서 지원)
\(..\)
다음 사용을 위해 태그를 붙인다.
'\(lov\)ing'
지정된 부분을 태크1에 저장한다. 나중에 태그값을 참고하려면 \1을 쓴다. 맨 왼쪽부터 시작해 태그를 9개가지 쓸 수 있다. 왼쪽 예에서는 lov가 레지스터1에 저장되고 나중에 \1로 참고할 수 있다.
x\{m\}
문자 x를 m번 반복한다.
'o\{5\}'
문자 o가 5회 연속적으로 나오는 모든 행과 대응
x\{m,\}
적어도 m번 반복한다.
'o\{5,\}'
문자 o가 최소한 5회 반복되는 모든 행과 대응
x\{m,n\}
m회 이상 n회 이하 반복한다.
o\{5,10\}'
문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응

grep의 옵션
옵션
동작 설명
-b
검색 결과의 각 행 앞에 검색된 위치의 블록 번호를 표시한다. 검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다.
-c
검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.
-h
파일 이름을 출력하지 않는다.
-i
대소문자를 구분 하지 않는다.(대문자와 소문자를 동일하게 취급).
-l
패턴이 존재하는 파일의 이름만 출력한다.(개행문자로 구분)
-n
파일 내에서 행 번호를 함께 출력한다.
-s
에러 메시지 외에는 출력하지 않는다. 종료상태를 검사할 때 유용하게 쓸 수 있다.
-v
패턴이 존재하지 않는 행만 출력한다.
-w
패턴 표현식을 하나의 단어로 취급하여 검색한다.

# grep -n '^jack:' /etc/passwd
(/etc/passwd 파일에서 jack을 찾는다. jack이 행의 맨 앞에 있으면 행 번호를 화면으로 출력한다.)

3.1.3 grep과 종료 상태
grep은 파일 검색의 성공 여부를 종료 상태값으로 되돌려준다.
패턴을 찾으면 0, 패턴을 찾을 수 없으면 1,파일이 존재하지 않을 경우 2
sed,a자 등은 검색의 성공 여부에 대한 종료 상태값을 반환하지 않는다. 다만 구문 에러가
있을 경우에만 에러를 보고한다.

3.2 정규표현식을 사용하는 grep의 예제
# grep NW datafile
# grep NW d*
(d로 시작하는 모든 파일에서 NW를 포함하는 모든 행을 찾는다.)
# grep '^n' datafile
(n으로 시작하는 모든 행을 출력한다.)
# grep '4$' datafile
(4로 끝나는 모든 행을 출력한다.)
# grep TB Savage datafile
(TB만 인자이고 Savage와 datafile은 파일 이름이다.)
# grep 'TB Savage' datafile
(TB Savage를 포함하는 모든 행을 출력한다.)
# grep '5\.' datafile
(숫자 5, 마침표, 임의의 한 문자가 순서대로 나타나는 문자열이 포함된 행을 출력한다.)
# grep '\.5' datafile
(.5가 나오는 모든 행을 출력한다.)
# grep '^[we]' datafile
(w나 e로 시작하는 모든 행을 출력한다.)
# grep '[^0-9]' datafile
(숫자가 아닌 문자를 하나라도 포함하는 모든 행을 출력한다.)
# grep '[A-Z][A-Z] [A-Z]' datafile
(대문자 2개와 공백 1개, 그리고 대문자 하나가 연이어 나오는 문자열이 포함된 행을 출력한다.)
# grep 'ss* ' datafile
(s가 한 번 나오고, 다시 s가 0번 또는 여러번 나온 후에 공백이 연이어 등장하는 문자열을 포함한
모든 행을 출력한다.)
# grep '[a-z]\{9\}' datafile
(소문자가 9번 이상 반복되는 문자열을 포함하는 모든 행을 출력한다.)
# grep '\(3\)\.[0-9].*\1 *\1' datafile
(숫자 3,마침표,임의의 한 숫자,임의 개수의 문자,숫자 3(태그),임의 개수의 탭 문자,숫자 3의
순서를 갖는 문자열이 포한된 모든 행을 출력한다.)
# grep '\
(north로 시작하는 단어가 포함된 모든 행을 출력한다.)
# grep '\' datafile
(north라는 단어가 포함된 모든 행을 출력한다.)
# grep '\<[a-z].*n\>' datafile
(소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된
모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의 문자들을 의미한다.)

3.3 grep에 옵션 사용
# grep -n '^south' datafile
(행번호를 함께 출력한다.)
# grep -i 'pat' datafile
(대소문자를 구별하지 않게 한다.)
# grep -v 'Suan Chin' datafile
(문자열 Suan Chin이 포함되지 않은 모든 행을 출력하게 한다. 이 옵션은 입력 파일에서
특정 내용의 입력을 삭제하는데 쓰인다.
# grep -v 'Suan Chin' datafile > black
# mv black datafile
)
# grep -l 'SE' *
(패턴이 찾아진 파일의 행 번호 대신 단지 파일이름만 출력한다.)
# grep -w 'north' datafile
(패턴이 다른 단어의 일부가 아닌 하나의 단어가 되는 경우만 찾는다. northwest나 northeast 등의
단어가 아니라, north라는 단어가 포함된 행만 출력한다.)
# grep -i "$LOGNAME" datafile
(환경변수인 LOGNAME의 값을 가진 모든 행을 출력한다. 변수가 큰따옴표로 둘러싸여 있는 경우,
쉘은 변수의 값으로 치환한다. 작은따옴표로 둘러싸여 있으면 변수 치환이 일어나지 않고
그냥 $LOGNAME 이라는 문자로 출력된다.)

3.4 egrep
egrep(extended grep) : grep에서 제공하지 않는 확장된 정규표현식 메타문자를 지원한다.
grep와 동일한 명령행 옵션을 지원한다.
egrep에서 지원하는 확장 메타문자
메타문자
기능
사용 예
사용 예 설명
+
선행문자와 같은 문자의 1개 혹은 임의 개수와 대응
'[a-z]+ove'
1개 이상의 소문자 뒤에 ove가 붙어있는 문자열과 대응. move,approve,love,behoove 등이 해당된다.
?
선행문자와 같은 문자의0개 혹은 1개와 대응
'lo?ve'
l 다음에 0개의 문자 혹은 하나의 문자가 o가 나오는 문자열과 대응. love,lve 등이 해당된다.
a|b
a 혹은 b와 대응
'love|hate'
love 혹은 hate와 대응.
()
정규표현식을 묶어준다
'love(able|ly)'
lovable 혹은 lovely와 대응.
'(ov)+'
ov가 한 번 이상 등장하는 문자열과 일치.

3.4.1 egrep 예제
# egrep 'NW|EA' datafile
(NW나 EA가 포함된 행을 출력한다.)
# egrep '3+' datafile
(숫자 3이 한 번 이상 등장하는 행을 출력한다.)
# egrep '2\.?[0-9]' datafile
(숫자 2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)
# egrep ' (no)+' datafile
(패턴 no가 한 번 이상 연속해서 나오는 행을 출력한다.)
# egrep 'S(h|u)' datafile
(문자 S 다음에 h나 u가 나오는 행을 출력한다.)
# egrep 'Sh|u' datafile
(패턴 Sh나 u를 포함한 행을 출력한다.)

3.5 고정 grep 과 빠른 grep
fgrep : grep 명령어와 동일하게 동작한다. 다만 정규표현식 메타문자들을 특별하게 취급하지
않는다.
# fgrep '[A-Z]****[0-9]..$5.00' file
([A-Z]****[0-9]..$5.00 이 포함된 행을 출력한다. 모든 문자들을 문자 자체로만 취급한다.)

출저: sunschool

posted by 구름너머 2006. 8. 31. 17:39

1.ipconfig - 본인 컴퓨터에 설정된 IP주소 , DNS주소 , gateway주소 확인 명령

==> only Dos. not Unix

Examples:
> ipconfig ... Show information.
> ipconfig /all ... Show detailed information
> ipconfig /renew ... renew all adapters
> ipconfig /renew EL* ... renew any connection that has its
name starting with EL
> ipconfig /release *Con* ... release all matching connections,
eg. "Local Area Connection 1" or
"Local Area Connection 2"

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

2.Hostname - 시스템의 컴퓨터의 호스트 이름이 표시됩니다.

(쉽게 야그해서 컴퓨터 네트워크 name)

==> Dos and Unix

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

3.ping 명령어 - 특정호스트 의 정상적인 작동여부를 확인할 때 사용하는 명령어 .

==> Dos and Unix

예> ping 192.168.4.155 -t << 특정 ip주소와의 ping 을 테스트

ping yahoo.com-t <<특정 도메인과의 ping 을 테스트

ping 127.0.0.1 -t << 본인 랜카드에서 컴퓨터로 ping 테스트 <일명: 루프 백 명령어>

(-t옵션은 화면갱신을 계속해 주기위한 필수옵션)

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

4.nbtstat - 특정 IP주소를 어느 사용자가 사용하는지 확인시 사용

( ip 충돌시 사용하면 용이)

==> Dos and Unix

==>

예> 192.168.0.145 아이피 충돌시 ,

nbtstats -a 192.168.3.115

(-a 옵션은 충돌 ip 의 컴퓨터 이름을 표시해주는 필수옵션)

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

5.netstat - 특정 IP주소를어떤 사용자가 접근중인지 확인시 사용

==> Dos and Unix

예>netstats -a :

netstat -rn :라우팅 테이블정보를 볼 수 있음.

프로토콜 통계 및 현재 TCP/IP 네트워크 연결을 표시합니다.

NETSTAT [-a] [-b] [-e] [-n] [-o] [-p 프로토콜] [-r] [-s] [-v] [시간]

-a 모든 연결 및 수신 대기 포트를 표시합니다.
-b 각 연결 또는 수신 대기 포트를 만드는 데 관련된 실행 프로그램을
표시합니다. 잘 알려진 실행 프로그램에서 여러 독립 구성 요소를
호스팅하는 경우에는 연결 또는 수신 대기 포트를 만드는 데
관련된 구성 요소의 시퀀스가 표시됩니다. 이런 경우에는
실행 프로그램 이름이 아래쪽 대괄호 안에 표시되어 있고 위에는
TCP/IP에 도달할 때까지 호출된 구성 요소가 표시되어 있습니다.
이 옵션은 시간이 오래 걸릴 수 있으며 사용 권한이 없으면
실패합니다.
-e 이더넷 통계를 표시합니다. 이 옵션은 -s 옵션과 같이 사용될
수 있습니다.
-n 주소 및 포트 번호를 숫자 형식으로 표시합니다.
-o 각 연결의 소유자 프로세스 ID를 표시합니다.
-p 프로토콜 지정한 프로토콜에 해당되는 연결을 표시합니다. 프로토콜은
TCP, UDP, TCPv6 또는 UDPv6 중 하나입니다. -s 옵션과 함께
사용하여 프로토콜별 통계를 표시할 경우 프로토콜은 IP, IPv6,
ICMP, ICMPv6, TCP, TCPv6, UDP 또는 UDPv6 중 하나입니다.
-r 라우팅 테이블을 표시합니다.
-s 프로토콜별로 통계를 표시합니다. 기본값으로 IP, IPv6, ICMP,
ICMPv6, TCP, TCPv6, UDP 및 UDPv6에 관한 통계를 표시합니다.
-p 옵션을 함께 사용하면 기본값의 일부 집합에 대한 통계만
표시할 수 있습니다.
-v -b 옵션과 함께 사용하면 모든 실행 프로그램에 대한 연결
또는 수신 대기 포트를 만드는 데 관련된 구성 요소의 시퀀스를
표시합니다.
시간 다음 화면으로 이동하기 전에 지정한 시간 동안 선택한 통계를
다시 표시합니다. 통계 표시를 중단하려면 CTRL+C를 누르십시오.
지정하지 않으면 현재 구성 정보를 한 번 표시합니다.

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

6.tracert - 본인 컴퓨터에서 호스트 주소까지의 접근 경로를 확인시 사용

==> only Dos

==> Unix는 traceroute

예>야후 호스트 컴퓨터 까지의 접속경로를 확인하려면

tracert yahoo.co.kr

Options:
-d Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list Loose source route along host-list.
-w timeout Wait timeout milliseconds for each reply.

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

7.OS확인 - 본인 컴퓨터 또는 UNIX 서버의운영체제를 확인시...

DOS : ver

UNIX : uname -a

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

8.접속자 확인 :UNIX - 터미널 접속자의 확인

UNIX : who

who am i : 본인

who -M : 접속자의 IP정보까지...

'UNIX' 카테고리의 다른 글

arg list too long  (0) 2006.09.08
grep 명령어  (0) 2006.09.07
[unix]압축-compress 사용법  (0) 2006.08.22
프로세스와 시그널 프로세스는 무엇인가?  (0) 2006.08.17
안전한 유닉스 프로그래밍을 위한 지침서 V.0.7  (0) 2006.08.17
posted by 구름너머 2006. 8. 22. 11:09

unix에서 파일압축하기 중 compress 사용시...

1.압축 : compress [-f] 압축할 파일명

2.압축해제: uncompress [-f] 압축된 파일명

f옵션은 백그라운드로 배치프로그램에서

compress나 uncompress 명령을 수행할시

기존에 파일이 존재할 경우 overwrite 여부를

물어보지 않도록 하는 옵션.

-f or -F
When used with the compress command, forces the compression of file
even if no reduction in the size of the file will occur.

With both the compress and uncompress commands, if you run the command
in the background and -f is not specified, you are prompted as to
whether an existing file should be overwritten.