Cron Ubuntu와 함께 Gradle을 사용할 수 없습니다.

Cron Ubuntu와 함께 Gradle을 사용할 수 없습니다.

이 보고서가 있지만 왜 gradle 명령을 인식하지 못하는지 이해할 수 없습니다... 저는 cron을 처음 사용합니다. 도움을 주셔서 감사합니다!

From [email protected]  Sun Dec 13 04:02:01 2020
Return-Path: <[email protected]>
X-Original-To: ubuntu
Delivered-To: [email protected]
Received: by vps-a29e040b.vps.ovh.net (Postfix, from userid 1000)
    id EF0278157A; Sun, 13 Dec 2020 04:02:01 +0000 (UTC)
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <ubuntu@vps-a29e040b> ./myscript.sh
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/ubuntu>
X-Cron-Env: <LOGNAME=ubuntu>
Message-Id: <[email protected]>
Date: Sun, 13 Dec 2020 04:02:01 +0000 (UTC)

TERM environment variable not set.
./myscript.sh: line 4: gradle: command not found

답변1

cron사용하기는 매우 쉽지만 알아야 할 몇 가지 기능이 있습니다. 간략한 요약은 다음과 같습니다.

1. cron업무 환경이 다릅니다.

cron작업이 귀하와 다른 환경에서 실행되고 있습니다.대화형 쉘. 경로는 환경의 일부입니다. 이것이 문제의 원인일 수 있습니다. PATH가 gradle사용된 PATH에 없을 수 있습니다 cron. 이로 인해 cron모든 작업에 문제가 발생할 수 있습니다.

해결 방법: 이 문제는 일반적으로 모든 명령에 대해 전체 경로 지정을 사용하여 해결할 수 있습니다.
대신에:

0 2 * * * gradle 

이것을 사용하십시오 :

0 2 * * * /full/path/to/gradle

2. cron자원 가용성에 대한 이해 부족

cron작업을 실행하기 전에는 작업을 실행하는 데 필요한 리소스의 가용성이 확인되지 않습니다. 이는 일반적으로 cron시작 시 작업을 실행할 @reboot때(예: 도구 사용) 발생합니다 . 이에 대한 예로는 시작 시 실행되고 네트워크 리소스에 대한 액세스가 필요한 작업이 있습니다.

해결책: 이 문제는 일반적으로 sleep X작업 앞에 다음 명령을 추가하여 해결할 수 있습니다.

@reboot ( /bin/sleep 30; /home/myhome/myprog.sh )

3. cron작업의 런타임 오류는 보고되지 않습니다.

cron터미널에 접속할 수 없으므로 stderr으로 이동하세요 /dev/null. 오류를 확인하려면(항상 그렇습니다!) stderr파일로 리디렉션하면 됩니다. 한 가지 방법은 다음과 같습니다.

0 2 * * * /home/myhome/dosomething.sh > /home/myhome/cronjoblog 2>&1

이렇게 하면 stdout모든 (1)이 로 /home/myhome/cronjoblog, stderr(2)가 stdout(2>&1)로 리디렉션됩니다. 모든 출력은 파일에 저장됩니다 cronjoblog.

추가 읽기cron

관련 정보