2014-09-22 5 views
1

log/archive 폴더의 로그 폴더에있는 모든 파일과 폴더를 이동하려고하므로 "log"폴더에서 실행하려고하는 대처 스크립트가 있습니다. 그래서 단순히 분명히 충분히Logrotate 대처 스크립트가 작동하지 않습니다.

mv log/* log/archive/2014 

을 추가, 나는 그 자체의 하위 디렉토리로 이동할 수 없습니다 아카이브 폴더를 말하는 오류가 발생, 그래서 보관 폴더를 제외한 모든 이동 이동 명령에 추가 매개 변수를 추가했습니다. CLI에서 실행되는 경우

mv !(archive) log/* log/archive/2014 

이 정확한 명령은 잘 작동하지만 lastaction/endscript 블록 내부 추가 할 때, 그것은

logrotate_script: 2: logrotate_script: Syntax error: "(" unexpected

누구는 이런 일이 발생하는 이유에 대한 단서를 가지고 다음과 같은 메시지를 던졌습니다 ?

답변

0

셸로 bash을 사용하고 있습니다. extglob 설정이 활성화되어 있습니다.

logrotate가 해당 셸 스크립트를 실행 중일 때 그 중 하나가 참이 아닙니다.

또한 mv 명령이 이상하게 보입니다. archive이 로그에있는 경우 !(archive)에 접두어로 log/이없는 이유가 표시되지 않습니다. 또한 log/*extglob glob과 관계없이 여전히 log/archive과 일치해야합니다. (당신이 을 원한다고 생각할 것입니다. 처음에는 mv에서 경고를 무시하지 않는다고 가정합니다.)

+0

cli에서 구문 (mv log /! (archive))이 작동하지 않습니다. "bash :! : 이벤트를 찾을 수 없습니다" –

+0

'mv! (archive)'는 (OP와 마찬가지로) 작동하지만'mv log /! (archive)'는 그렇지 않습니다. 'extglob'가 활성화되어 있습니까? 귀하의 껍질에 전자가 작동한다면 후자가 있어야합니다. logrotate 스크립트에서 bash를 사용하고 'extglob'가 활성화되어 있어야하지만 history 확장은 스크립트에서 기본적으로 비활성화되어야하므로 문제가되지 않아야합니다. –

관련 문제