gpt4 book ai didi

Mysql cli 不在 crontab 运行的 bash 脚本中返回数据

转载 作者:行者123 更新时间:2023-11-30 21:26:22 25 4
gpt4 key购买 nike

我有一个通过 cron 作业执行的 bash 脚本

#!/bin/bash

# abort on errors
set -e

ABS_DIR=/path/

# extract the creds for the mysql db
DB_USER="USERNAME"
DB_PASS="PASSWORD"

function extract_data() {
file=$2
sql_query=`cat $ABS_DIR/$1`
data=`mysql -u $DB_USER --password="$DB_PASS" -D "database" -e "$sql_query" | tail -n +2`

echo -e "Data:"
echo -e "$data"
}

extract_data "sql_query.sql" "log.csv"

当使用 bash extract.sh 手动运行时,mysql cmd 正确获取数据,我看到了 echo -e "$data" 在控制台上。

当通过 cron 作业运行脚本时

* 12 * * * /.../extract.sh > /.../cron_log.txt

然后我将一个空行保存到 cron_log.txt 文件中!?

最佳答案

这是一个常见问题;从用户 shell 运行和从 crontab 运行时,脚本的行为不同。原因通常是由于用户 shell 和 crontab shell 中的环境变量不同;默认情况下,它们不相同。

要开始调试这个问题,您可以从 crontab 中直接调用 stderr 和 stdout,希望能捕获错误消息:

extract.sh &> /.../cron_log.txt

(注意 &)

此外:您有三个点 (/.../) - 这可能是错字,也可能是原因。

关于Mysql cli 不在 crontab 运行的 bash 脚本中返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58810396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com