쉘프로그래밍 정말 답답합니다.

jjaiwook79의 이미지

저는 지금 cron에 등록시켜 5일이 지난화일을 특정 디렉터리에서 지우고 싶습니다.

find 명령을 사용해서 이름으로 찾으려합니다.

만든날짜보다는 제가 파일을 만들당시에 날짜를 사용해서 파일명을 만들기 때문에 그 방법을 택했습니다.

그런데 문제가 있습니다.

쉘스크립트를 만들고 직접 실행시키면 잘 돌아가지만

그것을 crontab 에 넣고 실행시키면 find 가 안됩니다. 검색이 안됩니다.

find 명령에서

-name \"*${olddate}*\"

-name *${olddate}*

-name \'*${olddate}*\'

이렇게 다 해봤지만 역시 안됐습니다. :oops:


#!/bin/bash

olddate=`date --date '5 days ago' | awk -F'. ' '{print $1 $2 $3}'` <-- 날짜가 잘 뽑혀 나옵니다. 20040124 와 같이.
backdir=/back

find $backdir/ -name "*$olddate*" -exec rm -rf {} \;

스크립트는 위와 같습니다.

crontab 으로 실행이 안되서 다른 방법을 써봤지만 역시 안됩니다.


#!/bin/bash

olddate=`date --date '5 days ago' | awk -F'. ' '{print $1 $2 $3}'` backdir=/back

ls /back/ > /tmp/list

grep ${olddate} /tmp/list > /tmp/list_old

for i in `cat /tmp/list_old`
do
        rm -rf $i
done

grep 명령도 안먹는 것 같습니다.

이거땜에 몇일째 고민입니다.

고수님들의 많은 도움 바랍니다. :?

eseo의 이미지

Quote:
쉘스크립트를 만들고 직접 실행시키면 잘 돌아가지만

그것을 crontab 에 넣고 실행시키면 find 가 안됩니다. 검색이 안됩니다.

경로 문제 아닐까요?
스크립트로 만든후에 crontab 에 다음과 같이 등록시켜보심이 어떨까요?

30 24 * * * /script_path/script

---
배려하는 마음을 갖자.

fasthyun의 이미지

cron 디버그하는법

cron 실행도중 출력되는 값을 보려면
설정(crontab -e) 할때 이변수 값을 실행될 라인 위쪽에 넣으면됩니다.

#다음주소로 과정과 결과를 보넵니다.
MAILTO=user@hostname

#이건 로컬 user로 메일이 옵니다.
MAILTO=user

#이다음라인부터는 결과를 안보넵니다.
MAILTO=

#그리고 패스는 이렇게 합니다.
PATH=/bin:/sbin

#shell선택
SHELL=/bin/bash

이렇게 하면됩니다.

님의 스크립트는 보이는데
근데 crontab 설정을 어떻게 했는지는 안올리셨네요 ?

dreamt의 이미지

제가보기에 언어 설정이 달라서 그런것 같습니다.

> export LANG=ko_KR
> date
2004. 01. 24. (토) 17:19:01 KST

> export LANG=en_US
> date
Sat Jan 24 17:19:19 KST 2004

감이 좀 오시죠? ^^;

추가로, awk로 date의 출력 결과를 재 포맷 하시기 보다는
date 자체의 포맷 기능을 사용하시는것이 더 좋은방법일것 같습니다.

> date -d '5 days ago' +%Y%m%d
20040119

♪ I'll play the blues for you. ♪

tae100의 이미지

/etc/crontab에 PATH 지정이 잘 되었나 확인해보시거나
find나 rm같은 명령어들의 풀경로를 적어서 한번 해보세요.
(/usr/bin/find,/bin/rm 이런식으로...)

예전에 솔라리스에서 cp를 /usr/bin/cp 이렇게 하지않고
그냥 cp로만 썼다가 비슷한 고생을 했던 경험이 있네요.
로그인해서 직접 돌리면 잘 돌아가는데 크론으로 돌리면
안돌아가는 현상말이죠...^^

Urban Daydreams~~

jjaiwook79의 이미지

Quote:

> export LANG=ko_KR
> date
2004. 01. 24. (토) 17:19:01 KST

> export LANG=en_US
> date
Sat Jan 24 17:19:19 KST 2004

언어 설정이 다른 상태에서 awk로 재포맷하는 방법을 쓰니까 검색이 안됐던 것이였군요.

감사합니다. 문제가 해결됐습니다.

haewoo의 이미지

#!/bin/bash
/bin/find /home/user1/logs -ctime +5 -type d -exec /bin/rm -rf {} \;

위에 처럼 스크립트를 만드시면 될듯...
생성일 기준으로 /home/user1/logs 의 내용중 5일 이전의 모든 파일이 삭제됩니다.

주의하실 점은 모든 Path를 full path로 사용하세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.