
내 클라이언트 웹사이트에서 백업을 자동화하기 위해 다음 CRON 작업을 올바르게 설정하는 데 문제가 있습니다.
이 사이트는 Joomla 기반이며 Akeeba Backup을 사용하여 백업을 처리하고 있습니다. 명령줄 CRON 작업에 대한 권장 사항은 다음과 같습니다.
호스트의 CRON 인터페이스에서 다음 명령을 사용하십시오: /path/to/php /var/www/domain.com/cli/akeeba-backup.php
/path/to/php를 호스트의 PHP CLI(명령줄 인터페이스) 실행 파일에 대한 실제 경로로 대체해야 합니다. PHP CLI 실행 파일을 사용해야 한다는 점을 기억하세요. PHP CGI(Common Gateway Interface) 실행 파일은 CRON 스크립트에서 작동하지 않습니다. 이것이 무엇을 의미하는지 잘 모르겠으면 호스트에게 문의하세요. 그들은 이 정보를 제공할 수 있는 유일한 사람들입니다.
domain.com을 예로 사용함
Ubuntu 20.04에 CRON을 설치하고 실행 중입니다.
다음 코드는crontab -e
0 3 * * * /usr/bin/php7.4 /var/www/domain.com/cli/akeeba-backup.php --profile=1 --description="Full automated backup"
이 사이트는 FPM이 설치된 PHP 7.4를 실행하고 있습니다.
실행하면 which php
다음이 반환됩니다./usr/bin/php
실행하면 ls -l /usr/bin/php
다음이 반환됩니다.lrwxrwxrwx 1 root root 21 Aug 31 18:09 /usr/bin/php -> /etc/alternatives/php
실행하면 ls -l /etc/alternatives/php
다음이 반환됩니다.lrwxrwxrwx 1 root root 15 Aug 31 18:53 /etc/alternatives/php -> /usr/bin/php8.0
여기에는 사이트에서 사용 중인 7.4 대신 버전 8.0이 표시되므로 CRON 작업이 대신 버전 8을 사용해야 함을 의미합니까?
샘플 로그 출력/var/log/syslog
Oct 1 11:39:01 domain CRON[38538]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
어떤 도움이라도 대단히 감사하겠습니다.
답변1
실행되는 작업은 cron
데스크탑에 있는 것과 동일한 런타임 환경에서 실행되지 않습니다. PATH
변경 사항이나 기타 환경 변수 설정은 작업 ~/.bashrc
에 자동으로 전파되지 않습니다 cron
. 예를 들어 가 없으므로 $DISPLAY
GUI 프로그램에는 특별한 처리가 필요합니다(읽기 man xhost
).
Read 파일 cron
에서 모든 작업에 대한 환경 변수를 설정할 수 있습니다 .crontab
man 5 crontab
echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
각 환경의 결과를 살펴보세요 .
"각각"이라는 말은 데스크탑을 의미하며 , 궁금하다면 "GUI가 아닌 터미널"을 나중에 cron
사용할 수 있습니다 .batch