Windows – 任务计划程序仅杀死cmd.exe但不杀死其子进程
我们的客户有一些
Windows 2003服务器运行由任务计划程序激活的批处理作业.执行工作的实际程序是自定义.exe进程,它们聚合到.cmd脚本中,以便在计划的时间间隔到期时由任务计划程序一起启动. cmd脚本中的行可能会也可能不会使用“调用”命令来启动单独的.exe程序.
在此设置中,任务计划程序有效地监视cmd.exe,并且在使用Process Explorer时,可以观察到子.exe进程停放在cmd.exe进程树下.但是,当任务计划程序由于超出允许的时间限制而导致cmd.exe死亡时,子.exe进程可能不会与其父进程一起被杀死并成为孤立的.这些进程无限期地停滞不前.由于Process Explorer中显示的进程线程状态,我怀疑这些进程最终出错,并弹出一个.NET调试器对话框(这些是.NET应用程序),由于批处理作业用户是一个单独的用户,因此无法看到帐户. 最初,当我在我的Windows XP工作站上调查此行为时,我发现从我的测试.cmd脚本启动的子.exe进程在任务计划程序决定时间到期时会与cmd.exe一起被杀死.我无法孤立子进程. 基于预感,我最终转移到Windows 2003机器上进行测试.同样,子进程像我工作站中那样终止.我的第二步是使用另一个用户帐户来运行计划任务.这一次,cmd.exe在超过时间限制后被杀死,但子进程仍然存在,就像我的客户在其生产服务器中观察到的那样. 如果我抢先登录该批处理用户帐户(恰好是另一个管理员帐户)来声明桌面会话,我的测试.exe程序中的任何错误或信息弹出窗口都将被路由并呈现在该桌面上,这样我就可以看到实际的用户输出.如果我只在调用计划任务后登录,桌面会话将不会“回收”现有进程的窗口;他们永远隐藏起来. 我的问题是,我在这里丢失了什么条件可能导致任务计划程序不能清除cmd.exe下的子进程?使用另一个会导致此行为的帐户有什么特别之处,但在使用我当前的管理员帐户运行计划任务时却没有?
尝试在命令行上使用“Taskkill / T”. (/ T =“…终止指定的进程以及由它启动的所有子进程……”)
如果您正在运行多个进程(我们经常运行5个或更多“powershell.exe”),请将“命令行”列添加到任务管理器中的“详细信息”选项卡.这应该清楚说明哪个进程ID是您要杀死的进程ID (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 版本控制 – IBM的RTC和Microsoft的TFS 2010
- NT安全设置
- windows10专业版创建不了家庭组网络如何解决
- 在Windows Azure网站上运行哪个版本的node.js?
- windows-8 – 如何在Windows 8中将sqlite表和列映射到c#类
- 可以使用Windows中的快捷方式为应用程序设置环境变量吗?
- windows – 是否可以在防火墙后面安装一台机器并拥有公共IP
- .net – 意外的Windows Phone应用程序退出,没有任何异常
- 备份 – 如果Windows Home Server系统驱动器出现故障会怎样
- .net – 缺少WebClient标头属性添加方法?