自宅サーバーによる24時間稼働は運用費(コスト)がかかる
もう20年以上前に自宅でPCを常時稼働させていましたが、効率が悪いことに気づいてからレンタルサーバー(VPS)を借りることにしました。それ以来ずっとさくらVPSを借りています。
自宅でPCを常時稼働させると冬はまだ良いのですが、夏は冷却の問題があり、タダでさえ暑いのにPCからの排熱まで冷却しなくてはならずエアコンの電気代が無駄です。当然夏はPCの冷却ファンも良く回りますから消費電力も多くなります。冷静に考えると月額1,000円程度のVPSを借りたほうが安くて快適だということに気づきました。
VPSで動画ファイルをエンコード処理させている
現在もさくらVPSを借りています。OSはdebian GNU/LinuxをX-Window無しで最小インストールしており、そこから環境構築して、自宅からはSSHでコマンド入力により遠隔操作しています。当サイトもそのVPS上で動いています。元々UNIX系はこういう使い方も出来るので何ら不自由はありません。
最近は機会も減りましたが、PCのTVチューナーで録画した動画ファイルをエンコードしてファイルサイズを小さくするために、VPSに転送してからffmpegでエンコード処理させています。
時間のかかる処理はscreen必須
SSHでリモートアクセスして処理を走らせますが、SSHで接続しただけだとそのセッションを維持する為に、クライアント側のPCも起動しっぱなしになるし、またネットワークの切断等が起きればプロセスが落ちるので非常に厄介です。
そういう場合はscreenというアプリをインストールしておいて、SSHでscreenコマンドを実行した後に、screen上で処理を走らせることでSSHを切断することが出来ます。具体的にはscreenでセッションを作って処理を走らせ、デタッチしてからSSHを切断させます。
処理が終わった頃にまたSSHでVPSに接続して、screenのセッションにアタッチすればコンソールは動いたままになっています。処理がまだ終わってなければまたデタッチしてSSHを切断し、時間が経ってからまたアクセスしてアタッチします。
最近ちょっとエンコード処理して保管しておきたい動画ファイルが溜まってきたので、エンコード終了までどれくらいの時間がかかっているか?をある程度の目安で知りたくなりました。確かそんなコマンドが有ったような気がするのです。
timeコマンドでプロセスの時間を計測出来る
調べたらすぐにtimeコマンドを使えば目的を達成することが出来るとわかりました。ffmpegでエンコード処理をしているのですが、頭にtimeコマンドを入れるだけです。
~$ ffpmeg -i 録画した動画ファイル.ts エンコードした動画ファイル.mp4
こんな感じでtsファイルをmp4にエンコード処理させているのですが、
~$ time ffpmeg -i 録画した動画ファイル.ts エンコードした動画ファイル.mp4
頭にtimeを付加するだけで時間を計測してくれます。処理が終わったらかかった時間を出力してくれます。
real 53m14.915s
user 95m24.604s
sys 0m46.695s
実際にやってみたら53分程度とわかりましたので、目安は1時間だなということがはっきりしました。realがコマンド投入から終了までかかった時間処理、userがユーザーCPU時間、sysはOSが関与した時間らしいです。46秒程度なのであまりOSには影響が無さそうです。
timeコマンドについて詳しい事はリファレンスマニュアルなんかで調べてみようと思います。知っておけば便利になりそうなコマンドだと感じます。
WindowsではPowerShellで出来るらしい
Winowsのtimeコマンドは時間設定に関係するコマンドだったと記憶しているので、同等のコマンドが無いかAIに聞いてみたところ、PowerShellには該当するコマンドがあるらしいです。(Windowsでは試してないので忘れました。)
Windowsで処理にかかる時間を計測したい人は、AIで尋ねてみて下さい。もしくは私が後日にでもWindows機で試してみてこの記事を加筆修正するようにします。


コメント