从cron或at运行时Shell脚本被截断

多米尼克·P

我在基于Linux的NAS(DNS-323)上看到一些非常奇怪的行为。我正在使用一个简单的Shell脚本将NAS上的文件备份到另一个盒子。在添加了一些最新内容之后,该脚本从cron运行时开始失败at当我直接运行脚本时,没有问题。

经过大量的调试,我终于意识到,在某个特定点之后的任何事情都根本没有被执行。就像脚本被截断了一样。我可以通过缩短脚本(主​​要是通过删除注释)来解决此问题,现在它似乎可以正常工作了。虽然,我仍然好奇为什么会这样。

其他人看到过这样的东西吗?这可能是什么原因?

卡梅伦·克尔(Cameron Kerr)

这里最大的区别是,我们似乎正在开发各种嵌入式系统。

如果我正确地阅读了此内容,那么脚本似乎会被截断,而不是输出(然后可以将其邮寄)。我会照顾每个人。

如果实际上是脚本,但是直接运行时可以运行,那么我建议以下几点:

  1. 脚本特别大吗?
  2. 该脚本是否具有任何特定于Bash的功能(“ bashisms”)...请注意,/ bin / sh可以并且通常是不同的。您可能希望在crontab中设置SHELL = / bin / bash(如果可用)
  3. 您是要在crontab中编写脚本还是要调出脚本文件。
  4. 如果将stdout和stderr重定向到具有足够可用空间的文件系统上的文件,行为是否会改变
  5. 在这种情况下,我发现创建一个临时crontab条目很有用,该条目调出“ env”命令,并将其输出重定向到文件或电子邮件。有时这可能会显示环境中的意外差异(例如语言环境设置,通常会有所不同)。
  6. 您可以在脚本文件中放入“ set -x”。这将导致它在脚本进行时输出调试信息。您可以使用“ set + x”将其关闭。这对于确定脚本将在何处结束执行很有用。
  7. 此处使用的是哪种软件:
    • SMTP:“ sendmail --version”或“ sendmail -v”的输出是什么

如果实际上是输出,那么我应该说其行为在很大程度上取决于所使用的MTA。在嵌入式环境中,它可能会超过某个缓冲区大小(也许这将由文件系统上的可用空间来驱动)。

另外,您是否检查了更新的固件:http : //support.dlink.com/ProductInfo.aspx ?m=DNS-323最新的似乎是2012年5月的1.10版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在运行时编辑shell脚本

在运行时替换Shell脚本

在cron的shell脚本中运行时,为什么curl不产生输出?

在运行时编辑shell脚本和python脚本

从 cron 运行时 Perl 不执行 shell 命令

从crontab运行时Shell脚本无法正常运行

由cron运行时,top的输出被截断为80列

Linux Shell脚本中的运行时代码生成

在运行时确定脚本中的shell

从cron运行时,期望脚本会失败,但在手动运行时,它会起作用

为什么从cron运行时此脚本失败,而在手动运行时却起作用?

Python 脚本在由 Cron 定期调用的 Bash 脚本运行时不执行

安排cron条目仅在尚未运行时才运行脚本

当脚本由 cron 运行时 subprocess.call 总是返回错误

从cron运行时,Perl脚本不会将STDOUT输出到文件

从cron运行时,为什么此脚本没有输出到文本文件?

MMV不会在bash脚本中执行(仅在由CRON运行时)

每当cron作业无法运行时

通过cygwin从Shell脚本运行时,如何将参数传递给Powershell脚本?

从浏览器运行时,php脚本require()语句获取文件,但从Plesk CRON作业运行时,则不获取文件

Jenkins中的远程shell似乎在运行时会更改我的脚本

通过Java程序运行时如何在shell脚本中提供输入选择?

在运行时如何在Expect Shell脚本中传递参数

当 ansible 通过 shell 脚本运行时,我们如何打印 ansible 任务的彩色输出?

如何在脚本仍在运行时使shell输出重定向(>)写入?

如何编写运行时会更新数字+1的Shell脚本?

有没有办法让Ant创建Shell或批处理运行时脚本?

Shell脚本仅在从node.js运行时应读取输入时挂起

在Shell脚本中的远程服务器上运行时间查询