我正在运行一个必须 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 的自动化和其他基于计划的方法,但无法使其正常工作。
如果你想使用Windows Server 2012的原生内容,看看Schtasks——这或多或少是Windows的cron。
我通过使用任务计划程序并查看以下文章找到了问题的答案: 使用 Windows 任务计划程序运行批处理文件
这里的一个重要注意事项是,要运行我的批处理文件,我必须创建一个启动CMD
的任务,并从那里运行批处理文件。要求任务计划程序直接运行批处理文件在 Windows Server 2012 上不起作用。我使用以下详细信息运行了任务:
- 管理员帐户
- "无论用户是否登录都运行">
- "以最高权限运行">
- "系统启动时启动">
- 操作:启动程序 ->
CMD
- 添加参数(可选(:
/c start "" "C:UsersAdministratorDesktopfile.bat"
有关如何执行此操作的更多信息,请参阅此答案:https://stackoverflow.com/a/27055435/7736676