【问题标题】:GCE Windows startup Script is not runningGCE Windows 启动脚本未运行
【发布时间】:2018-01-15 10:49:33
【问题描述】:

我有一个简单的 Django 代码,我想在特定的 GCE 实例上继续运行。有时,由于某些原因,实例会重新启动,这不在我的控制范围内。我创建了一个批处理脚本,我试图将它放在用户和公共文件夹中的启动文件夹中。它没有用。我尝试使用sysprep-specialize-script-url(使用云存储)、sysprep-specialize-script-cmdsysprep-specialize-script-bat 将脚本放入。它没有用。这是批处理脚本的内容 -

cd C:\Users\kartik_domadiya\Desktop\happierMiscGoogleCloud

manage.py runserver 0.0.0.0:80

pause

我尝试手动运行C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd,它可以正常工作(使用任何元数据密钥)。所以我可以看到脚本本身没有问题。

我什至尝试将批处理脚本放在任务调度程序中,但也没有用。

那么有什么方法可以调试问题并找出为什么批处理脚本不起作用?我正在使用 Windows 2012 R2,如果这很重要的话。

PS:我知道这是一个开发服务器,不应该在生产中使用。

【问题讨论】:

  • 您没有使用完整路径。您受制于系统配置。
  • @ACatInLove 我正在更改批处理脚本中的目录,如果这就是完整路径的意思。你是这个意思吗?
  • 不,我的意思是所有文件都是 FQFN(完全限定的文件名)。有很多失败点(我在前两行的脚本中看到了 4 个)。所有这些都取决于配置,一种可能是拒绝访问,两种没有使用完整路径来指定您想要的内容,第四种依赖于文件关联配置。在交互式命令提示符中键入您正在使用有用的功能来帮助用户,但这在编程时并不可靠。我会做"c:\folder\py.exe" "C:\someotherfolder\manage.py" runserver 0.0.0.0:80
  • 如果您不是运行它的用户,请将其从您的个人资料中删除。此外,通常会阻止程序在没有用户 Ok(安全)的情况下从 Web 运行。
  • 如果 Windows 认为您可以看到它,您的第三行 only 也有效。在任务计划程序中启动(不选择仅在用户登录时运行)和pause 将被忽略。

标签: windows batch-file google-cloud-platform google-compute-engine


【解决方案1】:

我将代码移到C:/code(基本上从任何特定用户的文件夹中),然后为所有用户提供访问权限(Right Click > Properties > Security),更新了批处理文件并将其放入启动文件夹(Run > shell:startup)。 之后它开始工作。我想问题是由于访问权限。

【讨论】: