【问题标题】:Incrontab output to file not workingIncrontab 输出到文件不起作用
【发布时间】:2018-07-16 02:12:25
【问题描述】:

我已经设置了一个 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

关于我可能遗漏什么的任何见解?

【问题讨论】:

  • $# 是参数计数,我怀疑它在 cron 作业中总是为零。你为什么要通过那个?此外,默认情况下 incrontab 是否运行 shbash&>>bashism
  • 对于 incrontab,$# 是添加的文件的文件名。在我的最后一个示例(生成的那个)中,您可以看到它更改为“mission-xxxx.txt”

标签: linux bash incron


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 2021-10-24
      • 2018-09-29
      • 2021-06-06
      相关资源
      最近更新 更多