2007/10/20

パーマリンク 11:41:02, 著者: Charlie

解決編: Windowsでkill -STOP, kill -CONTはどうやるの?

先日の記事で悩んでいた、Windowsで指定した時間に特定のプログラムを一時停止したり実行再開する方法を考えました。

...

まず、人力検索はてなに同じ質問「Windows2000,XPでUNIXの SIGSTOP & SIGCONT に相当するものを教えて下さい。」があって、「開発者向けのサイトにサンプルプログラムがあるとの情報を入手。 サイトにはちゃんと実行ファイル (「Download demo project」のリンク) もあるので、これを使うことにします。

このプログラム(pausep.exe)は、プロセスIDだけを指定すると一時停止、/rを付けると実行再開というシンプルなものです。指定した時間に特定のプログラムを停止・再開するためにはこのプログラムの他に、次のような機能が必要になります。

  1. プログラム名を指定して、実行中のプロセスIDを得る。
  2. 指定した時間に実行する。

1.はcygwinを使わずともWindowsの標準コマンドtasklistを使って実現できます。tasklistはプロセスID以外の情報も返してくるので、プロセスIDだけを取り出すのにforコマンドを使います(2カラム目にある文字列だけを渡す指定が/f "tokens=2")。

x264.exeを一時停止するバッチ「pause_x264.bat」
for /f "tokens=2" %%i in ('tasklist /nh /fi "imagename eq x264.exe" /fo table'); do c:\bin\pausep %%i
x264.exeを実行再開するバッチ「resume_x264.bat」
for /f "tokens=2" %%i in ('tasklist /nh /fi "imagename eq x264.exe" /fo table'); do c:\bin\pausep %%i /r

2.はWindowsのschtasksを使います。例えば、その日の夕方4時からの番組を録画する間、一時停止したい場合は、

schtasks /create /tn (このタイマーに付けたい名前) /tr c:\bin\pause_x264.bat /sc once /st 15:58:00

のように入力すると、ログオンパスワードを尋ねられます。パスワードを入力して、登録されたとメッセージが表示されれば準備完了です。 2分前を指定したのは、キャプチャソフト(Feather)が1分前に起動するのでそれより余裕を持たせたものです。

これだけでは再開しないので、再開もタイマー登録しておきます。4時55分に録画完了するなら、

schtasks /create /tn (このタイマーに付けたい名前) /tr c:\bin\resume_x264.bat /sc once /st 16:56:00

といった感じです。

当日ではなく、例えば翌日の午前5時を指定するときは、/sd 2007/01/01のように日付も書く必要があります。

後は注意点を幾つか。

x264をバッチで連続実行させている場合、ごくごく稀に止まらないかも
つまり、x264が終了して次のx264が起動されるまでの間にpause_x264が実行された場合は、停止する対象が見つからなくて次のx264が起動されちゃうってことです。そういう場合は10秒間隔で2回pauseすればいいかもしれません(resumeも2回やってください。pausepが使っているWindowsの機能は、pauseの指示回数をカウントしているので、2回pauseされたら2回resumeしないと再開しません)。
Ctrl+Sで停止しているx264はresume_x264では再開しません
Ctrl+Sは画面出力の停止で、pausepの機能とは別物です。

これで心置きなく、キャプチャ予約しながら長時間エンコできるようになりました!

この記事へのトラックバック アドレス

Trackback URL (right click and copy shortcut/link location)

フィードバックはまだありません...

コメントを残す


Your email address will not be revealed on this site.
(改行が自動で <br /> になります)
(For my next comment on this site)
(Allow users to contact me through a message form -- Your email will not be revealed!)
7月 2024
 << <   > >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

リンク

最近の記事

アーカイブ

検索

XMLフィード

blog soft