0

我已经设置了一个 incrontab 规则来对添加到我的 ubuntu 盒子上特定目录的文件做出反应,并运行一个脚本。这很好用,但我的目标是将该脚本的输出打印到文件中。

我尝试了几种不同的方法来解决它,到目前为止,我能够让它工作的唯一方法是获取 incrontab 创建的生成命令,然后自己运行它。所以我的想法是它是可能的,我可能只是错过了一些对于经验丰富的 linux 用户来说显而易见的东西。

为了简洁起见,我缩短了一些命令。“watchdir” “scriptPath” 和 “arg1” 都是路径。我在脚本中引入了两个参数,arg1 和来自 cron 作业的文件名通配符。

我试过了:(这些运行脚本,但不输出到文件)

watchdir IN_CREATE scriptPath arg1 $# >> /home/ubuntu/logs/log-$# 2>&1

watchdir IN_CREATE scriptPath arg1 $# &>> /home/ubuntu/logs/log-$#

(这些什么都不做)

watchdir IN_CREATE /bin/bash scriptPath arg1 $# >> /home/ubuntu/log/log-$# 2>&1

watchdir IN_CREATE /bin/bash scriptPath arg1 $# &>> /home/ubuntu/log/log-$#

如果我运行 'tail /var/log/syslog' 并获取从下面的 incrontab 生成的命令并将其粘贴到 shell 中,它可以正常工作

watchdir IN_CREATE scriptPath arg1 $# &>> /home/ubuntu/logs/log-$#

这有效

scriptPath arg1 任务-LHPUQ7ezcF0s0UwVgUR.txt &>> /home/ubuntu/logs/log-mission-LHPUQ7ezcF0s0UwVgUR.txt

关于我可能会错过什么的任何见解?

4

2 回答 2

0

如果您监视目录,则$@保存目录路径和$#触发事件的文件。如果您查看文件,则$@保存文件的完整路径并且$#为空。参考

于 2020-04-09T15:22:32.687 回答
0

我有一个类似的问题并发现,它incron只是忽略了输出重定向并将它们作为参数交给脚本: https ://askubuntu.com/questions/1164166/incrond-does-not-execute-custom-script

因此,您的解决方案可能是首先调用一个包装脚本,将输出重定向到日志文件。

于 2019-08-08T17:57:18.407 回答