对不起,我不能非常具体,我真的不知道什么是问题,只是从bash开始,所以我的调试技巧仅限于回显。unrar命令只有在手动执行时才有效
我有下面的代码:
#! /bin/bash
# post_torrent.sh
{
# Log file, file where we tell what events have been processed.
LOG_FILE=/Users/Server/Documents/sickbeard/logs/post_torrent.log
# Username for transmission remote.
TR_USERNAME="admin"
# Password for transmission remote.
TR_PASSWORD="1234"
# Get current time.
NOW=$(date +%Y-%m-%d\ %H:%M:%S)
# Source directory, should not be changed.
SRC_DIR="${TR_TORRENT_DIR}/${TR_TORRENT_NAME}/"
# Directory to store the un-compressed files in..
DEST_DIR="${TR_TORRENT_DIR}/${TR_TORRENT_NAME}/"
cd $SRC_DIR
echo $NOW "SRC_DIR $SRC_DIR" >> $LOG_FILE
RAR=$(find . -iname "*.rar")
echo $NOW "RAR $RAR" >> $LOG_FILE
unrar x -inul "$RAR"
exit 0
} &
日志文件显示正在使用正确的文件。当我在终端(我正在一个mac osx服务器上工作)中逐一执行脚本中的语句时,一切正常并且文件被解压缩。然而,当这个脚本在下载洪流后执行时,它不会。
我一直在试图找出为什么这是大约三个小时,仍然没有发现任何线索。我认为这些权限是可以的,因为我为此进行了测试。然而,我是bash的新手,不太熟悉mac osx命令行。
在此先感谢。编辑: 一些额外的信息。 日志看起来是这样的: 2013年2月27日0点14分42秒SRC_DIR /卷/多媒体/ aa_bb /下载/ some_serie/ 2013年2月27日0点14分42秒RAR ./some_serie.rar
当文件完成下载时,程序通过传输作为程序集执行。
必须提取的文件位于共享的外部硬盘驱动器上。
希望这会有所帮助。
你不需要按顺序unrar他们,以串行方式 - 意味着1,然后2,然后3等等。?如果是这样的话,问题在于你试图以并行方式解压它们......可能是蠕虫。简单的解决方案是避免RAR归档种子。我多年来一直在对他们进行讨伐:-) – prodigitalson 2013-02-26 22:03:55
制作新脚本并逐行添加内容,并将其输出到终端进行测试。也许你的特定文件存在一些问题(在设置等...)。所以用你需要使用的函数创建新的脚本并执行尝试执行它。 – Stepo 2013-02-26 22:04:01
RAR包含多个文件名似乎很有可能,但是当你将它传递给unrar时,像这样:'unrar x -inul“$ RAR”',unrar将把它们全部看作一个参数。您可以尝试从变量周围删除引号。 (如果文件名可能包含空格,会变得更复杂。) – William 2013-02-26 22:05:00