반응형

컴퓨터활용/유닉스 64

디렉토리별 디스크 사용량 조사하여 정리하기

디스크가 꽉 차게 되면 로그를 쓸 수가 없어서 시스템이 멈춰 서게 된다. 그 전에 미리미리 디스크 스페이스를 관리해 줘야 한다. 예를 들어 /user01 디스크가 96% 사용되고 있는데 누가 이렇게 많이 쓰고 있을까? [/user01/app]df -k 파일시스템 1024블록 사용가능 %사용 Iused %Iused 마운트위치 /dev/hd4 5242880 4789020 9% 12024 2% / /dev/hd2 10485760 3058428 71% 73460 10% /usr /dev/hd9var 3145728 2775232 12% 7487 2% /var /dev/hd3 3145728 2078792 34% 289 1% /tmp /dev/hd1 3145728 3144680 1% 60 1% /home /dev/h..

성능 모니터링 무료 프로그램 nmon

최근 프로젝트에서 DISK IO 가 100%로 동작되는 경우가 종종 있었다. 보통 topas 라는 프로그램을 띄워서 상황을 분석하였는데 nmon 이라는 툴을 이용했더니 쉽게 그 원인을 알 수 있었다. DISK usage 가 100% 되는 경우는 과도한 로그 출력과 메모리 부족으로 인한 swapping (paging) 이 주요 원인이다. 아니나 다를까 nmon 을 실행시켜 보니 available memory 가 0.1 % 이고 paging 은 120%을 넘고 있었다. 이것은 메모리의 부족으로 계속 메모리의 내용을 disk 로 swapping 하고 있는 현상인 것이다. 메모리를 할당 받은 불필요한 process 를 끄거나 메모리를 늘리는 방법을 찾아야 할것이다. 온튠(OnTune)시스템모니터링을 전문으로 하..

특정 프로세스를 찾아서 강제로 죽이는 쉘

예를 들어서 svn 이라는 프로세스를 죽이고자 할 때 다음과 같이 합니다. #:]ps -ef | grep svnserve tmax 14286916 1 0 12:17:49 - 0:00 svnserve -d -r /Repository/SvnRepo tmax 5570908 19988634 0 14:53:19 pts/4 0:00 grep svnserve #:] 여기서 svnserve 라는 프로세서를 찾아서 죽이고 싶은데 grep 자기자신도 같이 나오므로 하나로 줄여줘야 한다. 그래서 하나 더 grep 합니다. #:]ps -ef | grep svnserve | grep SvnRepo tmax 14286916 1 0 12:17:49 - 0:00 svnserve -d -r /app/QIS/Repository/SvnR..

배치프로그램 실행 쉘 예제

#################################################################################################### ## 업무 : XXX (AA LEVEL 2기술) ## ## SHELL PROGRAM ID : XXXBV200 ## ## SHELL PROGRAM 명 : 일일거래내역 거래내역 대사 PGM ## ## SHELL PROGRAM 유형 : BATCH (기타 FTP, EAI, SORT, UNLOAD 등 Shell 프로그램 유형기술) ## ## SHELL PROGRAM 설명 : 수수료거래내역을 금액을 집계하여 감사용 TABLE에 계정별,점별 INSERT ## ## ## ##=====================================..

Unexpected end of file

cc 컴파일을 하다가 이런 오류를 만나게 되면 난감하다. 실제 에러 난 라인은 1320 라인이 아닐 것이기 때문이다. cc run 1320 | a a - 1506-204 (S) Unexpected end of file. 이런 오류가 났을 때는 짤없이 중간에 괄호가 짝이 안 맞을 경우가 많다. 괄호 (), {} 가 짝이 안 맞는 이유는 파일이 깨져서 중간에 소스가 잘렸거나 개발자가 실수로 괄호를 열고 안 닫았던가. 열지 않고 닫기만 했던 것이다. 이런 오류가 날 때는 별 수 없이 한 function 씩 주석으로 막고서 일일이 컴파일 해 보면서 오류 난 구역을 좁혀나가면서 찾아야 한다. 컴파일 계속 되다가 갑자기 안 된다면 가장 최근에 편집한 부근위주로 블럭으로 막으면서 조사해 나가는 것이 시간을 줄이는 방..

쉘에서 로그 출력 방향 지정

■ 예약되어진 파일 기술자(File Descriptor) --------------------------------------- 번호 설 명 --------------------------------------- 0 표준입력 stdin (Standard Input) 1 표준출력 stdout(Standard Ouput) 2 표준에러 stderr(Standard Error) --------------------------------------- 쉘은 아래 그림과 같이 표준입력을 키보드로, 표준 출력을 모니터로, 표준 에러를 모니터로 지정해석한다. 특별한 입력이 지정되지 않는다면 키보드에서 입력을 받 고 정상적인 출력 결과나 에러 메세지의 출력 방향이 지정되지 않는 경우 모니터 로 지정되는 것을 의미한다. #..

문자열 숫자에 , 콤마로 세자리씩 분리하기

문자열로 되어 있는 숫자를 그냥 보는 것은 어렵다. 숫자 단위가 커지다 보면 더욱더 읽기 난해하다. 그래서 세자리마다 콤마(comma)로 쉼표를 찍어 준다면 읽기 편하겠다. static char sx_cma_print_buf[50]; static char * print_with_comma(char *str) // 컴마로분리 { int ix = 0; int iy = 0; int pos = 0; lldiv_t dv; char x_tmp[50]; bzero(sx_cma_print_buf, sizeof(sx_cma_print_buf)); strcpy(x_tmp, str); for( ix=0; ix

unix tee 명령어

출력을 표준단말과 파일 등으로 동시에 내보낼 수 있는 명령이 tee 이다. 다음 예제서와 같이 ls 하고 하면 현재 디렉토리에 있는 파일의 리스트를 보여준다. ls 로 보이는 똑같은 내용을 특정파일 (ls.out) 에도 모으고 싶다면 ls | tee ls.out 이라고 하면 되는 것이다. csh>ls | tee ls.out --> 화면과 ls.out 이란 파일로 동시에 출력됨 A.LOG A.LOG2h a.log.usance a.out a.out1 aa.out log.tmp csh>cat ls.out A.LOG A.LOG2h a.log.usance a.out a.out1 aa.out log.tmp csh> 이 tee 명령과 유사한 것이 파이프 ">" 이다. ">" 파이프는 지정한 파일에 출력이 모아지지만 ..

0 문자를 트림하는 TRIMZERO 매크로

문자열 속에 앞뒤로 불필요한 숫자인 0 이 들어가 있는 경우에 이것을 제거하는 trim 매크로가 필요하여 하나 만들어 봤습니다. 스페이스문자(0x20) 과 숫자 0문자(0x30)를 제거해 줍니다. #define FEE_TRIMZERO(_str) do { \ long pos = strlen(_str)-1; \ long exist_dot = 0; \ for( int ix=0; ix=0; pos-- ) { \ if(_str[pos] == 0x30 || _str[pos] == 0x20) _str[pos] = 0x00; \ else if(_str[pos] == 0x2E) { _str[pos] = 0x00; break; } \ else break; \ } \ }\ while((_str[0] == 0x30 && _s..

반응형