1. 시스템 관리 명령 [1] - grep (egrep,fgrep)
다들 아시다 시피 grep 은 입력에서 주어진 패턴을 포함하고 있는 줄을 찾아
주는 명령이다. 많은 시스템 관리 명령들과 파이프(pipe)를 이용해서 사용할
수 있다. 흔히 사용하는 것은 프로세스 확인이다.
# ps aux | grep httpd
위와 같이 현재 시스템의 프로세스중 httpd 만 검색해 낸다.
만일 pipe 를 이용하여 검색할경우 검색 패턴이 한개 이상일 경우엔 egrep
을 이용하여 검색할수 있다.
# ps aux | egrep 'httpd|mysql'
이밖에 grep 는 file 내용증에 특정 pattern 이 들어 있는 행을 찾아서 출력
해 준다 option 을 이용하여 보다 다양한 pattern을 선택하여 검색할수 있다.
option :
----------------------------------------------
-i : 대소문자 구별을 하지 않는다.
-v : pattern 을 포함하지 않는 행만 출력한다.
-n : 행번호를 출력한다.
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 갯수만 보여준다.
----------------------------------------------
몇가지 예를 들어 보겠다.
# grep [option] "pattern" 파일명
대표적인 사용방법이다. 파일에 pattern 이란 단어를 포함하는 행을 출력한다.
# grep -v "^[ ^I]*$" 파일명
위는 공백을 제거한 파일 내용 살펴보기
# grep -v "^#*$" 파일명
위는 주석을 제거한 파일 내용 살펴보기
이밖의 패턴과 정확히 일치하는 것만을 찾아주는 fgrep 가 있다.
grep,egrep,fgrep 의 옵션으론 위의 옵션을 공통적으로 사용한다.
마지막으로 유용한 팁 하나 소개하죠. grep 는 현재 디렉토리에 존재하는 파일
만을 검색한다. 만일 현재 디렉토리와 그 하위 디렉토리까지 grep 패턴 검색을
하고자 할땐 find 명령을 이용하면 된다.
# find . -exec grep "pattern" {} \;
2. 시스템 관리 명령어[2] - awk
awk 는 grep 과 같이 출력된 문장에서 필요한 부분한 걸려내는 필터역활을 하는
명령어의 일종입니다. 사용하기에 따라서 매우 유용하지요..
[root@zzang911 /]# ls -al
drwxr-xr-x 2 root root 0 11월 3 10:16 misc/
drwxr-xr-x 4 root root 4096 8월 9 00:41 mnt/
drwxr-xr-x 2 root root 4096 8월 24 1999 opt/
dr-xr-xr-x 113 root root 0 11월 3 10:16 proc/
위의 출력문은 tab (공백)으로 각 컬럼을 구분하는데 다음과 같이 하면 원하는 컬럼
값만을 선택하서 출력이 가능합니다.
[root@zzang911 /]# ls -al | awk '{print $1 $5 $9}'
drwxrwx--- 4096 root/
drwxr-xr-x 4096 sbin/
drwxr-xr-x 4096 temp/
drwxr-xr-x 4096 tftpboot/
drwxrwxrwt 4096 tmp/
drwxr-xr-x 4096 usr/
drwxr-xr-x 4096 var/
위와 같이 1,5,9 번째 컬럼값만 출력이 되어집니다. 후후후
이밖에 awk 는 연산 기능을 가지고 있다.
# find /home/design -user design -ls | \
awk '{sum+=$7}; END {print "User design total disk use = " sum }'
User design total disk use = 86072036
이와 같이 design 권한의 파일들의 크기를 합친값을 보여준다.
이 명령라인은 find 로 검색한 파일을 ls -al 형식으로 출력한후 여기서
바이트 수를 가지고 있는 7번째 열의 합계를 누적한다. 그리고 마지막줄
에 최종 결과값을 출력한다. 이밖에 awk 는 평균값도 구할수 있는데...
END 절의 sum 를 sum/NR 로 대체하면 구할수 있다. NR 은 awk 내부 변수
로서 현재까지의 입력 라인수를 갖는다.
3. 시스템 관리 명령 [3] - find
find 명령어는 시스템 관리 명령중 가장 많이 사용되는 명령어 중 하나이다.
이 명령어의 다양한 기능을 많이 알수록 관리자의 불필요한 삽질을 최대한 줄일수
있을것이다.
option :
-atime n : 정확히 n 일 전에 access 된 파일
-mtime n : 정확히 n 일 전에 수정된 파일
-newer [file] : file 보다 최근에 수정된 파일
-size n : 정확히 n x 512 byte 의 길이를 갖는 파일
-type c : 파일의 종류를 기술. f: 파일 d: 디렉토리
-fstype [filesystem] : 파일 시스템 종류
-name [pattern] : 파일 이름 검색
-perm p : 파일 접근 퍼미션이 p 인 경우
-user [user] : 파일 소유권이 user 인 파일
-group [group] : 파일 그룹이 group 인 파일
-nouser : 파일 소유자가 /etc/passwd 에 없는 경우
-nogroup : 파일 소유그룹이 /etc/group 에 없는 경우
-uid n : 파일 uid 가 n 인 경우
-gid n : 파일 gid 가 n 인 경우
단순히 위의 옵션되로 사용하면 그렇게 유용해 보이지 않을수 있겠죠.
예를 들어 누가 정확히 3일전에 접근한 파일들을 검색하겠습니까..?
하지만 +, - 기호를 이용하여 기간,시간,크기와 같은 수치들의 범위를
지정할수가 있습니다.
+ 는 ~~보다 큰 경우, - 는 ~~ 보다 작은 경우
-mtime +7 : 수정 된지 7일이 지난 파일
-mtime -7 : 수정 된지 7일이 안된 파일
-size +100 : 50kbyte 보다 큰 파일
-name 뒤엔 인용부호 (와일드 카드 문자) 를 같이 사용할수 있다.
-name *.dat : 확장자가 dat 인 모든 파일
이런 옵션들을 차례로 기술하여 파일을 찾을 경우 AND 연산이 적용된다.
하지만 -o 옵션을 이용하여 OR 을 적용할수도 있고 ( ) 를 이용하여 그
룹을 지어 적용할수도 있다. 이밖에 NOT 연산도 가능한데 옵션 앞에 !
부호를 달아 주면 된다. 밑의 몇가지 예를 살펴 보자.
# find ./ -atime +60 -mtime 120
( AND 논리연산으로 접근한지 60일 지난 파일중 수정한지 120 일 지난 파일 )
# find ./ \( -user design -o -group design \)
(OR 논리연산으로 소유자나 그룹이 design 인경우 )
# find ./ \( ! -user design -o ! -group design \)
(NOT 논리연산으로 소유자나 그룹이 design 이 아닌 경우 )
-perm 옵션은 숫자형태의 특정 접근 모드를 이용하여 파일을 검색하는 옵션이다.
옵션별 사용예를 들어 보자.
-perm 75 : permission = 755
-perm -002 : 모든 사람들이 기록할수 있는 파일
-perm -4000 : SUID 액세스 설정
-perm -2000 : SGID 액세스 설정
이밖에 지원 되는 내부 옵션이 있다.
-print : 대응되는 파일의 경로명을 출력
-ls : 대응되는 파일에 대한 긴 디렉토리 목록을 출력
-exec commands : 대응대는 파일에 대해 commands 명령 수행
-ok commands : 파일에 대한 commands 명령 수행전에 입력 대기 상태
-xdev : 검색 시작 디렉토리가 속해 있는 파일 시스템에 대해서만 검색 제한
-mount : IRIX 와 SCO UNIX 에서 -xdev 옵션
-prune : 서브 디렉토리는 검색을 하지 않음
-print 옵션은 근래는 기본으로 들어간다. 굳이 붙일 필요는 없고, -exec, -ok
옵션 사용시에는 반드시 마지막에 \; 으로 구문을 마감해야 한다.
예를 들어서 find 로 검색한 파일을 지우기 위해서는 다음과 같이 한다.
# find ./ -name *.* -exec rm -f {} \;
이와 같이 find 명령어를 이용한 시스템 관리 방법 예를 몇가지 들어 보겠다.
1. 파일 크기가10M 이상이며 한달 이상동안 수정되지 않은 파일을 찾는다.
# find / -type f -size +20480 -mtime +30 -ls
# find / -type f -size +20480 -mtime +30 -exec rm -f {} \;
(대응되는 파일삭제)
2. 보안에 관련된 팁이다. 모든 setuid, setgid 를 검색한다.
# find / -type f \( -perm -4000 -o -perm -2000 \)
# find / -type f \( -perm -4000 -o -perm -2000 \) | diff - setuidlist
(찾아된 setuid,setgid를 기존에 작성한 목록과 비교하여 새로 추가 된것이 있는지
를 확인한다. )
단순히 이와 같은 명령어들을 달달 외운다고 해서 시스템 관리를 잘하는것은 아니다.
하지만 시스템 관리자로써의 유연성과 독창성을 가지기 위해서는 위의 명령어 숙달은
필수라고 할수 있을것이다.
이제 어떤 작업이든간의 여러분이 생각하는 방법으로 보다 빠르고 정확한 검색과 결
과를 얻을수 있을거라 생각이 되네요.그럼..이만.
다들 아시다 시피 grep 은 입력에서 주어진 패턴을 포함하고 있는 줄을 찾아
주는 명령이다. 많은 시스템 관리 명령들과 파이프(pipe)를 이용해서 사용할
수 있다. 흔히 사용하는 것은 프로세스 확인이다.
# ps aux | grep httpd
위와 같이 현재 시스템의 프로세스중 httpd 만 검색해 낸다.
만일 pipe 를 이용하여 검색할경우 검색 패턴이 한개 이상일 경우엔 egrep
을 이용하여 검색할수 있다.
# ps aux | egrep 'httpd|mysql'
이밖에 grep 는 file 내용증에 특정 pattern 이 들어 있는 행을 찾아서 출력
해 준다 option 을 이용하여 보다 다양한 pattern을 선택하여 검색할수 있다.
option :
----------------------------------------------
-i : 대소문자 구별을 하지 않는다.
-v : pattern 을 포함하지 않는 행만 출력한다.
-n : 행번호를 출력한다.
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 갯수만 보여준다.
----------------------------------------------
몇가지 예를 들어 보겠다.
# grep [option] "pattern" 파일명
대표적인 사용방법이다. 파일에 pattern 이란 단어를 포함하는 행을 출력한다.
# grep -v "^[ ^I]*$" 파일명
위는 공백을 제거한 파일 내용 살펴보기
# grep -v "^#*$" 파일명
위는 주석을 제거한 파일 내용 살펴보기
이밖의 패턴과 정확히 일치하는 것만을 찾아주는 fgrep 가 있다.
grep,egrep,fgrep 의 옵션으론 위의 옵션을 공통적으로 사용한다.
마지막으로 유용한 팁 하나 소개하죠. grep 는 현재 디렉토리에 존재하는 파일
만을 검색한다. 만일 현재 디렉토리와 그 하위 디렉토리까지 grep 패턴 검색을
하고자 할땐 find 명령을 이용하면 된다.
# find . -exec grep "pattern" {} \;
2. 시스템 관리 명령어[2] - awk
awk 는 grep 과 같이 출력된 문장에서 필요한 부분한 걸려내는 필터역활을 하는
명령어의 일종입니다. 사용하기에 따라서 매우 유용하지요..
[root@zzang911 /]# ls -al
drwxr-xr-x 2 root root 0 11월 3 10:16 misc/
drwxr-xr-x 4 root root 4096 8월 9 00:41 mnt/
drwxr-xr-x 2 root root 4096 8월 24 1999 opt/
dr-xr-xr-x 113 root root 0 11월 3 10:16 proc/
위의 출력문은 tab (공백)으로 각 컬럼을 구분하는데 다음과 같이 하면 원하는 컬럼
값만을 선택하서 출력이 가능합니다.
[root@zzang911 /]# ls -al | awk '{print $1 $5 $9}'
drwxrwx--- 4096 root/
drwxr-xr-x 4096 sbin/
drwxr-xr-x 4096 temp/
drwxr-xr-x 4096 tftpboot/
drwxrwxrwt 4096 tmp/
drwxr-xr-x 4096 usr/
drwxr-xr-x 4096 var/
위와 같이 1,5,9 번째 컬럼값만 출력이 되어집니다. 후후후
이밖에 awk 는 연산 기능을 가지고 있다.
# find /home/design -user design -ls | \
awk '{sum+=$7}; END {print "User design total disk use = " sum }'
User design total disk use = 86072036
이와 같이 design 권한의 파일들의 크기를 합친값을 보여준다.
이 명령라인은 find 로 검색한 파일을 ls -al 형식으로 출력한후 여기서
바이트 수를 가지고 있는 7번째 열의 합계를 누적한다. 그리고 마지막줄
에 최종 결과값을 출력한다. 이밖에 awk 는 평균값도 구할수 있는데...
END 절의 sum 를 sum/NR 로 대체하면 구할수 있다. NR 은 awk 내부 변수
로서 현재까지의 입력 라인수를 갖는다.
3. 시스템 관리 명령 [3] - find
find 명령어는 시스템 관리 명령중 가장 많이 사용되는 명령어 중 하나이다.
이 명령어의 다양한 기능을 많이 알수록 관리자의 불필요한 삽질을 최대한 줄일수
있을것이다.
option :
-atime n : 정확히 n 일 전에 access 된 파일
-mtime n : 정확히 n 일 전에 수정된 파일
-newer [file] : file 보다 최근에 수정된 파일
-size n : 정확히 n x 512 byte 의 길이를 갖는 파일
-type c : 파일의 종류를 기술. f: 파일 d: 디렉토리
-fstype [filesystem] : 파일 시스템 종류
-name [pattern] : 파일 이름 검색
-perm p : 파일 접근 퍼미션이 p 인 경우
-user [user] : 파일 소유권이 user 인 파일
-group [group] : 파일 그룹이 group 인 파일
-nouser : 파일 소유자가 /etc/passwd 에 없는 경우
-nogroup : 파일 소유그룹이 /etc/group 에 없는 경우
-uid n : 파일 uid 가 n 인 경우
-gid n : 파일 gid 가 n 인 경우
단순히 위의 옵션되로 사용하면 그렇게 유용해 보이지 않을수 있겠죠.
예를 들어 누가 정확히 3일전에 접근한 파일들을 검색하겠습니까..?
하지만 +, - 기호를 이용하여 기간,시간,크기와 같은 수치들의 범위를
지정할수가 있습니다.
+ 는 ~~보다 큰 경우, - 는 ~~ 보다 작은 경우
-mtime +7 : 수정 된지 7일이 지난 파일
-mtime -7 : 수정 된지 7일이 안된 파일
-size +100 : 50kbyte 보다 큰 파일
-name 뒤엔 인용부호 (와일드 카드 문자) 를 같이 사용할수 있다.
-name *.dat : 확장자가 dat 인 모든 파일
이런 옵션들을 차례로 기술하여 파일을 찾을 경우 AND 연산이 적용된다.
하지만 -o 옵션을 이용하여 OR 을 적용할수도 있고 ( ) 를 이용하여 그
룹을 지어 적용할수도 있다. 이밖에 NOT 연산도 가능한데 옵션 앞에 !
부호를 달아 주면 된다. 밑의 몇가지 예를 살펴 보자.
# find ./ -atime +60 -mtime 120
( AND 논리연산으로 접근한지 60일 지난 파일중 수정한지 120 일 지난 파일 )
# find ./ \( -user design -o -group design \)
(OR 논리연산으로 소유자나 그룹이 design 인경우 )
# find ./ \( ! -user design -o ! -group design \)
(NOT 논리연산으로 소유자나 그룹이 design 이 아닌 경우 )
-perm 옵션은 숫자형태의 특정 접근 모드를 이용하여 파일을 검색하는 옵션이다.
옵션별 사용예를 들어 보자.
-perm 75 : permission = 755
-perm -002 : 모든 사람들이 기록할수 있는 파일
-perm -4000 : SUID 액세스 설정
-perm -2000 : SGID 액세스 설정
이밖에 지원 되는 내부 옵션이 있다.
-print : 대응되는 파일의 경로명을 출력
-ls : 대응되는 파일에 대한 긴 디렉토리 목록을 출력
-exec commands : 대응대는 파일에 대해 commands 명령 수행
-ok commands : 파일에 대한 commands 명령 수행전에 입력 대기 상태
-xdev : 검색 시작 디렉토리가 속해 있는 파일 시스템에 대해서만 검색 제한
-mount : IRIX 와 SCO UNIX 에서 -xdev 옵션
-prune : 서브 디렉토리는 검색을 하지 않음
-print 옵션은 근래는 기본으로 들어간다. 굳이 붙일 필요는 없고, -exec, -ok
옵션 사용시에는 반드시 마지막에 \; 으로 구문을 마감해야 한다.
예를 들어서 find 로 검색한 파일을 지우기 위해서는 다음과 같이 한다.
# find ./ -name *.* -exec rm -f {} \;
이와 같이 find 명령어를 이용한 시스템 관리 방법 예를 몇가지 들어 보겠다.
1. 파일 크기가10M 이상이며 한달 이상동안 수정되지 않은 파일을 찾는다.
# find / -type f -size +20480 -mtime +30 -ls
# find / -type f -size +20480 -mtime +30 -exec rm -f {} \;
(대응되는 파일삭제)
2. 보안에 관련된 팁이다. 모든 setuid, setgid 를 검색한다.
# find / -type f \( -perm -4000 -o -perm -2000 \)
# find / -type f \( -perm -4000 -o -perm -2000 \) | diff - setuidlist
(찾아된 setuid,setgid를 기존에 작성한 목록과 비교하여 새로 추가 된것이 있는지
를 확인한다. )
단순히 이와 같은 명령어들을 달달 외운다고 해서 시스템 관리를 잘하는것은 아니다.
하지만 시스템 관리자로써의 유연성과 독창성을 가지기 위해서는 위의 명령어 숙달은
필수라고 할수 있을것이다.
이제 어떤 작업이든간의 여러분이 생각하는 방법으로 보다 빠르고 정확한 검색과 결
과를 얻을수 있을거라 생각이 되네요.그럼..이만.