我写了一个bash脚本来从FTP服务器下载文件。
#!/bin/bash
screen /usr/local/bin/wget ftp://user:passwd@IP:/Folder/*
当我手动运行此脚本时,它可以工作,但是当我尝试将其设置为使用cron作业自动执行时,它无法正常工作。
的Cron:
00 17 * * * /Users/user/.Scripts/test.sh
知道为什么这不起作用吗?
我继续收到这封邮件
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=user>
X-Cron-Env: <USER=user>
X-Cron-Env: <HOME=/Users/user>
Date: Mon, 15 Feb 2016 19:12:00 -0600 (CST)
Must be connected to a terminal.
我只是试着用sh和那封邮件就是我得到的。
答案 0 :(得分:0)
将您的脚本更改为:
#!/bin/bash
SCREEN_OPTS=""
DOWNLOAD_DIR="."
if [[ ! -t 1 ]]; then
SCREEN_OPTS="-d -m"
DOWNLOAD_DIR="/path/to/save/files"
fi
screen $SCREEN_OPTS /usr/local/bin/wget --directory-prefix="$DOWNLOAD_DIR" ftp://user:passwd@IP:/Folder/*
这样,如果从cron
运行,screen
将以分离模式运行,而不需要终端。
如果脚本从终端运行,[[ -t 1 ]]
测试表达式将返回true(0
)。
您还需要为wget
指定一个输出目录,否则它只会保存到cron
的工作目录。