(10101101)173/UNIX2009. 5. 10. 16:49
log파일에 경우 관리하지 않으면 용량이 얼마가 될지 모르는 파일이 입니다. 물론 시스템이 자동으로 관리하는 파일이라던가 사용자가 이미 설정을 해놓은 파일이라면 큰 걱정이 없지만 그렇지 않은 파일들은 금방금방 용량을 체워 나갑니다. 이런 파일들은 어느정도 용량이 차면 여러가지 방법으로 손을 봐야 합니다.(백업 후 삭제 등) 그중에 하간지 방법 파일을 삭제하지 않고파일 용량을 0으로 만들어 버리는 방법 입니다.

[그림 1. garbage.log 파일 확인]

그림 1을 보면 빨간밑줄에 garbage.log파일이 보입니다. du 명령으로 용량을 확인해 보니 233MB 입니다. 이 파일은 파일명 그대로 쓰레기 값이 들어있습니다. 이 파일을 간단한 명령으로 파일 사이즈를 0으로 만들어 보겠습니다.

[root@FC10VM /]# cat /dev/null > garbage.log

[그림 2. garbage.log 파일에 사이즈 변화]

여기서 "/dev/null"이란 Null Device를 말합니다. 윈도우로 말하면 쓰레기통 같은 겁니다. 이런 저런 명령어 들을 사용하다가 권한이 없어서 이런 저런 명령어의 기능을 하지 못할때 그 경고문들 /dev/null 로 보내 경고문을 보지 않는 방법이 있습니다. grep은 결과물중 사용자가 원하는 부분만 보도록 하게 하지만 /dev/null에 경우 반대로 원하지 않는걸 /dev/null로 보내 보지 않겟다는 grep과는 반대적 원리에 있습니다.



Posted by Special Alex
(10101101)173/UNIX2009. 5. 5. 13:56
흔하게 파일에 이름을 바꾸려 할때 사용하는 명령어는 "mv" 명령어 입니다.
[root@FC10VM /]# mv testMv mvTest

그런대 이 mv명령 으로는 많은 파일을 한번에 바꾸기 어렵습니다. 파일 하나하나를 mv명령으로 바꿔줘야 합니다. 이런 불편함을 없에주는 명령어가 바로 "rename"명령어 입니다. 필요 조건이 있다면 파일명에 일정한 패턴이 필요하다는점 입니다.

[그림 1. 5개의 testRename1 ~ 5파일]

위 그림 1 을 보면 testRename1 ~ 5번까지의 5개의 파일이 존재합니다. 이 파일들을 "testRename*"이라는 동일한 패턴을 가지고 있습니다. 이 파일들을 rename명령어를 이용해 renameTest로 바꾸어 보도록 하겠습니다.

[그림 2. testRename*을 renameTest*로]

[root@FC10VM /]# rename testRename renameTest testRename?
그림 2에서 노란색 박스에 보이는 testRename* 파일들이 빨간밑줄의 위 명령어 실행 후 주황색 박스처럼 renameTest* 로 파일명이 모두 바뀌었습니다. 이제 rename명령어를 확인해 보겠습니다.

testRename : 파일, 디렉토리 명에서 찾아낼 파일명 패턴을 지정합니다.
renameTest : 찾아낸 파일명 부분을이 변경될 파일명을 지정합니다.
testRename? : 이름을 바꾸려는 파일들이 가진 동일한 파일명 패턴을 지정합니다.

그렇다면 여기서 만약 "?"를 넣지 않게 된다면? 다음과 같은 오류가 나게 됩니다.
rename: renaming testRename to renameTest failed: 그런 파일이나 디렉토리가 없습니다.

이는 testRename이란 동일한 이름을 가진 파일이나 디렉토리가 존재하지 않기 때문입니다. 그래서 ?를 넣게 되는대 "*"을 넣어도 무관합니다. ?와 *의 차이는 Windows환경과 마찬가지로 ?는 한글자단위가 되며 *은 여러글자 단위가 됩니다. 때문에 맨마지막 적용대상 파일명의 지정때 물음표를 두개(??)넣게되면 동일한 파일명 패턴을 가진 파일이나 디렉토리가 없기 때문에 에러가 나게 됩니다.

이번에는 파일에 확장자를 바꿔보도록 하겠습니다.

[root@FC10VM /]# rename .txt .log *.txt

*.txt란 이름을 가진 파일이나 디렉토리중 .txt부분을 .log로 바꾼다. 찹 쉽죠?
만약 변경할 파일들이 모두 동일한 파일명 패턴을 가지고 있다면(그림 1, 2처럼 특정 폴더밑에 모든 파일이 동일하다면)

[root@FC10VM /]# rename .txt .log *.*
[root@FC10VM /]# rename .txt .log *

맨끝에 파일 지정을 *.*이나 *로 모든 파일을 선택해도 가능합니다. 주위해야 할점은 .testRename6.txt과 같이 숨김파일이 있다면 바뀌지 않습니다. *.*이나 *로 모든 파일을 지정했다 하더라도 숨김파일은 적용되지 않습니다. 또

[그림 3. tetete를 teee로 변경]

그림 3과 같이 빨간밑줄에 tetetest를 teeeteeeteeest로 바꾸기 위해
[root@FC10VM /]# rename te teee *
위와같은 하면 공교롭게도 모두 바뀌지 않고 첫번째 te만 teee로(노란밑줄) 변경된걸 확인하실 수 있습니다. 파일명에 포함된 총 3개의 te중 한개만 바뀌게 되는겁니다. 원래 목표되로 바꾸려면
[root@FC10VM /]# rename tetete teeeteeeteee *
이와같이 하면 됩니다. 여기서 다시 teeeteeeteeest를 원상태인 test로 바꾸려면
[root@FC10VM /]# rename eeeteeeteee e *
이같이 해야 됩니다.



Posted by Special Alex
(10101101)173/UNIX2009. 5. 3. 16:04
특정 사용자의 패스워드를 잠금으로 해당 사용자가 로그인을 못하게 하는 방법입니다.

[그림 1. passwd -l]

그림 1과 같이 패스워드 정보가 들어있는 /etc/shadow파일을 cat으로 열어보니 testAcc사용자에 비밀번호가 설정되어 있는게 보입니다. 확인 후 바로 testAcc계정을 빨간밑줄에 passwd -l 명령으로 잠금을 걸었습니다. 그러면 노란색 박스처럼 계정의 비밀 번호를 잠기었다고 나오게 됩니다. 

[그림 2. passwd -l 명령 후 shadow파일 확인]

그림 2번을 보게되면 /etc/shadow파일을 다시 확인하게 되는대 비밀번호 앞에 느낌표가 두게 들어가 있음을 발견할 수 있습니다. 비밀번호 앞에 느낌표 두개를 붙여 사용자의 로그인을 막게 됩니다.

[그림 3. passwd -u 명령 후 shadow파일 확인]

그림 3번에서 passwd -u 명령을 실행 후 /etc/shadow 파일을 열어보니 비밀번호 부분 맨 앞에 있던 느낌표 두개가 없어진 것이 확인됩니다. 이제부터 다시 정상적인 로그인이 가능해 집니다.



Posted by Special Alex