EC2 重启后自动运行 .bat 文件,无需远程连接

Posted

技术标签:

【中文标题】EC2 重启后自动运行 .bat 文件,无需远程连接【英文标题】:Automatically run .bat file after EC2 reboot without having to remote connect 【发布时间】:2018-07-12 23:55:48 【问题描述】:

我正在运行一个必须 24/7 运行的 AWS Windows 2012 EC2 实例。在这个实例上,我运行了一个 Python 3.6 爬虫脚本,为了避免我必须定期检查服务器上的文件是否正在运行,我在实例的 shell:startup 文件夹中有一个 .bat 文件,它会自动重新启动它以日常为基础。 .bat 文件可以运行,因为它将运行 Python 脚本并设置一个计时器以在 (t=86400) 之后重新启动/重启实例。 .bat 文件在 EC2 实例本身上运行。

但是,文件不做的事情是在重新启动后自动运行。我现在首先必须远程连接到服务器,然后.bat 文件才能运行。我想要它做的是运行而无需我首先远程连接到服务器。我怎样才能做到这一点?

我在.bat 文件中使用以下代码。位于我的 EC2 实例上。

@ECHO OFF
START CMD /K (
        CD C:/Users/Administrator/Documents/
        python scraper.py
)
START CMD /K SHUTDOWN -t 86400 -r -f

我曾尝试研究使用 AWS 的自动化和其他基于计划的方法,但无法使其发挥作用。

【问题讨论】:

我不确定我是否理解您的问题,批处理文件是否不包含首先连接到服务器的命令?还是它有命令,但未能成功执行?也许用批处理文件的内容编辑您的问题可能会有所帮助! 谢谢,已更改。批处理文件位于服务器上,重新启动后根本不会自动运行。我希望脚本重启 EC2 实例,然后在重启后自动运行批处理文件。现在它只会重新启动,但重新启动后文件不会自动运行。它只会在我再次远程连接到 EC2 实例时运行。 您是否尝试过每 24 小时设置一次 CloudWatch 事件(我认为?)来重置您的服务器?这样您就可以向 EC2 实例发送“重启”命令,而无需该脚本。 好主意,但关键是我需要 .bat 文件来运行 Python 脚本并在重启后设置计时器 【参考方案1】:

如果您想使用 Windows Server 2012 的原生功能,请查看 Schtasks——这或多或少相当于 Windows 的 cron。

【讨论】:

【参考方案2】:

我通过使用任务计划程序并查看以下文章找到了我的问题的答案:Run a batch file with Windows task scheduler

这里需要注意的是,要运行我的批处理文件,我必须创建一个启动 CMD 的任务并从那里运行批处理文件。要求任务计划程序直接运行批处理文件在 Windows Server 2012 上不起作用。我使用以下详细信息运行任务:

管理员帐户 “无论用户是否登录都运行” “以最高权限运行” “在系统启动时启动” 操作:启动程序 -> CMD 添加参数(可选):/c start "" "C:\Users\Administrator\Desktop\file.bat"

有关如何执行此操作的更多信息可以在此答案中找到:https://***.com/a/27055435/7736676

【讨论】:

以上是关于EC2 重启后自动运行 .bat 文件,无需远程连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 Windows bat 文件打开 Cygwin 并运行脚本文件

Windows 哪些临时文件夹重启就能消失的?

ue4运行后F8退出

亚马逊EC2服务器重启后,IP地址发送了变化,如何恢复之前的IP地址?是需要联系客服还是在哪里可以配置?

无法连接到在 EC2 上运行的 Mongodb

如何让windows开机自动运行一个bat文件,并且当用户登录后还能看到这个bat文件的控制台窗口?