任务不由 crontab 运行

任务不由 crontab 运行

crontab奇怪的是,尽管脚本在 shell 终端上运行得很好,但它并没有执行我的脚本。我已经确保脚本之间用换行符分隔。但是,我对脚本的内容表示怀疑。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.这是一个shell 内置命令bash。因此它只能在bashshell 内或通过bashshell 执行。 crontab 只执行二进制文件,而不执行 shell 命令。因此,您必须调用二进制文件 ( /bin/bash),最好通过其绝对路径。

相关内容