'Server & OS/Unix & Linux'에 해당되는 글 3건
- 2010/07/22 :: 30초 간격으로 crontab 실행하기
- 2010/05/25 :: 특정 날짜 이후의 파일만 압축하는 법
- 2009/12/09 :: Unix에서 find 명령 사용
corontab 옵션을 보면 최소 1분 단위 밖에 없다.
1분단위의 경우
*/1 * * * * 명령어
이렇게 하면 1분단위가 되는데 30초 단위로 명령이 실행되고자 한다면 sleep 을 이용하면 된다.
* * * * * * 명령어 & sleep 30; 명령어
이렇게 하면 명령어가 실행된뒤 30초간 sleep 한뒤 다시 명령어를 실행 그렇게 계속 반복하도록 하는 것이다.
문론 수정후 데몬을 재시작 해주셔야겠죠
/etc/init.d/crond restart
|
tar -cvzf filename.tgz --newer-mtime 2004-10-31 *<앤터> ---> 2004년 10월 31일 이후의 날짜를 갖는 모든 파일을 압축 (※ 파일 날짜가 2004년 10월 31인 파일은 압축되지 않는다. 11월 1일 것부터 압축된다.) 계정의 이미지 파일을 월별로 분류할 필요가 있어서, cp명령(파일을 복사하는 명령)으로 특정 날짜 이전/이후의 파일을 복사하는 방법이 있을까 해서 찾아봤는데 $ man cp<앤터> 아쉽게도 그런 옵션은 없더군요. 그런데 순간 tar 명령이 생각났습니다. tar(담배에 들어있는 타르가 아니라, tape archive의 약자임) 명령은 파일을 묶어서 보관하는 명령이죠. 압축옵션(-z)을 주면 대상 파일을 묶은 다음 gzip으로 압축까지 하기 때문에, 쉽게 생각해서 tar는 파일을 압축하는 명령이라고 봐도 크게 틀리지는 않습니다. 아뭏든 tar 명령에서 '특정 날짜(시각) 이전/이후의 파일만' 묶는(혹은 압축하는) 옵션이 있는지를 찾아봤습니다. 결과는? 절반의 성공이었습니다. 특정 날짜 '이전'의 파일만 압축하는 옵션은 없지만, 다행이 특정 날짜 '이후'의 파일만 압축하는 옵션은 있더군요. $ man tar<앤터> NAME *파란색 강조는 제가 했습니다.tar - The GNU version of the tar archiving utility SYNOPSIS tar [ - ] A --catenate --concatenate | c --create | d --diff --compare | r --append | t --list | u --update | x -extract --get [ --atime-preserve ] [ -b, --block-size N ] [ -B, --read-full-blocks ] [ -C, --directory DIR ] [ --checkpoint ] [ -f, --file [HOSTNAME:]F ] [ --force-local ] [ -F, --info-script F --new-volume-script F ] [ -G, --incremental ] [ -g, --listed-incremental F ] [ -h, --dereference ] [ -i, --ignore-zeros ] [ -j, -I, --bzip ] [ --ignore-failed-read ] [ -k, --keep-old-files ] [ -K, --start- ing-file F ] [ -l, --one-file-system ] [ -L, --tape-length N ] [ -m, --modification-time ] [ -M, --multi- volume ] [ -N, --after-date DATE, --newer DATE ] [ -o, --old-archive, --portability ] [ -O, --to-stdout ] [ -p, --same-permissions, --preserve-permissions ] [ -P, --absolute-paths ] [ --preserve ] [ -R, --record-number ] [ --remove-files ] [ -s, --same-order, --preserve-order ] [ --same-owner ] [ -S, --sparse ] [ -T, --files-from=F ] [ --null ] [ --totals ] [ -v, --verbose ] [ -V, --label NAME ] [ --version ] [ -w, --interactive, --confirmation ] [ -W, --verify ] [ --exclude FILE ] [ -X, --exclude-from FILE ] [ -Z, --compress, --uncompress ] [ -z, --gzip, --ungzip ] [ --use-compress- program PROG ] [ --block-compress ] [ -[0-7][lmh] ] filename1 [ filename2, ... filenameN ] directory1 [ directory2, ...directoryN ] -N, --after-date DATE, --newer DATE only store files newer than DATE 처음에는 이 옵션을 쓰면 지정한 날짜 이후의 파일만 압축되는 건 줄 알았습니다. 그런데 해 보니까 그게 아니라 전체 파일이 다 압축이 되더군요. 그래서 인터넷에서 -N (--after-date, --newer) 옵션에 대한 자세한 정보를 찾아 보았습니다. 첫 번째 문서에 -N (--after-date, --newer) 옵션에 대한 설명이 나와 있습니다. 거길 보면 --newer-mtime이라는 옵션이 또 있다고 설명하고 있지요. inode 어쩌고 나와 있는데, 저는 리눅스 파일 시스템 구조가 어떠한지를 모릅니다. 그래서 뭔 말인지는 정확히 이해하지 못했지만, --newer-mtime 옵션을 주어서 압축해 보았습니다. $ tar -cvzf filename.tgz --newer-mtime 2004-10-31 *<앤터> 결과는? 성공했습니다. 정확히는 모르겠지만, 아마도 -N 옵션은 파일이 '실제로' 만들어진 시각을 기준으로 삼고, --newer-mtime 옵션은 ls -alF 했을 때 표시되는 시각을 기준으로 삼는 것 같습니다. 둘이 같을 것 같지만 실제로는 그렇지 않을 수 있습니다. 이를테면 계정 이전을 위해서 파일을 백업한 뒤 새 계정에 올리고 압축을 풀었을 때, ls 명령에 의해 표시되는 날짜는 이전 계정에 있던 파일 날짜 그대로이지만, 파일이 실제로 생성된 것은 압축을 풀었을 시점이죠. 특정 날짜 -가령 2005년 1월 1일- '이후'라는 것이, 1월 1일도 포함되는 것인지 아니면 1월 2일부터만 해당되는 것인지 설명만으로는 명확하지가 않아서 계정에 0바이트짜리 파일을 하나 만들고 테스트 해 보았습니다. 결과는? '지정한 날짜 자체는 포함되지 않는다'는 것이었습니다. 그래서 이를테면 2004년 11월 1일부터 오늘까지의 모든 파일을 압축하고자 한다면, 날짜를 지정할 때 '2004-11-01'이 아닌 '2004-10-31'로 지정해야 한다는 것을 알게 되었습니다. |
문자열찾기 방법 1 - 영어만 주로 가능
# grep -rw "찾는문자열" ./
문자열찾기 방법 2 - 대/소문자 구분 안하고 검색
# grep -i -l "찾는문자열" * -r 2> /dev/null
문자열찾기 방법 3 - 한글, 영어 모두 가능
# find . -exec grep -l "찾는문자열" {} \; 2>/dev/null
문자열찾기 방법 4 - 한글,영어, 대소문자 안가리고 검색
# find . -exec grep -i -l "찾을문자열" {} \; 2>/dev/null
문자열찾은 후 치환
# find . -exec perl -pi -e 's/찾을문자열/바꿀문자열/g' {} \; 2>/dev/null
파일명 찾기
# find / -name 파일명 -type f
파일명 찾기(대소문자 구별없음)
# find / -iname 파일명 -type f
디렉토리 찾기
# find / -name 파일명 -type d
디렉토리 찾기(대소문자 구별없음)
# find / -iname 파일명 -type d
특정 사용자 소유의 모든 파일을 찾을때는?
# find / -user "사용자 ID" -print
두세가지 문자열을 동시에 찾아야 할때는 egrep을 쓰면 아주 편합니다.
예를 들어
만약 그냥 grep으로 문자열1,2 를 찾으려면
ps -ef | grep 문자열1; ps -ef | grep 문자열2
와 같이 해야하는것을 egrep를 이용하면
ps -ef | grep '문자열1|문자열2'
와 같이 간단해집니다.
# egrep '(pattern1|pattern2|pattern3)' file.txt
| 출처 : http://cafe.naver.com/analysisman/740 |
