We run several simple python scripts periodically on our servers using Windows Task Scheduler. The scripts are extremely simple, and grab statistics like the Disk Space and the CPU Percentage and log them.

Occasionally we notice we cannot edit, rename or delete the script. When we look in the task manager we see that the script has finished successfully, but there are one or two instances of taskeng.exe still lingering.

We have searched high and low trying to see if there is a way we should be exiting our python script to prevent this, but it only seems to happen 1 in 100 runs of the script, which makes us think it's a Task Scheduler issue.

Someone has suggested that we just kill taskeng.exe when our script is done, but this seems like a sledgehammer solution ( and we sometimes have two scripts run at the same time. )

Hopefully someone here has come across this issue before!

Lingering taskeng.exe Example


I hate to agree with the sledgehammer solution but unless you want to debug out the script to see if something isn't exiting properly (a drive dismount, or network resource failure, assuming you accounted for failures in the functions), I would start the script off with killing any existing scheduler processes.

It is a sledgehammer solution but I've had to do it with known good vendor products that sometimes would call a resource that didn't respond properly, thus hanging up a backup job. To prevent the jobs from overlapping, this was the only solution and honestly, even when they came out with a fix, we didn't bother, because it's a legit workaround that so far has had no negative impacts.

Else, what's the script doing that maybe isn't completing?


p.s. I've had MSFT Premier support even accept this solution for SharePoint scheduled import/export batch processes where they'd hang and we had to kill scheduler.

  • Hi Chase, Thank you for the speedy reply! If it were just one script having the problem, I probably would have called it a day and just killed that task. However it is several different scripts, which range in function. One for instance calls a python library method "ctypes.windll.kernel32.GetDiskFreeSpaceExW" and then logs it to disk. The other calls "wmic cpu get loadpercentage" from the command line and logs its response to disk. My worry is that killing taskeng.exe means that I could accidentally kill a properly running windows task instead of a lingering one. Regards, David – David Gannon Oct 19 '15 at 17:05

Putting the answer from our dedicated server support here in case it helps anyone else out in the future.

Chase's answer is extremely helpful, it just sadly wouldn't work in our case, as we sometimes have multiple tasks running at the same time, and we could end up killing the wrong instance of taskeng.exe.

It was suggested within Task Scheduler that we enable the option "Stop the existing Instance" in the Settings tab under the properties of the task.

So far this has seemed to solve the problem.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.