gpt4 book ai didi

Linux bash shell 脚本输出不同于 cronjob vs 手动运行脚本

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:41 26 4
gpt4 key购买 nike

我写了一个 linux bash shell 脚本,它工作正常,除了我手动运行它时的输出与我从 cronjob 运行它时的输出不同。

特定命令是lftp:

lftp -e "lcd $outgoingpathlocal;mput -O $incomingpathremote *.CSV;exit" -u $FTPUSERNAME,$FTPPASSWORD $FTPSERVER >> ${SCRIPTLOGFILE} 2>&1

当我手动运行脚本时,${SCRIPTLOGFILE} 包含很多信息,例如传输了多少文件/字节/等。但是当我从 cronjob 运行相同的脚本时,除非出现错误(例如无法连接),否则没有输出。我已经尝试了各种终端输出配置,但都不适用于此 lftp 命令。有什么建议吗?

最佳答案

值得一读:

crontab PATH and USER

特别是,cron 不会设置与交互式 shell 相同的环境变量。

您可能希望将整个 cron 作业包装在一个脚本中,然后您可以,例如,临时添加一些代码,如 export >> scriptenvironment.txt 并查看两者之间的区别cron 调用的脚本和交互式调用的脚本。

尝试 man 5 crontab 获取详细信息。

一旦您知道运行脚本所需的环境变量,您可以根据需要在 crontab 中设置它们,或者在您自己的脚本开始时获取源代码。

 EXAMPLE CRON FILE
# use /bin/sh to run commands, overriding the default set by cron
SHELL=/bin/sh
# mail any output to `paul', no matter whose crontab this is
MAILTO=paul
#
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 2:15pm on the first of every month -- output mailed to paul
15 14 1 * * $HOME/bin/monthly
# run at 10 pm on weekdays, annoy Joe
0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
5 4 * * sun echo "run at 5 after 4 every sunday"

关于Linux bash shell 脚本输出不同于 cronjob vs 手动运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28864842/

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