왜 내 crontab에서 하나의 wget 명령 만 작동합니까?


15

하루에 두 번 서버의 PHP 스크립트에서 내용을 가져 와서 원하는 변수 lang를 설정하기 위해 쿼리 변수 를 변경 하고이 내용을 두 개의 언어 특정 파일에 저장하려고합니다. 이것은 내 crontab입니다.

*/15 * * * * ~root/apache.sh > /var/log/checkapache.log
10 0 * * * wget -O /path/to/file-sv.sql "http://mydomain.com/path/?lang=sv"
11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en"

문제는 첫 번째 wget 명령 행 만 실행 중이거나 정확해야한다는 것입니다 (작성중인 유일한 파일은 /path/to/file-sv.sql). 두 번째와 세 번째 행을 전환하면 /path/to/file-en.sql대신 쓰여집니다. 첫 줄은 어디에 있든지 항상 예상대로 실행됩니다.

그런 다음 lynx -dump "http://mydomain.com/path/?lang=xx" > /path/to/file-xx.sql아무 소용이 없었습니다. 여전히 첫 번째 lynx 라인 만 성공적으로 실행되었습니다. wget과 lynx를 혼합 해도이 변경되지 않았습니다!

좀 필사적으로! 뭔가 빠졌습니까? crontab (wget 또는 lynx와 결합 된)에는 수천 개의 기사가 있지만 모두 기본 설정 및 구문을 다루는 것 같습니다. 누구든지 내가 잘못하고있는 것에 대한 단서가 있습니까?

고마워,
Alexander


mydomain.com/path/?lang=en에 액세스 할 때마다 무언가가 반환됩니까? 어떤 일이 발생하는지 확인하기 위해 명령 줄에서 이것을 시도 했습니까 (wget -O-mydomain.com/path/?lang=en )?
Torian

1
나는 지우고 2와 3 사이의 캐리지 리턴 다시 시도 할 것
안토니우스 블로흐을

가장 좋은 방법은 crontab에서 실행 파일의 전체 경로를 지정하는 것입니다. "/ usr / bin / wget"과 같습니다. 크론 중 하나가 작동하기 때문에 이것이 귀하의 경우에는 도움이되지 않는다고 생각합니다.
Antonius Bloch

이 일이 발생하면 cron의 로그에 무엇이 표시됩니까?

@Torian : 매력처럼 작동합니다.
Alexander Wallin 2019

답변:


42

crontab의 끝에 개행을 추가하십시오.


1
당신은 신의 선물입니다! 그랬어! 평판이 있다면 투표 해 드리겠습니다. :)
Alexander Wallin

1
@gelraen하지만 ... 왜?
Samuel

2

텍스트에 문제가 있습니다. vim에서 crontab을 편집 한 다음 보이지 않는 문자를 표시하십시오.

:set invlist

이를보고 정정 할 수 있어야합니다.


어때요? Vim에서 어떻게 편집합니까? 복사 붙여 넣기로 인해 문제가 발생할 경우 전체 파일을 다시 쓰려고했습니다.
Alexander Wallin 2019

@afEkenholm : 지금 어떻게 편집합니까?
bahamat

1
@bahamat :# crontab -e
Alexander Wallin

: @afEkenholm :이 할EDITOR=vim crontab -e
bahamat

@bahamat : 모든 것이 잘 보입니다. $각 줄의 끝에 자주색이 있습니까?
Alexander Wallin

1

crontab을 디버그하거나 루트 메일을 읽으려면 리디렉션을 추가하십시오.

11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en" > /tmp/crontab_ouptput 2> /tmp/crontab_error

또한 콘솔에서 'wget -O /path/to/file-en.sql " http://mydomain.com/path/?lang=en "'을 실행하십시오.

또한 새로운 crontab의 유효성을 검사하려면 'crontab -e'를 사용하십시오.

또한 작동하지 않는 행을 삭제하고 키보드에서 다시 입력하십시오.

corntab 백업 및 실행 명령 :

crontab -l | crontab -

추가 /tmp/crontab_ouptput 2> /tmp/crontab_error는 첫 번째 줄에서만 작동합니다. 콘솔에서 명령을 실행하면 정상적으로 작동합니다. 맨손으로 전체 파일을 다시 작성했지만 아무것도 변경되지 않았습니다.
Alexander Wallin

crontab을 백업하고 시도하십시오. crontab -l | crontab을 -
alvosu

@alvosu의 노력에 감사하지만 간단한 줄 바꿈이 트릭을 만들었습니다!
Alexander Wallin

1

cronie 실행중인 시스템에서 위의 답변 (개행 추가, 개행 삭제 등)을 시도하는 데 시간을 보냈습니다 . 마지막으로 버그가 발견 cronie 1.5.3 각 사용자에 대한 첫 번째 cron 작업을 실행이 . 1.5.4 에서 수정되었습니다.

https://github.com/cronie-crond/cronie/issues/30

이것이 누군가를 구하기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.