Shell Script( 쉘 스크립트 ) while 문 사용법, 조건식



while 문 기본 사용 법




쉘에서 while문을 사용 시 조건 식이 문자로 되어있어 다소 어려움을 겪을 수 있습니다.

예를 들어 ( <, >, = ) 기호가 ( -eq, -lt ) 등 다르게 표기 되고 있기 때문입니다.

일단 while문 기본 형식 부터 알아보겠습니다.


 while [ 값1 조건식 값2 ]

 do

   수행문

   수행문

 done 



while 문과 조건 사이에 띄어 쓰기를 주의해서 작성 하셔야 에러 없이 동작합니다.

다음은 while문을 활용 해서 1~4까지 출력하는 간단한 예를 보겠습니다.


#! /bin/ksh


i=1


while [ $i -lt 5 ]

do

        echo $i

        i=$(($i+1))

done



여기서 -lt 는 < 와 같은 뜻이라고 생각 하면 됩니다.


while 문에 사용되는 조건문 종류


while문에 사용 되는 조건식은 아래와 같습니다.




[ -z ] : 문자열의 길이가 0이면 참

[ -n ] : 문자열의 길이가 0이 아니면 참


[ -eq ] : 값이 같으면 참

[ -ne ] : 값이 다르면 참

[ -gt ] :  값1 > 값2

[ -ge ] : 값1  >= 값2

[ -lt ] : 값1 < 값2

[ -le ] : 값1 <= 값2


[ -a ] : &&연산과 동일 and 연산

[ -o ] : ||연산과 동일 xor 연산


[ -d ] : 파일이 디렉토리면 참

[ -e ] : 파일이 있으면 참

[ -L ] : 파일이 심볼릭 링크면 참

[ -r ] : 파일이 읽기 가능하면 참

[ -s ] : 파일의 크기가 0 보다 크면 참

[ -w ] : 파일이 쓰기 가능하면 참

[ -x ] : 파일이 실행 가능하면 참

[ 파일1 -nt 파일2 ]  : 파일1이 파일2보다 최신파일이면 참

[ 파일1 -ot 파일2 ]  : 파일1이 파일2보다 이전파일이면 참

[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참


반응형

Unix/Linux lsof 사용법(특정 PORT 사용하는 프로세스 찾기)



lsof 를 사용하여 특정 PORT 사용하는 프로세스 찾기



특정 포트가 사용되어 프로그램이 실행이 되지 않을 때 어떤 프로그램이 점유 하는지 찾기 난감합니다.

이럴때 lsof를 사용하여 특정 포트를 사용하는 프로세스를 찾아 보도록 하겠습니다.


 lsof -i:[port 번호]


예제를 실행해보면 다음과 같습니다.


[hostname:/home/util]$ lsof -i:80

COMMAND PID USER FD TYPE     DEVICE SIZE/OFF NODE NAME

httpd        721  test  3u  IPv6    0x000000   0t0         TCP   *:80 (LISTEN)



이런 식으로 80 포트를 사용하는 프로그램 명은 httpd 이며 PID는 721 입니다.

참고로 해당 프로그램을 강제 종료 하고 싶을 때는 kill 사용하여 종료 하시면 됩니다.

이상으로 lsof에 대한 사용법에 대해 알아봤습니다.

도움이 되셨나요?



반응형

Shell Script( 쉘 스크립트 ) for 문 사용법



for 문 기본 사용 법



쉘에서 for문 사용하는 방법에 대해 알아보겠다.

for문은 일정 조건 동안 실행을 반복적으로 수행 하는 구문이다.

일단 예제부터 확인해 보겠다.


#! /bin/ksh


for i in 1 2 3 4 5

do

        echo "$i"

done


예제의 설명은 1부터 5까지 화면에 출력하는 문이다.

즉 5회 반복 구문이다.


for i in 1 2 3 4 5 ==> 1부터 5까지 i에 담는다.

do               ==> 아래 부터 실행 문

echo "$i"  ==> echo는 화면 출력이며 $i는 i 변수 값을 나타 낸다.

done            ==> for문의 종료를 나타낸다.




 for [변수] in [반복 조건]

 do

      [실행문]

 done

 

이상으로 쉘에서 for 문 사용법에 대해 알아봤습니다.

도움이 되셨나요?



반응형

Unix/Linux du (디렉토리 별 용량 확인) 명령어 사용법



du?



디렉토리 별로 용량을 확인 하고 싶을 때는 du를 이용합니다.

현재 디렉토리기준으로 하위 디렉토리 별 용량을 가져옵니다.

일단 사용법은 간단 합니다.


du [옵션]


사용 예는 아래와 같습니다.

/home/util 폴더 밑에 test1, test2 폴더가 있으면 

/home/util 로 이동하여 du 명령어를 치면 test1,test2 폴더 용량을 확인 할 수 있습니다.http://jink1982.tistory.com/35


[hostname:/home/util]$ du

1342 ./test1

111  ./test2


du와 sort



du를 사용하면서 같이 사용 되는 명령어가 있는데 그것은 sort 입니다.

폴더가 여러개 있을때 크기 순 부터 확인 하고 싶을 때 sort로 정렬하여 볼 수 있습니다. 

sort에 대한 설명은 여기를 클릭 하시면 됩니다.


다음 예제를 보겠습니다.

[hostname:/home/util]$ du | sort -nr

91010 ./test4

2222  ./test3

1342  ./test1

111   ./test2


du를 실행 한 후 | ( 파이프 : 앞에 명령어 결과에 다음 명령어 추가 ) sort (-nr 은 sort 옵션입니다. 숫자를 역순 정렬) 를 하면 위와 같이 

용량 역순으로 출력이 됩니다.




du 옵션


du에서 자주 쓰는 옵션에 대해 나열 하였습니다.

아무래도 젤 많이 쓰는 것은 -h 로 du 명령시 기본 KB로 표시되어 보기가 어렵습니다.


-a : 모든 파일표시

-b : 표시단위를 Byte로 한다.

-k : 표시단위르 KB로 한다

-h : 사용량을 K(키로바이트), M(메가바이트), G(기가바이트) 등의 형태로 보여준다

-s : 총 사용량만 표시한다

반응형

+ Recent posts