需求:
我这边是使用python写的脚本,然后打算使用winserver2012服务器的任务计划程序实现个性化的备份策略;
问题:
直接使用任务计划程序调用python.exe文件来执行.py文件的脚本时,任务计划程序提示执行成功,但是在目标文件夹没有发现备份完成的备份文件。
问题排查:
1.排查程序问题——手动执行程序,发现备份功能完整实现。排除脚本代码错误
2.检查任务计划程序设置:
1)任务计划程序——操作——的【程序或脚本】:需要选到python安装目录下的python.exe的完整绝对路径。
2)任务计划程序——操作——的【添加参数】:需要设置为你所写的.py文件的完整绝对路径。
3)任务计划程序——操作——的【起始位置】:选填(填写:你需求的程序运行目录)
4)排查任务计划程序是否有权限,设置以管理员权限运行。
5)异地备份的话,检查目标服务器的目标路径的访问权限是否正常。
以上排查均无问题,且任务计划程序提示也是成功!但是没有执行任何脚本功能!
最后经过热心网友提醒,发现问题:
当服务器任务计划程序已经设置了多个任务计划程序的时候,需要留意各个任务计划程序之间的时间差;如果任务是 ‘瞬时任务’ 或 ‘短时任务’ 则任务执行的时间差基本上不会有问题;
但,一旦任务是长时间执行的任务就需要注意了,如果一个任务的执行时间到了,但上一个任务还没有执行完成;那么第一个任务的启动时间就被覆盖了。任务就会默认是完成的;所以就会导致,提示成功,但实际上没有实现功能;
解决方法:
按照任务执行时间的长短,重新设置任务执行启动的时间间隔即可,将任务启动时间间隔拉大,保证任务之间不存在覆盖的问题即可!
另:
为了排除python脚本环境问题,可以使用pyinstaller工具将.py文件封装成.exe文件之后再使用任务计划程序,会更加方便!
pyinstaller工具的安装:使用pip 直接安装 pyinstaller 即可!
注意:使用 pyinstaller -F -w xxx.py 可以加上-F 和-w参数
-F:创建单文件捆绑的可执行文件。
-w:不显示命令行黑框(注意:默认打包封装后的程序运行是有黑框弹出的,这里加上-w就不显示了,这里加-w参数,任务计划程序运行也会报错)
优点:任务计划程序设置简单,避免环境配置问题!
缺点:每次修改后都要重新封装