【发布时间】:2020-11-15 06:12:26
【问题描述】:
我为 Postgresql 设置的 cronjob 遇到了一些问题。它报告错误 psql: command not found。请参阅下面的错误日志输出。
仅供参考,当我通过将 /var/opt/tableau/tableau_server/TIL_scripts/FIREPROD-DWH_Daily_Extract.bash 粘贴到我的 CLI 中并按返回来手动运行 bash 脚本时,它会启动并成功完成作业在远程 RDS 数据库上,然后在日志中添加一条消息。
但是,同一脚本的 crontab 会启动,然后立即失败。我在这里错过了什么?
1) 错误日志如下
/var/opt/tableau/tableau_server/TIL_scripts/FIREPROD-DWH_Daily_Extract.bash: line 1: psql: command not found
/var/opt/tableau/tableau_server/TIL_scripts/FIREPROD-DWH_Daily_Extract.bash: line 2: psql: command not found
2) FIREPROD-DWH_Daily_Extract.bash 文件内容如下:
export PGPASSWORD=FIREPRODW@r3h0u11; psql -h 'fireprod-pgsql-rds.testdomain.net' -U 'fireproddbwhadmin' -d 'fireprod-datawarehouse' -c 'select schedules_ldn_daily()'
export PGPASSWORD=FIREPRODW@r3h0u11; psql -h 'fireprod-pgsql-rds.testdomain.net' -U 'fireproddbwhadmin' -d 'fireprod-datawarehouse' -c 'select schedules_tv_daily()'
3) 以下为 root 用户的 .bashrc 文件:
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/tableau/tableau_server/packages/customer-bin.20201.20.0614.2321:/home/ec2-user/.local/bin:/home/ec2-user/bin:/var/opt/tableau/tableau_server/data/tabsvc/services/pgsql_0.20201.20.0614.2321/pgsql/bin
4) echo $PATH 显示如下:
[root@FIREPROD-02 ec2-user]# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/opt/tableau/tableau_server/packages/customer-bin.20201.20.0614.2321:/var/opt/tableau/tableau_server/data/tabsvc/services/pgsql_0.20201.20.0614.2321/pgsql/bin
5) Crontab 配置如下:
00 2 * * * /var/opt/tableau/tableau_server/TIL_scripts/FIREPROD-DWH_Daily_Extract.bash >> /home/ec2-user/fireprod-dwh_daily_extract.log 2>&1
00 2 28-31 * * [ $(date -d tomorrow +\%d) -eq 1 ] && /var/opt/tableau/tableau_server/TIL_scripts/FIREPROD-DWH_Monthly_Extract.bash >> /home/ec2-user/fireprod-dwh_monthly_extract.log 2>&1
【问题讨论】:
标签: linux postgresql amazon-ec2 cron