2012. 6. 12. 11:33

서버내부에서 불필요한 파일을 모두 한꺼번에 삭제하려면 어떻게 할까요.
모두 하나씩 찾아서 삭제하려니 엄두가 나질 않고, 분명 초보관리자들에겐 간단한 일은 아닐 것입니다.

흔히 서버내부에서 불필요한 파일들은 어떤 것들이 있을까요.

가장 흔한 파일로는 *.bak, 즉 백업파일이 있을 수 있습니다.
그리고 *.old 나 *.org 또는 *.orig등의 작업전 복사본등이 있을 수 있겠지요.

하지만, 서버장애의 원인을 발생할 수 있는 웹로그파일을 모두 찾아서 삭제하는 일도 무시할 수는 없는 일입니다.

apache에 설정된 가상호스트들이 모두 동일한 access_log파일을 가지는 경우도 있겠지만, 대부분의 가상호스트들은 자기자신의 홈페이지디렉토리에 별도로 저장되는 경우가 가장 일반적입니다.

이런 경우에 모든 계정마다 access_log을 찾아서 삭제하려면 여간 귀찮고 힘든일이 아닐 수 없습니다.

이럴때는 간단히 다음과 같이 해보시기 바랍니다.

[root@host1 sspark]# find / -name access_log -exec rm -f {} \;


즉, 위의 명령어는 서버전체의 / 디렉토리를 대상으로 (/) access_log파일을 찾아서(find) "rm -f 파일명"이란 명령어를 실행하라(-exec)는 의미입니다.

따라서 루트드렉토리(/)이하의 모든 디렉토리에 존재하는 모든 access_log파일들이 모두 삭제됩니다.

이번에는 /home디렉토리에 존재하는 모든 error_log파일을 모두 찾아서 삭제하는 예입니다.


[root@host1 sspark]# find /home -name error_log -exec rm -f {} \;


이와 같은 예를 몇개 더 들어 보이면 다음과 같습니다.

아래의 예는 /home에 존재하는  모든 *.bak파일을 모두 찾아서 삭제합니다.
하지만, 이런 명령어를 사용할 때에는 본인이 관리하는 서버내부에 bak파일이 진짜로 필요하지 않은가를 확인한 후에 사용하셔야합니다.

[root@host1 sspark]# find /home -name *.bak -exec rm -f {} \;


단, 주의하실 것은 삭제하려는 파일이 진짜로 서버내부에서 불필요한 파일들인가를 반드시 확인하신 후에 사용하셔야한다는 것입니다.

그리고 가능하다면 경로를 전체경로(/)를 주는 것은 삼가하시기 바랍니다.

Posted by 몰라욧
2012. 6. 12. 11:14

흔히 "ls -l"을 사용하여 디렉토리내에 존재하는 파일들과 디렉토리목록을 확인합니다.
가끔씩은 "ls -l"의 결과중에서 파일들을 제외한 디렉토리들만 확인하고자 할때가 있을 것입니다.

간단한 정규표현으로 해결할 수가 있습니다.

다음과 같이 해보시기 바랍니다.


[root@host1 www]# ls -l | grep "^d"
drwxr-xr-x    3 jinjin   jinjin       4096  3월 13 18:00 aceace
drwx---r-x    3 jinjin   jinjin       4096 10월 15 14:20 anymore
drwx---r-x    3 jinjin   jinjin       4096 10월 15 14:20 bankcd
drwx---r-x    3 jinjin   jinjin       4096 12월 30 20:57 belpex
drwx---r-x    3 jinjin   jinjin       4096 12월 31 10:59 celvise
drwx---r-x    4 jinjin   jinjin       4096  5월  5  2002 charge
drwxr-xr-x    3 jinjin   jinjin       4096  2월 14 14:57 daesung
drwx---r-x    3 jinjin   jinjin       4096 10월 15 14:19 darun
drwxr-xr-x    3 jinjin   jinjin       4096  1월 13 19:35 dfc21
drwxr-xr-x    3 jinjin   jinjin       4096  2월 18 15:40 dongnam
drwx---r-x    3 jinjin   jinjin       4096 12월 30 20:56 doom4
drwx---r-x    3 jinjin   jinjin       4096 12월 31 10:32 dotoru
drwx---r-x    3 jinjin   jinjin       4096 12월 31 10:52 ds3etc
drwxr-xr-x    3 jinjin   jinjin       4096 12월 30 21:17 ds5ezp
drwx---r-x    3 jinjin   jinjin       4096 10월 15 14:18 easy8105
drwx---r-x    3 jinjin   jinjin       4096  5월  5  2002 event
drwxr-xr-x    3 jinjin   jinjin       4096  3월  5 18:05 feelhouse
drwx---r-x    3 jinjin   jinjin       4096 12월 31 10:40 fishing
[root@host1 www]#

즉, ls -l의 결과들 중에서 d로 시작하는 행들만을 확인한 것입니다.
위의 명령어를 그대로 복사해서 사용해보셔도 결과는 동일하게 디렉토리 리스트만 보여줍니다.

즉, 각 행에서 시작하는 퍼미션 표시부분(예, drwx---r-x)의 문자들중 d로 시작하면 디렉토리인 것을 의미하므로 위의 명령어는 d로 시작하는 행만을 보여주도록 한 것입니다.

그리고 "^d에서 ^는 d를 시작으로 하는 문자열"이란 의미입니다.


이렇게 간단한 정규식으로도 원하는 결과를 얻을 수가 있습니다.

Posted by 몰라욧
2012. 6. 12. 11:13

perror은 시스템의 에러메시지의 내용을 출력해주는 명령어입니다.

주로 mysql의 에러메시지 내용을 확인하는 용도로 많이 사용됩니다.

MySQL사용중 발생하는 에러 또는 php프로그래밍을 할 때에 mysql관련 에러메시지를 만나면 에러번호를 표시하게 됩니다.. 이때 이 에러번호가 의미하는 내용을 확인하기 위하여 사용하는 MySQL명령어가 perror입니다.

원래 필자는 리눅스명령어만을 설명의 대상으로 잡았으나 리눅스에서 데이터베이스 솔루션으로 MySQL이 주로 사용되며 서버관리자에게는 리눅스명령어 이상으로 MySQL관련 명령어가 많이 사용되므로 MySQL관련 명령어도 설명의 대상에 넣은 것입니다..

이를 위하여 현재 필자는 리눅스에서의 MySQL관련 명령어의 설명을 위하여 Mysql 4.0.14버전을 /usr/local/mysql에 설치를 하였다. 따라서 MySQL관련된 명령어의 설명은 모두 /usr/local/mysql/bin에 위치한 명령어임을 밝혀둡니다..

만약 여러분께서 RPM으로 설치된 MySQL을 설치하여 사용하신다면 /usr/sbin이나 /usr/bin에 이들 명령어가 위치하고 있을 것입니다.

사용형식

./perror [OPTIONS] [ERRORCODE [ERRORCODE...]]


사용예 #1

아래 예와 같이 /usr/local/mysql/bin에서 "./perror 번호"를 입력하면 에러번호가 의미하는 내용을 알려주게 됩니다.
다음은 에러번호 23번은 현재 리눅스 시스템에 허용된 파일갯수 이상의 파일이 오픈되어 에러가 발생했다는 것을 알려주고 있습니다.

[root@host3 bin]# ./perror 23
Error code  23:  Too many open files in system
[root@host3 bin]#


사용예 #2

다음과 같이 -s옵션을 사용하면 에러코드는 생략한채로 에러번호의 의미만을 표시해줍니다.

[root@host3 bin]# ./perror -s 23
Too many open files in system
[root@host3 bin]#

사용예 #3

다음은 여러가지 에러메시지를 확인한 예입니다.

에러번호 1번은 현재 명령어의 실행이 허용되지 않았다는 의미입니다.

[root@host3 bin]# ./perror 1  
Error code   1:  Operation not permitted
[root@host3 bin]#

에러번호 2번은 명령행에 입력된 파일또는 디렉토리가 존재하지 않는다는 것을 의미합니다.

[root@host3 bin]# ./perror 2
Error code   2:  No such file or directory
[root@host3 bin]#

에러번호 3번은 존재하지않는 프로세스임을 의미합니다.

[root@host3 bin]# ./perror 3
Error code   3:  No such process
[root@host3 bin]#

에러번호 4번은 시스템에서 인터럽트가 발생했음을 의미하고 있습니다.

[root@host3 bin]# ./perror 4
Error code   4:  Interrupted system call
[root@host3 bin]#

에러번호 5번은 입출력에러가 발생했음을 의미합니다.

[root@host3 bin]# ./perror 5
Error code   5:  Input/output error
[root@host3 bin]#

에러번호 6번은 장치명이나 장치번호가 존재하지않음을 의미하고 있습니다.

[root@host3 bin]# ./perror 6
Error code   6:  No such device or address
[root@host3 bin]#

이와같이 시스템사용도중에 발생하는 에러메시지의 내용을 확인할 수 있습니다.


사용예 #4

다음과 같이 -V옵션을 사용하면 perror의 버전을 확인할 수 있습니다.
현재 필자가 사용하고 있는 perror의 버전은 2.9임을 의미하고 있습니다.

[root@host3 bin]# ./perror -V
./perror Ver 2.9, for pc-linux (i686)
[root@host3 bin]#

Posted by 몰라욧