posted by 귀염둥이채원 2018. 11. 27. 02:33

리눅스 find명령어


리눅스에서 find명령어는 파일 시스템에서 주어진 조건으로 파일을 찾는다

find /대상디렉토리 -옵션 처리방법

대상 디렉토리 : 찾을 파일의 시작할 디렉토리를 지정한다

옵션 : 찾을 조건을 입력한다

-name 파일 이름 : 파일 이름으로 찾는다


-atime +n

access time이 n일 이전인 파일을 찾는다

ex) find /etc -atime +7 : 7일 이전에 파일을 검색한다


-atime -n

access time이 n일 이내 파일을 찾는다

ex) find /etc -atime +n : 7일 동안 파일을 검색한다


-mtime +n

n일 이전에 변경된 파일을 찾는다

ex) find /etc/ -mtime +7 : 7일 이전에 파일을 검색한다


-mtime -n

n일 이내의 변경된 파일을 찾는다

ex) find /etc/ -mtime -7 : 7일 이내에 파일을 검색한다 

-perm nnn

파일 권한이 nnn인 파일을 찾는다

ex) find /etc/ -perm nnn : nnn일 권한을 가진 파일을 찾는다


-type x

파일 type이 x인 파일을 찾는다

ex) find /etc/ -type x : 파일 타입이 x인 파일을 찾는다


-size n

사이즈가 n이상인 파일들을 찾는다

find /etc -size 8 : 파일을 8이상인 파일을 찾는다


-links n

링크된 개수가 ndls vkdlfemfdmf ckwsmsek


-user username

user 이름으로 찾는다

ex) find /etc -user nobody : nobody이름으로 찾는다 


-group nobodygroup

그룹이름을 찾는다


-print

찾은 파일의 절대 경로명을 화면에 출력한다


-exec cmd {};

찾은 파일들에 대한 cmd 명령어를 실행한다


find [찾을 디렉토리경로] [찾기옵션] [찾은후행할 작업]


찾기홉션

-empyty : 비어있는파일

gidn : 특정 gid를 갖는 파일

group gname : 특정 grop에 속한 파일

name : wlwjdgks gudtlrdmf rkwsms vkdlfdlfma

newer : 특정 파일 이후에 생성된 파일

perm : 특정 허가모드를 가지고 있는 파일

uid n : 특정 uid를 갖는 파일

used n : 특정파일을 소유하고 있는 소유자의 파일


[찾은후 행할 작업]

-print : 찾은 파일을 보여준다

-exec : 찾은 파일들에 대해 특정명령을 수행한다


그럼, 사용예를 들어 보겠습니다.


find . -uid 504 -print


./home/sspark

./home/sspark/.Xdefaults

./home/sspark/.bash_logout

./home/sspark/.bash_profile

./home/sspark/.bashrc


위의 예는 현재디렉토리(.)에서부터 uid가 504인 사용자의 파일을 찾아서 보여달라는 것입니다.(-print)


find ~sspark -name *.shtml -print

./home/sspark/public_html/sample.shtml

./home/sspark/public_html/testpass/sample.shtml

./home/sspark/public_html/testdir/sample.shtml


위의 예는 sspark이라는 사용자의 소유로된 파일중 shtml로 끝나는 파일을 찾아서 보여달라는 것입니다.


find ~sspark -name *.doc -exec rm -f {} \;


위의 예는 sspark이라는 사용자의 홈디렉토리(~sspark)이하에 존재하는 doc로 끝나는(*.doc) 파일을 찾아서 묻지말고(-f) 지워(rm)버리라는 명령어입니다.


이 명령어는 웹호스팅사용자에게 보다도 서버관리자에게 더욱 유용한 명령어로서 서버관리를 하다보면 어떤 파일이 어디에 위치하고 있는지 찾아야 할 때가 많습니다. 이런 경우에 매우 유용하게 사용됩니다.

 
find /user4 -name test* -print

/user4 아래에서 파일이름이 test로 시작하는 모든 파일을 찾아서 화면에 
보여준다.

cd / 
find . -name ping -print

root 디렉토리 밑에서 파일이름이 ping인 파일을 찾아 절대 경로명을 화면에 
출력한다.

cd / 
$ find /usr -name *.c -print

/usr 밑에 이름이 .c로 끝나는 모든 파일들을 찾아 경로명을 보여준다.

$ cd / 
$ find $home -name who.txt -print

home 디렉토리 아래에 who.txt라는 파일을 찾아 경로명을 보여준다.

$ cd / 
$ find . -type d -print

파일 타입이 d인 파일을 찾아 경로명을 화면에 출력한다.

$ cd / 
$ find /dev -type c -print

/dev디렉토리 아래에서 파일 타입이 c인 파일을 찾아 경로명을 보여 준다.

$ cd / 
$ find . -perm 700 -print

파일 권한이 700인 파일을 찾아준다.

$ cd / 
$ find . \ ( -perm 400 -o -perm 200 ) -print

파일 권한이 400인 파일과 200인 파일을 찾아준다. 
(주의 : "\"의 앞뒤에 space 가 반드시 있어야 한다.)

$ cd / 
$ find . -size +1024 -print

파일의 블럭 크기가 1024 이상인 파일을 찾아준다.

$ cd / 
$ find . -name core -size +2048 -print

파일 이름이 core이고 크기가 2048블럭 이상인 파일을 찾아준다.

$ cd / 
$ find . -user unix01 -print

파일 소유자가 unix01인 파일을 찾아준다.

$ cd / 
$ find . -group unix -print

사용자그룹이 unix인 파일을 찾아준다.

$ cd / 
$ find . -atime +30 -print

30일 이전에 억세스되었던 파일을 찾는다.

$ cd / 
$ find . -mtime -7 -print

7일 이내에 수정된 적이 있는 파일을 찾는다.

$ cd / 
$ find . -name core -exec ls -l {} \;

이름이 core인 파일을 찾아서 ls -l 한다.

$ cd / 
$ find . -name \*.c -atime +30 -exec ls -l {} \;

30일 이전에 억세스된 파일 중 *.c를 찾아 ls -l 한다.

$ cd / 
$ find . -name core -exec rm -i {} \;

현재 디렉토리 밑에서 이름이 core인 파일을 찾아 지운다(지우기 전에 정말 
지울 지를 물어본다.)

grep와 함께 사용한 find명령어 strcpy 문자열을 포함한 현재디렉토리 아래의 *c파일
grep strcpy `find ./ -name *c`


8. 최상위 root에서 파일 찾기
find /
 home directory 밑에서 찾기
find ~ -name sample
 find ~ -name 'file*'
 home directory에서 파일명에 file이 들어가면서 타입이 f(일반파일인)경우
find ~ -name 'file*' -a -type f
특정 디렉토리에서 사용자 unix05가 만든 파일 찾기
find /data2/unix -user unix05

9. core
실행하다가 오류가 있는 파일 core
(ex. sleep 20) ctrl+\ 강제종료하면 core 파일이 생성됨
실행하다가 종료되어도 생김 (cat으로 열수 없음(개발자가 debugger로만 확인할 수 있음, 파일 크기가 굉장히 큼)

core파일 찾기
find ~ -name core
core파일 삭제
find ~ -name core -exec rm {} \;
HDD 용량 줄이기 
find / -name core -exec rm {} \;

10. passwd 파일을 찾을 때 뜨는 2>(오류메시지)를 /dev/null로 보냄 -오류메시지 안 보임
find / -name passwd 2> /dev/null
ls -i passwd (passwd 파일의 inode찾기)
find / -inum 108235 2> /dev/null (inode가 같은 것을 찾음)

11. 최근 3일 사이에 마지막 수정되고 파일타입은 일반타입인 로그파일(/var/adm에 있음) 찾기
find /var/adm -mtime -3 -a -type f

12. /etc 디렉토리에서 일반파일 중 파일의 크기가 4096 byte 이하인 파일 찾기 (1block = 512byte)
 find /etc -size -8 -a -type f
 find /etc -size -1 -a -type f 2> /dev/null 512바이트 이하 파일 찾기 (오류메시지는 /dev/null로 보내기)

13. etc + k 이전에 입력했던 내용
| more 내용을 페이지별로 보여주기 (많은 내용일 경우)



find ~ -name '*.sql' -exec grep -il 'linkcomp' {} \; 

posted by 귀염둥이채원 2018. 11. 27. 01:22

hostname 임시적 변경 (리부팅시 원래대로 돌아감)

# hostname 확인

[root@localhost ~]# hostname

localhost.localdomain


# hostname 변경

[root@localhost ~]# hostname mycom


# 변경된 hostname 확인

[root@localhost ~]# hostname

mycom


hostname 영구적으로 변경 (centos 6)

# 변경된 hostname 확인

[root@localhost ~]# vi /etc/sysconfig/network

HOSTNAME=mycom



hostname 영구적으로 변경 (centos 7)

[root@localhost ~]#hostnamectl set-hostname mycom


hostname 영구 변경후 재부팅~~

영구적으로 변경한후 재접속시 hostname이 변경된 것을 확인할 수 있다

[root@mycom ~]#


posted by 귀염둥이채원 2018. 11. 27. 01:00
  • 프로세스 예약 데몬
  • 리눅스용 작업 스케줄러
  • 특정시각에 명령어가 수행되도록 등록가능
  • 구성: crond(데몬) + crontab(제어프로그램) = cronie(패키지)
  • 로그: /var/log/cron에 변경/수행 이력이 기록됨

등록형식

*    *    *    *    *  수행할 명령어
┬   ┬   ┬   ┬   ┬
│    │    │    │    │
│    │    │    │    │
│    │    │    │    └───────── 요일 (0 - 6) (0 =일요일)
│    │    │    └────────── 월 (1 - 12)
│    │    └─────────── 일 (1 - 31)
│    └──────────── 시 (0 - 23)
└───────────── 분 (0 - 59)
→ 이렇게 설정하면 매 1분마다 작업 수행
→ 각 자리는 "분시일월요"를 뜻함

예시

* * * * * /root/every_1min.sh
→ 매 1분마다 /root/every_1min.sh 를 수행 (하루에 1440회[1])
15,45 * * * * /root/every_30min.sh
→ 매시 15분, 45분에 /root/every_30min.sh 를 수행 (하루에 48회[2])
*/10 * * * * /root/every_10min.sh
→ 10분마다 /root/every_10min.sh 를 수행 (하루에 144회[3])
0 2 * * * /root/backup.sh
→ 매일 02:00에/root/backup.sh 를 수행 (하루에 1회)
30 */6 * * * /root/every_6hours.sh
→ 매 6시간마다 수행(00:30, 06:30, 12:30, 18:30)
30 1-23/6 * * * /root/every_6hours.sh

 

→ 1시부터 매 6시간마다 수행(01:30, 07:30, 13:30, 19:30)

 

 

현재 사용자
[root@monkey ~]# crontab -l
no crontab for root
다른 사용자
[root@monkey ~]# crontab -l -u testuser
no crontab for testuser

직접 등록

crontab -e

vi 편집기로 현재 사용자에 대한 cron작업의 확인/수정을 직접 할 수 있다.

현재 사용자의 예약작업을 모두 삭제

crontab -r
실행예시
[root@monkey ~]# crontab -l
* * * * * /root/a.sh
* * * * * /root/b.sh
* * * * * /root/c.sh
[root@monkey ~]# crontab -r
[root@monkey ~]# crontab -l
no crontab for root

 FAQ

 
  1) cron 설정한 후에는 crond 데몬을 재실행해야 하나요?

  아닙니다. crontab -e 으로 설정 후 빠져나오면 바로 적용됩니다.

2) truefeel 사용자는 cron을 못 쓰게 하고 싶습니다.

  /etc/cron.allow : 허용할 사용자 ID 목록
  /etc/cron.deny  : 거부할 사용자 ID 목록

  cron.allow 파일이 있으면 이 파일에 들어있는 ID만 사용 가능
  cron.deny  파일이 있으면 이 파일에 들어있는 ID는 사용 불가

  따라서 cron.deny에 truefeel ID를 추가해주면 됩니다.

3) > /dev/null  2>&1 이 무슨 뜻입니까?

  지정한 명령어 처리 결과와 발생할지 모르는 에러메시지를 출력하지 않고 모두 버린다는(/dev/null)는
  뜻입니다. 만약 결과와 에러를 파일로 저장하려면 /dev/null 대신 파일명을 적어주면 됩니다.


1 ··· 77 78 79 80 81