4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Task Schedulerで実行中のRobocopyを停止したときに、ゾンビプロセス化したRobocopyを停止する方法

Last updated at Posted at 2022-12-09

Task Schedulerで実行中のRobocopyを停止したときに、完全にRobocopyが停止しない場合の対処方法

アドベントカレンダー10日目です。
仕事で使った知識で、「これは役に立つ!」と思ったので投稿します。
所謂ゾンビプロセスとなったRobocopyと正常に実行中のRobocopyの見分け方です。
既にご存知の方は読み飛ばしてください。

Task Schedulerでデータのバックアップやデータ移行を行う場合、多数のRobocopyを並列して実行することがあるかと思います。
Task SchedulerでRobocopyのバッチを実行し、それを何らかの理由で途中で停止することもあるかと思います。
しかしTask Schedulerで[終了]を選択したとしても、Robocopyは実行されっぱなしになることがたまにあります。
Robocopyが1本だけ走っている場合はOS再起動で良いかもしれませんが、Task Schedulerで複数実行しているRobocopyのうち、複数のRobocopyは停止し、複数のRobocopyは実行を継続したい場合、OS再起動はできません。

前提条件

Robocopyは便利なのでよく使いますが、必ずログを出力するようにしています。
今回の手法はRobocopyでログを出力していることが前提条件です。

下準備

今回は検証でRobocopyに時間がかかるように、Yドライブに3.5TiBほどのデータを配置し、Zドライブは空っぽにしておきます。
Yドライブは以下の通り
image.png
Zドライブは以下の通りです。
image.png

で、このYドライブからZドライブにデータをコピーするRobocopyをバッチファイル化します。
そしてこのバッチファイルをTask Schedulerに仕込みます。
image.png
こんな感じですね。
複数のRobocopyを実行させるためにVドライブにも3.5TiB、Xドライブも空っぽのものを作り、こちらも同様にバッチファイル化してTask Schedulerに仕込みます。

実際やってみる

準備ができたので実行してみましょう。
事象が再現するかわからないので運を天に任せます。
タスクを実行します。
image.png
はい。
どちらか一方を[終了]します。
image.png
このタスクを止めていいか聞かれるので、[はい]をクリックしましょう。
image.png
当然以下のような状態になります。
image.png
強制終了したRobocopyと実行中のRobocopyが混在しています。
この状態だと、タスクマネージャーからRobocopyが動作していても、正常に動作している方か停止した方がゾンビプロセスとして動作し続けているのか確証が持てません。
image.png

ゾンビプロセス化したRobocopyの見極めと停止方法

[リソースモニター]を開きます。
image.png
[CPU]タブを開いて[関連付けられたハンドル]を選択し、[ハンドルの検索]に前提条件で言及しているログを入力します。
image.png
Cドライブ直下にRClogというフォルダを作成し、そこにログを出力しています。
image.png
このログのファイル名を先ほどの[リソースモニター]の[ハンドルの検索]に入力します。
image.png
ビンゴ!
出ましたね。
これでゾンビプロセス化したRobocopyだけを狙い撃ちで停止できます!

対象のRobocopy.exeを右クリックし[プロセスの終了]をクリックします。
image.png
「このRobocopy.exe止めていいの?」と聞いてくるので[プロセスの終了]をクリックします。
image.png
便利ですね。
安全、確実にゾンビプロセスを停止可能です。

応用編

これを応用すれば削除するときに別のプロセスがつかみっぱなしで排他処理がかかってしまい、削除できないファイルも削除できるようになります。
例えば以下のような状態ですね。
今回のエラーはちゃんとRobocopyって出てきますが、出てこないパターンも考えられます。
image.png
何度再試行しても削除できないことがありますね。
削除できないファイル名を先ほどと同じ[リソースモニター]の[ハンドルの検索]に入力して削除可能です。
このファイル名を
image.png
[リソースモニター]の[ハンドルの検索]に入力して
image.png
このファイルをつかみっぱなしのプロセスを特定して停止することが可能です。

本日はこれまで。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?