【问题标题】:How to generate an auto answer to a script running from cron如何为从 cron 运行的脚本生成自动应答
【发布时间】:2012-06-07 19:04:39
【问题描述】:

我想从 cron 运行一个 shell 脚本,并让它自动应答。我该怎么做?

我试图在 crontab 上放一个脚本。系统是Linux。 脚本的一个命令提示一个问题并且必须回答( Y/N ) 前任 : 当手动执行脚本时,脚本执行命令。 命令提示问题:你打算删除吗? [是/否] 系统等待响应。 我回答“Y”并按 ENTER,然后脚本执行删除。

我打算把这个脚本放在 crontab 上。 我希望命令会自动回答是的。 我该怎么做 crontab ? 非常感谢 /问候

【问题讨论】:

标签: shell response crontab


【解决方案1】:

你有两个选择:

  1. 该命令可能有一个不提示问题的开关。例如。 rm 具有开关 -f(强制),因此使用 rm -f $file 不会提示任何内容。如果可能的话,我更喜欢这个选项。

  2. 使用yes 命令,该命令正好适用于这种情况。例如,yes | rm foo 将自动回答y 的提示rm(如果有)。

【讨论】:

  • 是的,yes 为我工作。我曾经像这样安装pytorch yes | conda install pytorch torchvision -c pytorch.
【解决方案2】:

带有管道的通用 Cron

大多数 shell 都可以访问 yes 命令。您可以在 cron 作业中将其通过管道传输到您的脚本中。

* * * * * yes | myscript.sh

Vixie Cron 和标准输入

除了上述之外,如果您使用 vixie-cron,您还可以使用百分号将标准输入提供给您的命令。 crontab(5) 说:

命令中的百分号 (%), 除非用反斜杠 (\) 转义,否则将更改为换行符 字符,第一个 % 之后的所有数据都将发送到 命令作为标准输入。没有办法拆分 单个命令行到多行,例如 shell 的尾随 “\”。

使用 vixie-cron,以下示例会将标准输入上的字母“y”传递给您的脚本:

* * * * * myscript.sh % y

【讨论】:

    【解决方案3】:

    你可以添加

    --interactive=0

    在命令的末尾。对于任何询问是/否的 cron 命令,这将自动返回是。

    【讨论】:

      猜你喜欢
      • 2010-09-07
      • 2018-03-22
      • 2011-01-01
      • 1970-01-01
      • 2012-01-24
      • 2011-09-09
      • 2014-11-01
      • 1970-01-01
      • 2013-11-26
      相关资源
      最近更新 更多