我写了一个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,而那封邮件正是我得到的。
将脚本更改为此:
#!/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
的工作目录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句