crontab:macos中的“找不到ftp命令”错误[重复]

Posted

技术标签:

【中文标题】crontab:macos中的“找不到ftp命令”错误[重复]【英文标题】:crontab: "ftp command not found" error in macos [duplicate] 【发布时间】:2021-05-20 07:34:23 【问题描述】:

这里是新手。我一直在寻找解决方案,但似乎找不到。

来自我的 crontab 的错误日志:

/Users/harrold/bin/ftp_automate.sh: line 14: ftp: command not found

我制作了一个名为ftp_automate.sh 的脚本,将文件从我的本地文件夹发送到我的ftp 服务器。 脚本在终端(zsh) 中使用% sh ftp_automate.sh。这是脚本:

#!/bin/bash
# FTP server details here
SERVER="ftp.DUMMYSITE.com"
USERNAME="DUMMYUSER"
PASSWORD="DUMMYPASS"

# local directory containing source backup file
SOURCEFILES="/Users/harrold/Desktop/FOLDER/ftp-test"

# remote server directory path in which backup needs to be put in
BACKUPDIRCTORY="/folder/subfolder"

# login to remote server
ftp -n -i $SERVER <<EOF
user $USERNAME $PASSWORD
cd $BACKUPDIRCTORY
bin
lcd $SOURCEFILES
mput *
quit
EOF

但是,我希望它使用 crontab 来工作,所以它每分钟都能完成这项工作。这就是我使用% crontab -e 的方式:

* * * * * /Users/harrold/bin/ftp_automate.sh >> /Users/harrold/bin/logs/ftp.log 2>&1

知道为什么我收到 ftp command not found 错误吗?

顺便说一下,我的脚本放在/Users/harrold/bin里面。

【问题讨论】:

ftp 在你的$PATH 中吗? @HKT : 当它是一个 bash 脚本时,为什么要标记为 zsh? @Mureinik 我在执行的任何步骤中都没有使用 $PATH 变量。我应该把它放在某个地方吗?抱歉还是新手。 另外,请注意 cron-overrun。 (每分钟一次非常频繁) 非常感谢@MartinPrikryl,您是救生员!终于了解如何处理 $PATH 并且该链接提供了我在脚本中需要的一些其他详细信息。 Cron 作业现在可以工作了! 【参考方案1】:

我现在明白了!

我只需要在我的脚本上添加 ftp 的完整路径,如下所示:

/usr/local/bin/ftp -n -i $SERVER <<EOF

此外,我必须在我的 bash 配置文件中添加 ftp $PATH vi .bash_profile 在我的主目录(例如 /Users/harrold)

export PATH="/usr/local/bin/ftp:$PATH"

为了使更改生效,我必须使用source ~/.bash_profile重新加载我的个人资料

【讨论】:

/usr/local/bin/ftp 添加到您的PATH 绝对是一个错误;您添加的条目应该是目录,而不是单个文件。

以上是关于crontab:macos中的“找不到ftp命令”错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

装入crontab的命令在macOS中不起作用

在 mac OS 上从 crontab 运行 git pull 命令问题

crontab 没有运行 local/bin/ 脚本。大苏尔卡塔利娜

4-13 Linux中的计划作业 --- crontab(一、crontab 命令操作)

linux中的计划任务Crontab

Linux中的crontab命令用法