问题解决之道:一个有关Scheduled Task的诡异问题

在生产环境下有一台服务器,OS为Windows Server 2012 R2。在上面配置了几个计划任务(Scheduled Task),这些任务会定时执行一段脚本(bat脚本),脚本将运行一些带参数的coreftp.exe命令,以实现文件通过FTP方式上传与下载。


服务器基本信息

这些计划任务一直都运行得很好,直到今天发生了错误,无法正常实现文件的上传与下载。任务的返回编码为0xC000005

错误编码

打开了Scheduled Task的History功能,尝试追踪具体的错误信息。结果得到的具体错误信息为:

History-1
History-2

History-3

从图History-3中,可以看出cmd.exe执行脚步时的返回码为3221225477。凭直觉,这个返回码肯定是不正常的,因为Windows系统的操作返回码一般用0x00代表命令执行成功。很好奇这个错误代码代表什么含义,是什么原因引起的。利用bing.com搜索了一下,找到了一份MS-DOS命令执行返回码的解释文档,如下图:

MS-DOS返回码解释

从该文档可以看出,原因可能是Access violation. Indicates that the executed program has terminated abnormally or crashed.,中文的解释为:“访问不合法。意味着可执行程序非正常终止或崩溃”。看完解释有点让人一头雾水,之前是一直正常的,访问非法怎么会发生呢?在迷惑不解了几分钟后,突然冒出一个猜测,是不是coreftp.exe进程未被正常关闭,仍然停留在内存中?自己立马利用资源管理器查看服务器的所有进程,看看是否存在coreftp.exe进程。果不其然,coreftp.exe仍然在内存运行着,这个进程估计是上次非正常退出造成。由于这个进程的存在,导致新的进程无法被启动,结果MS-DOS返回了那个错误码。强制杀死了这个进程,运行了几个Scheduled Task,发现一切恢复正常。

做个小结,技术的问题有时总让人摸不着头脑,甚至毫无头绪。这时需要冷静头脑,搜集尽可能多的错误与调试信息,不要放过与错过每个细节,对每个步骤与细节都要弄清楚搞明白,判断是否存在问题。一旦定位了问题所在之处,要充分利用网络寻求帮助,看看是否有人遇到类似的问题,是否有相应的解决方案。对于没有现成解决方案的问题,需要利用积累的技术知识与经验,充分发挥想象力去寻找问题的原因与解决办法,不断地反复去验证自己的猜测与想法。重复一遍,遇到技术问题,一定要保持清醒的头脑,切勿东拉西扯“乱打一气”。内心越着急,有时越无法解决问题。我想这些同样适用于其他任何非技术问题的解决之道。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,165评论 0 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,227评论 25 708
  • 花,有梦吗?是藏在昨夜的暗香里,还是浸在清晨的雨水里?是一阵风就能带走的影子,还是年年不悔的芬芳?是等待那蜂蝶...
    那些年聆听的阅读 155评论 0 0
  • 「」文/板砖 颠沛流离的抛物线 ...
    呼啸的板砖阅读 279评论 0 0