2017-01-06 6 views
0

crontab 파일을 이동하려고했으나 crontab이 파일을 이동하지 않습니다. 내가 수동으로한다면, 그것은 작동합니다 ... 가능한 이유가 무엇인지 알 수 있습니까?crontab 작업을 통해 파일을 이동해도 작동하지 않지만 수동으로 실행하면 작동합니다.

13,29 * * * * mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp 

을 내가 아무 문제없이 작동 다음 줄을 실행하면 :

기본적으로
mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp 
+0

"mv"바로 전에 "mv"명령을 실행 해보십시오. iirc 일부 셸 구현은 맹목적으로 문자열을 쉘에 전달하는 대신 자신의 (세미 브리 취) 구문 분석을 수행하지만 – loreb

+0

cron과 함께 실행될 경우 수행되는 내용을 보려면 출력이 콘솔에 표시되지 않습니다. –

+0

"set -x"명령이 실행될 때마다 인쇄하고 cron은 그 메일을 여러분에게 메일로 보냅니다 - 매분마다 실행되는 "echo test"를 추가하고 잠시 기다리십시오./var/mail에 메일이 있어야합니다/(또는 사용자가 구성한 것) – loreb

답변

2

, cron 작업이 /bin/sh를 사용하여 실행이 내가 가진 것입니다. 당신은이 같은 작업하기 전에 추가하여 사용하는 쉘을 설정 할 수 있어야한다 :

SHELL=/bin/bash 
13,29 * * * * mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp 

... 또는 중 쉘 당신이 좋아합니다. 당신 있으며 crond 그 표기법을 지원하지 않는 경우

또는, 당신은 명시 적으로 -c 인수를 사용하여, 당신이 좋아하는 쉘을 호출 할 수 있습니다

13,29 * * * * bash -c 'mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp' 

주의를 둘러싸는 작은 따옴표. 전체 명령은 쉘에 대한 단일 인수 여야하기 때문에 필요합니다.

또 다른 방법으로 내가 있어야한다고 생각 평범한 오래된 Bourne 쉘 (SH) 구문을 사용하도록 명령을 변환하는 것입니다 : 명령 치환에 대한 역 따옴표를 사용하여 ...

13,29 * * * * mv `grep -l "File was not FOUND" /home/user/test*` /home/user/temp 

합니다.

+0

내가이 오류를 얻었습니다. SHELL =/bin/bash crontab : 이전 줄에 오류가 있습니다. 예기치 않은 문자가 줄에 있습니다. crontab : 입력에서 오류가 발견되었으므로 crontab 파일이 생성되지 않았습니다. –

+1

흥미 롭습니다. 같은 결과를 얻는 다른 방법을 추가했습니다. 호기심에서 당신은 어떤 플랫폼을 사용하고 있습니까? – spectras

+0

SunOS 5.10 Generic_150400-28 –