Linux 使用cron调度程序调用shell脚本时,该脚本不起作用
我有这个sh脚本Linux 使用cron调度程序调用shell脚本时,该脚本不起作用,linux,bash,shell,ubuntu,Linux,Bash,Shell,Ubuntu,我有这个sh脚本 SPTH="/home/db_backup/log/log_"$(date +'%d-%m-%Y %H:%M')".txt" echo "===DUMP started at $(date +'%d-%m-%Y %H:%M:%S')===" >> "$SPTH"; DBNAME="test" PGPASSWORD=postgres psql -U postgres -d postgres -c "CREATE DATABASE $DBNAME"; PGPASSWO
SPTH="/home/db_backup/log/log_"$(date +'%d-%m-%Y %H:%M')".txt"
echo "===DUMP started at $(date +'%d-%m-%Y %H:%M:%S')===" >> "$SPTH";
DBNAME="test"
PGPASSWORD=postgres psql -U postgres -d postgres -c "CREATE DATABASE $DBNAME";
PGPASSWORD=postgres psql -U postgres -d $DBNAME -c "ALTER SCHEMA public RENAME TO public_old";
for entry in /home/SQL/*.*
do
echo "$entry"
SUBSTRING=$(echo $entry| cut -d'/' -f 4)
#echo $SUBSTRING
SCHEMA=$(echo $SUBSTRING| cut -d'.' -f 1)
echo $SCHEMA
echo "===================== CREATING public SCHEMA =====================" >> "$SPTH";
PGPASSWORD=postgres psql -U postgres -d $DBNAME -c "Create Schema public";
echo "===================== RESTORING DATA OF $SCHEMA =====================" >> "$SPTH";
PGPASSWORD=postgres psql -U postgres -d $DBNAME -f "$entry";
echo "===================== DELETING SCHEMA $SCHEMA=====================" >> "$SPTH";
PGPASSWORD=postgres psql -U postgres -d $DBNAME -c "DROP SCHEMA $SCHEMA CASCADE";
echo "===================== RENAMING SCHEMA PUBLIC TO $SCHEMA=====================" >> "$SPTH";
PGPASSWORD=postgres psql -U postgres -d $DBNAME -c "ALTER SCHEMA public RENAME TO $SCHEMA";
echo "===================== RENAMING SQL FILE =====================" >> "$SPTH";
mv /home/SQL/{$SUBSTRING,DONE--$SUBSTRING};
echo "===================== DONE =====================" >> "$SPTH";
done
PGPASSWORD=postgres psql -U postgres -d $DBNAME -c "ALTER SCHEMA public_old RENAME TO public";
echo "===DUMP finished at $(date +'%d-%m-%Y %H:%M:%S')===" >> "$SPTH";
当我使用命令运行此命令时
sh script.sh
它工作正常,按照我的预期工作,并且运行每一个命令。但是当我使用cron调度程序运行这个脚本时,与POSTGRES相关的命令并没有执行。我还需要这个shell脚本中的每个命令的日志
我想使用cron调度程序运行此脚本
我错在哪里?cron的环境与shell中的用户不同。我想这是你的问题哦!谢谢你能建议一些更好的方法来实现我想要的吗?基于@Jens写的原因,请尝试在脚本中设置postgres命令的绝对路径,或者在脚本中设置path环境变量。cron的环境与shell中的用户不同。我想这是你的问题哦!谢谢你能建议一些更好的方法来实现我想要的吗?基于@Jens写的原因,请尝试在脚本中设置postgres命令的绝对路径,或者在其中设置path环境变量。