不确定是否有人遇到过这种情况,但我将为故障排除和/或其他方法提供建议。
我有一个Windows 2008服务器,在它上我正在运行几个预定的任务。其中一个任务是python脚本,它使用pscp登录到linux框中,检查新文件,如果有任何新文件,则将它们复制到C:驱动器上的本地目录。我也在关键点上对脚本进行了一些登录,并使用了logging.basicConfig(level=DEBUG)
。
我使用变量command = 'pscp -pw xxxx name@ip:/ c:\local_dir'
构建了命令,然后使用subprocess.call(command)
执行该命令。
奇怪的是。如果我从命令行手动运行脚本,它可以正常工作。下载并处理新文件。但是,如果任务计划程序运行脚本,则不会下载新文件。脚本在同一个用户下运行,但产生的结果不同。
根据脚本创建的日志文件,在linux下,脚本成功地登录到linux下。但是,即使有新文件,也不会下载任何文件。同样,当我通过命令行运行它时,文件会被下载。
有什么想法吗?建议,替代方法?
谢谢。
在Linux虚拟机上打开MS-Access数据库时,我遇到了同样的问题。在Windows7命令提示符下运行脚本是可行的,但在任务调度程序中运行却不行。使用任务调度程序,它会找到数据库并验证它是否存在,但不会返回其中的表。
解决方案是让Task Scheduler以带有参数的程序/脚本的形式运行(在Add arguments(可选)下)。
我不能告诉你为什么这样做,但它解决了我的问题。
我也有类似的问题。在测试中,我发现在任务调度器中运行时,使用子进程的任何类型的调用都会停止python脚本,但在命令行上运行时运行良好。
在命令行上运行时,输出:
从任务计划程序运行时,输出为:
为了从任务调度器获得输出,我从批处理文件运行python脚本,如下所示:
我在命令行和任务调度程序中通过批处理文件运行脚本。
您可以使用windows任务计划程序,但请确保填写了“可选”字段“开始时间”。
在任务调度器应用程序中,添加一个操作,指定要运行“doSomeWork”的python文件,并用包含该文件的目录填写Start-In(可选)输入。。例如,如果您有一个python文件在:
您可以输入:
相关问题 更多 >
编程相关推荐