【问题标题】:Command run by cron is not writing to terminalcron 运行的命令未写入终端
【发布时间】:2014-11-08 13:09:37
【问题描述】:

在我的 cron 标签文件中,我有

* * * * * /Users/ajgauravdeep/test.sh

看起来像

  1 #!/bin/sh
  2 
  3 /bin/echo "Downloading builds"
  4 #~luna/bin/mountebuild
  5 
  6 #sleep 10
  7 
  8 ##############---------Variables---------##############
  9 
 10 fileWithBuildPath="/tmp/process.tmp.file.txt"
 11 skihillDir="xyz"
 12 lastBuild=`/bin/cat $fileWithBuildPath`
 13 curBuild=`/usr/bin/readlink -n $skihillDir/x`
 14 
 15 ##############---------Variables---------##############
 16 
 17 /bin/echo lastbuild is $lastBuild
 18 
 19 if [ "$curBuild" != "$lastBuild" ]; then
 20         lastBuild=$curBuild
 21         /bin/echo We have a new build :$curBuild
 22         /bin/rm $fileWithBuildPath
 23         /bin/echo "$lastBuild" > $fileWithBuildPath
 24 fi

我没有看到屏幕上每分钟都有任何输出,但是当我有时

* * * * * /Users/ajgauravdeep/test.sh > <some file>

我看到该文件已填充。有人可以帮忙吗?

【问题讨论】:

  • 如果你在stackoverflow上搜索这个,你可能会发现很多相关的问题。当cron 作业运行时,它的shell PATH 设置与您的登录shell 不同。您需要确保(例如,例如,通过在crontab 中明确设置路径)cron 作业可以访问所有所需的命令。
  • 感谢您的回复。我也这样做了。 /bin/echo, /bin/cat 但同样的问题,对于我在这个脚本中的所有命令
  • CommandResultsMake.py 来自哪里?您的 test.sh 脚本不会调用任何其他外部脚本。您如何使用test.sh 脚本制作cron 工作?
  • 请再次阅读问题。已修改
  • 如果您想在终端上查看输出,为什么将其设置为cron 作业? cron 作业的目的是在您不在时让它定期运行。一种替代方法是将其输出到某处的文件,然后在终端中执行tail -f output_file

标签: bash unix cron crontab


【解决方案1】:

cron 运行的作业未连接到任何终端,更不用说您当前的终端了。你不能指望cron 的工作写到终端。

【讨论】:

  • 哦,难怪...有什么办法可以将输出输出到当前终端?
  • 你如何确定你当前的终端?在窗口系统上,您可能打开了多个终端(伪终端)。理论上,系统上可能还有其他用户;你不想写他们的终端。也许您可以安排查找您拥有的终端:find /dev -user you -name 'tty*' 或类似的名称以容纳系统上的终端名称,然后安排通过 tee 将命令的输出发送到所有这些终端。
猜你喜欢
  • 2019-12-22
  • 2019-03-28
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多