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 并运行脚本文件