某项目场景,一台Windows服务器运行Python脚本从互联网采集数据,并将数据文件拷贝至内网的NFS。Python版本为2.7,Windows版本是2008 R2(6.1.7600.2.0.0.274.10)。Windows挂载远程NFS目录后(映射网络驱动器至本地Z盘),使用Windows资源管理器打开远程目录,拷贝文件等操作无问题。同时,单独在cmd下执行python xx_data_collect.py ,数据也能正常拷贝至远程目录。使用Windows计划任务5分钟一次调度xx_data_collect.py脚本,脚本已经调度,但数据无法拷贝,在执行os.path.exists(targetPath)的时候,抛出“Target file path: Z:\rfid\xx_data\目录不存在”的异常。此Windows运行5类数据采集脚本,脚本结构、功能一致,4类数据(频率5分钟)的计划任务调度无法识别NFS目录,1类数据(traffic,频率1月)的正常。
创新互联公司长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为永新企业提供专业的网站设计制作、成都做网站,永新网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。将计划任务调度方式换掉,编写一个bat脚本,放入开机自启动。说明:receive脚本负责从互联网获取数据,属于常驻内存,collect脚本负责将数据文件拷贝至NFS对应目录。内容如下:
@echo off
::检测时间间隔,单位:秒
set _interval=300
set _processName="xx_data_receive"
::需要守护的进程启动命令
set _processCmd=python E:\apps\xx_data_collect.py
::需要守护的进程预估启动完毕所需时间,单位:秒
set _processTimeout=10
:LOOP
echo "xx_data_receive program keeper is working!!!!!!!"
echo %_processCmd%
::需要守护的进程ID, xx_data_receive程序启动会写入pid到文件
set /p processID=<.\ImportantPID\xx_pid.txt
tasklist /FI "pid eq %processID%" | find /C "python.exe">.\ImportantPID\xx_tmp.txt
::xx_tmp.txt 状态文件, 上面的筛选返回0或1
set /p aliveFlag=<.\ImportantPID\xx_tmp.txt
echo %aliveFlag%
::del /F .\ImportantPID\xx_tmp.txt
if "%aliveFlag%" == "0" (
start %_processCmd% | echo 启动 %_processName% 于 %time%
choice /D y /t %_processTimeout% > nul
)
goto LOOP
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。