【问题标题】:Keeping a terminal window open after running script from crontab从 crontab 运行脚本后保持终端窗口打开
【发布时间】:2016-06-29 18:40:02
【问题描述】:

我有这个脚本

#!/bin/sh
curl -4 http://wttr.in/Colorado\ Springs

我想每天早上自动执行。我的 crontab 条目为

* 7 * * * (path to script)

但是要么脚本没有运行,要么它运行然后立即关闭 shell。我知道我的 cronjobs 正在运行,因为我有其他每小时运行一次的备份脚本,但无法弄清楚我在这里遗漏了哪些细节。我发现了一个在脚本中包含 $SHELL 的建议,但这没有任何区别。有什么建议吗?

【问题讨论】:

  • cron 作业在没有终端的情况下在后台运行,因此一开始就没有窗口可以保持打开状态。并且您无法使用 cron 作业提示进行输入(例如“按任意键继续...”),因为没有地方可以获取输入,更不用说显示提示了。
  • 那么就没有办法让窗口保持打开状态并在特定时间自动显示 curl -4 wttr.in/Colorado\ Springs 的响应吗?也许不是 cron 作业?
  • 没有。但 cron 通常会将作业的输出通过电子邮件发送到作业运行的帐户。
  • 好的。有道理。我在想脚本中可能有这样的东西,但这似乎也不起作用。 open -a 终端 --command=curl -4 wttr.in/Colorado\ Springs -H

标签: shell scripting terminal cron


【解决方案1】:

实际上,我不知道你想在你的 crontab 中使用这个调用来实现什么。您想在终端上查看天气预报吗?是否要将天气报告保存在文件中?在您的电子邮件中获取它?

如果您不进行重定向,您将在邮件中收到报告。

如果您想将其保存在文件中,只需执行以下操作:

curl wttr.in/Colorado+Springs > file

如果你想在你的终端上安装它

curl wttr.in/Colorado+Springs | wall

请注意,您不需要 -4,http://,您可以将 \space 替换为 +。

(免责声明:我是 wttr.in 的作者)

【讨论】:

  • 感谢您的回复。也许我做错了,但我只是想找到一种方法让它每天早上在终端中自动弹出,这样当我起床检查我的电脑时它就在那里。我很业余,但我知道 cron 是用来安排工作的,所以我认为这就是要走的路。也许还有其他更合适的?
  • @JakeStewart:Cron 没问题,唯一的问题,弹出窗口应该是什么样子?
【解决方案2】:

通常当我必须保持终端打开时,我会将exec bash 作为我的最后一个命令。当我编写会打开终端的安装程序脚本时,我会这样做;完成这项工作,然后迷路。但如果出现错误,我希望终端保持在那里以便我可以读取错误。

exec 用于用我们提供给 exec 的参数替换当前程序。

【讨论】:

    猜你喜欢
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2013-11-18
    • 2018-11-16
    • 1970-01-01
    相关资源
    最近更新 更多