Makefile의 Latexmk, bash 스크립트의 Cron - Latexmk가 실행되지 않음

Makefile의 Latexmk, bash 스크립트의 Cron - Latexmk가 실행되지 않음

자동으로 조판하려는 LaTeX 파일이 포함된 여러 Git 저장소가 있습니다. 아이디어는 (1) 새 커밋을 가져오고 (2) 변경된 LaTeX 파일을 make all호출해야 하는 이를 실행하는 각 저장소에서 실행되는 중앙 bash 스크립트(cronjob에 의해 실행)를 갖는 것입니다.latexmk

중앙 bash 스크립트에는 다음 줄만 포함됩니다.

bash ./repos/repo-xyx/cron.sh

그런 다음 repos/repo-xyz/cron.sh이:

cd "$(dirname "$0")"
git pull
make all
cd -

그리고 같은 디렉토리의 Makefile에서:

all: $(subst .tex,.pdf,$(wildcard *.tex))

%.pdf: %.tex
        latexmk -pdf -pdflatex="pdflatex -shell-escape" $< </dev/null

* * * * * bash .../cron.sh 2>&1 > .../cron.log내 사용자의 crontab에는 및 가 있습니다 SHELL=/bin/bash.

cronjob이 실행되면 로그에서 다음을 읽습니다.

Already up-to-date.
latexmk -pdf -pdflatex="pdflatex -shell-escape" myfile.tex </dev/null
.../ (this comes from the line "cd -")

보시 latexmk다시피 호출되지만 아무 작업도 수행하지 않습니다. myfile.pdf아무것도 생성되지 않습니다.

bash cron.sh(동일한 사용자로) 최상위 디렉토리에서 실행 하면 다음과 같습니다.하다일하다.

cron 작업에서 bash 스크립트를 실행할 때 Makefile이 명령을 실행하지 못하게 하는 원인은 무엇입니까(적어도 make가 이 명령을 실행한다고 생각하지 않습니다)?

이것은 GNU Make 3.81에 있습니다 Linux ubuntu 3.13.0-51-generic #84-Ubuntu SMP Wed Apr 15 12:08:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux.

답변1

pdflatex문제는 내 것으로 판명되었습니다 $HOME/.profile. 그래서 cronjob을 다음과 같이 변경했습니다.

* * * * * . $HOME/.profile; bash .../cron.sh 2>&1 > .../cron.log

에 따라https://unix.stackexchange.com/a/27291/37050.

관련 정보