crontab
이상한 점은 쉘 터미널에서는 잘 실행되지만 스크립트가 실행되지 않는다는 것입니다. 스크립트가 줄 바꿈으로 구분되어 있는지 확인했습니다. 하지만 대본의 내용에 대해서는 의문이 듭니다. 나중에 실행할 작업을 crontab
실행합니다 .run.sh
main.sh
이것은 /etc/crontab
:
* * */3 * * root source /opt/db_maintain/run.sh
run.sh
내부에서 호출되는 내용은 다음과 같습니다 .main.sh
#!/usr/bin/env bash
#********* Saman *********
TM=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
TIMESTAMP=$(echo ${TM} | tr --delete ': -')
export TIMESTAMP
source $TARGET "$TM"
이것은 다음의 시작입니다 main.sh
.
#!/bin/bash
##!/usr/bin/env bash
#
# main program entry point
#
source /opt/db_maintain/functions.sh
source /opt/db_maintain/constants.sh
source /opt/db_maintain/settings.sh
source /root/PASSWD_PGRS.sh
#read -s -t 0 -n 9999
#read -s -p "Enter password for ${USERNAME}: " PASSWORD
답변1
cronjob에서 다음 구문을 사용하십시오.
* * */3 * * root /bin/bash /opt/db_maintain/run.sh
당신은 그것을 사용했습니다 source
.쉘 내장 명령에서 bash
. 따라서 이는 bash
쉘 내에서 또는 쉘을 통해서만 실행될 수 있습니다 bash
. crontab은 쉘 명령이 아닌 바이너리 파일만 실행합니다. 따라서 가급적이면 절대 경로를 사용하여 바이너리( /bin/bash
)를 호출해야 합니다.