incrond 没有执行自定义脚本

incrond 没有执行自定义脚本

我尝试设置从相机导入的照片和视频的自动处理。

自定义脚本

me@mymachine ~ $ ll /home/me/scripts/autorename-avmedia-exif.sh 
-rwxr-xr-x 1 me me 603 Aug  7 22:50 /home/me/scripts/autorename-avmedia-exif.sh*

内容:

#!/bin/bash

# Argument
if [ $# -eq 1 ] ; then
    # Only one argument
    file=$1

else
    # No argument
    echo "Usage: $0 target-file"
    exit 1
fi

/bin/echo "$0 started" > /home/me/tmp/autorename.log

exiftool -overwrite_original_in_place -P '-filename<CreateDate' -d "%Y-%m-%d %H-%M-%S%%-c.%%le" "$file"

echo "exiftool returned: $?" >> /home/me/tmp/autorename.log

Incron 权限:

me@mymachine ~ $ sudo cat /etc/incron.allow
me
root

Incron观察:

me@mymachine ~ $ incrontab -l
/home/me/Bilder/Import IN_CLOSE_WRITE /bin/bash /home/me/scripts/autorename-avmedia-exif.sh "$@/$#" > /home/me/tmp/autorename-avmedia-exif.log

系统日志:

Aug  7 22:36:26 mymachine incrond[1391]: (me) CMD (/bin/bash /home/me/scripts/autorename-avmedia-exif.sh "/home/me/Bilder/Import/DSC01037.JPG" > /home/me/tmp/autorename-avmedia-exif.log)

问题: 什么都没发生。脚本未执行。

当将该行从 syslog 复制到终端时,脚本可以正常运行。

用 works 替换脚本调用touch /home/me/tmp/test.incron并创建测试文件。

所以这肯定是环境问题,但我已经在脚本调用前加上了前缀/bin/bash并添加了完整路径。还缺少什么?

答案1

感谢 waltinator 的帮助,这使我走上了正确的方向。

我不知道之前的问题是什么,但是当我添加输出重定向时> /home/me/tmp/autorename-avmedia-exif.log,它就无法工作了,因为 incron 似乎不知道它,并将这部分作为参数交给脚本。我的脚本失败了,因为它只需要一个参数,并且没有记录 else 情况。

需要明确的是:脚本已成功调用,但由于参数数量错误,它在顶部退出。

touch /home/me/incron#.test我在脚本中各处添加行时发现了这一点,而 while#是一个递增的数字。

相关内容