ラベル cron の投稿を表示しています。 すべての投稿を表示
ラベル cron の投稿を表示しています。 すべての投稿を表示

2018/01/25

ffmpeg on Ubuntu 16.04 LTS server

ラジオ録音用のVPSの Ubuntu を 14.04 LTS から 16.04 LTS にしました。

実は「アップグレードできます」のダイアログはずーっと出ていて、ずーっと無視してきたのですが、いい加減引っ越さないといかんかなと思って、ポチっとOKを押してアップグレードしました。

しかるべきデータはすべて退避して作業を始めたものの、アップグレード自体はさしたるトラブルもなく完了しました。

いくつか問題がありました。


★ gnome-schedule が消えている

これは地味に痛いです。仕方ないから crontab -e してますが、時間できたらソース探してきてビルドすべきなのかと思ったり、ほかのアプリを使おうかと思ったり。

まぁ、大した手間があるわけでもないから、crontab -e に慣れてしまえばいいのかなとも思いますが、何が面倒って記述したコマンドをターミナルでさくっと試行できないのが何とも面倒なんです。

追記:
16.04 LTS に入っていなかった GNOME-schedule は、結局 GNOME-schedule 2 というのをビルドして使っています。日付・時間の表現とか下手に日本語化されちゃって気持ち悪いんですが…。(Feb 07, 2018)


★ 画面が小さくなった

今回は VPS の方も ubuntu-mate にしてみました。デスクトップの最大解像度が 1024x768 になってしまっていて、画面が狭いのです。どうやって広げたんだったか、またちまちま調べなきゃ…。


★ 自前ビルドの ffmpeg が動かない

fdk-aac が扱えるように ffmpeg は先人の足跡を辿って自前ビルドしているのですが、アップグレード後のインストールではこの自前 ffmpeg が共有ライブラリのロードでエラー(libass.so.4, No such file or directory)、といって動いてくれませんでした。


★ ffmpeg が自前ビルドできない

そこで、先人の知恵を頼ってやってみたんですが…

Compile FFmpeg on Ubuntu
(GithubGist)
https://gist.github.com/teocci/f7a438013a0197a91446ee86de41faee

Compile FFmpeg on Ubuntu, Debian, or Mint
(ffmpeg.org の wiki)
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

うまくいかないのです。最後の最後で失敗するんです。同じところで失敗するのです。

必要なデータは退避していたこともあり、アップグレードしたインストールを捨てて、さくらが用意してくれている 16.04 Server をクリーンインストールしてリトライしたけど、やっぱり同じエラーでダメ(ここできちんと記録を残しておくべきでした)。

その日は眠くなって、サーバー閉じて寝てしまいました.。

で、翌日。

どうしたものかと思っていたのですが、ふとローカルで作業することを思い付き(ローカルの方が何かとストレスなくていいかなと思った)、VirtualBox に 16.04 Server を入れてほぼ同じ環境をつくってみました。参照する手順は、本家 ffmpeg.org のウィキ通りにやってみることに。VPS 上では一度失敗しているのですが、初心に帰って。

何の滞りもなくビルド完了。VPS に実行形式をコピーして、無事動作を確認しました。一体何がいけなかったんだろう…という根源的な問いに答えを出す技術がないので、結果オーライで生成された実行形式にスイッチすることにしました。

----------------
Jan 25, 2018


2016/06/05

crontab -e のエディタを選ぶ

引き続きよちよち crontab の話なんですが…

crontab の時に使うエディタは、ターミナルでの編集が基本のキだということなのか、「viじゃ難しいからnano」とかってよく書いてあって、しかたなくそれを使ってたんだけど、普通の Ubuntu なら別に gedit とか MATE なら pluma とかでいいじゃん、と思うんですが、そういう手掛かりってないのかなー、と思ってまたまた Google 先生に伺ったんです。

答えはすぐ見つかりました。

■ プログラムの自動実行(cron)について(釣ったよ!)
http://tsuttayo.jpn.org/crond/

ありがとうございます。釣られました。

$ export EDITOR=/usr/bin/gedit

だけでいいんだそうでして…「ユーザ別のcrontab」(俺が使ってるのはこれなのですね!)の編集で使うエディタのパスは、環境変数 EDITOR を参照している、と書いてありました。

やってみたら、あっさり。CUIのエディタしか使えない、というのは先入観、単なる思い込み。先入観はいけないです。

----
(Jun.05, 2016)

2016/06/03

cron と PATH

cron で何かを実行する時にいつも PATH のワナに引っ掛かる。で、いつも引っ掛かるから何かいい方法がないのかと思ってGoogle先生に伺ったら、答えがいくつかありまして、一番よさげだったのが

「crontabに書き込む」

という方法でした。

今回参考にさせていただいたのは次のサイトです。

■cron実行時の環境変数を設定(admin note)
http://admnote.paix.jp/2014/07/cron実行時の環境変数を設定/

ここでは system-wide の crontab(/etc/crontab)に書き込む方法が紹介されているのですが、わが家のPCで当該ファイルを見てみると、通っててほしい /usr/bin とかはちゃんとパスが通ってます。

たぶん $ crontab -e で呼べる一時ファイルの crontab に書き込んでやんないと、gnome-schedule で設定したスケジュールとかには適用されないんじゃないかなーと思います。

でも crontab -e で開いたところにポチポチ手打ちするのは面倒なので、また例によってターミナルで開いたままにした状態で gedit で開き、編集し、保存して閉じ、ターミナルの方も何もせずにそのまま閉じるというようなことをしました。

もっとエレガントな方法、ないんだろうか?

で、いまのところ思い通りの動作をしているように見えます。何か分かったら、また追記します。

----
(Jun.03, 2016)

2016/05/25

crontab -e

gnome-schedule の設定を引き継ぐのに、crontab -e で生成された一時ファイルにまんま上書きしたら、コメント欄(Description)がおかしくなった、ということを書きました。

http://qubuntu.blogspot.jp/2016/05/ubuntu-mate.html

で、結局、crontab -e のファイルにある「JOB_ID_1」とかいうのの管理がうまくいってないんだろうということまでは推測できたので、ダメ元でその部分をすべて削除しました。

その上で再び gnome-schedule で読み込み、さらに crontab -e したところ、IDは「38」から始まる連番に差し替わっていました。中身はすべて空なので全部書き直しです。

最初に移植した設定の JOB_ID がプログラムが管理するテーブルと一致していなかったことは分かったのですが、じゃぁそのテーブルはどこにあるんだろう、というのはいまだに分かりません。「gnome-schedule」でファイルシステムを検索しても、それらしいファイルは見つからないんですよね。どこにあるんだろう。

VPSで動かしてる Ubuntu と自宅の録音PCで同じスケジュールを回しているので、さくっと共有する方法があればそうしたいのです。

先人の知恵にまだたどり着いてません。ソースコード読めば分かるのだろうけど、スキルに欠けるよちよちには、なかなか。てなわけで、探索は継続します。

つづく。

----
(May 25, 2016)

2016/05/23

Ubuntu MATE を再インストール

元々はWindows 7 Home Premiumが入っていたPCがあります。買ってすぐにUbuntuを入れてラジオ録音に使っているので、Windowsのライセンスは死蔵状態ではあるけれど、10に塗り替えとかないと有料になるらしいので、せっかくだし、HDDを大きくしてWin7を入れなおし、そこからWin10にアップグレードすることにしたのです。

Ubuntu も入れ直し。旧HDDからのシステム移植は諦めて、まっさらなところから入れ直し。その記録です。

しかし Windows ってインストールもアップグレードもむちゃくちゃ時間掛かりますねぇ。何なんだろう。関係ないけど。

----

★ crontab

「crontab -e」で生成される一時ファイルに、旧システムで確保しておいた一時ファイルを上書きしてスケジュールを移植。取り敢えず成功しましたよ。普段、スケジュールの管理は gnome-schedule でやっていて、コメント欄(description)は引き継がれなかったけど、数十件ある録音のスケジュールはそっくり移植できました。

もっとエレガントな方法、あるのかな。たぶんあるんだと信じてる。

追記:
コメント欄は cron 自体とは分離して gnome-schedule が管理しているらしく、「# JOB_ID_1」のようなコメントのようにして付いていて、gnome-schedule の方で合体して表示しているっぽい。

そこの管理が、無理矢理上書きのせいか混乱している。連番がきちんとつながらないんだと思う。やはり、もっとエレガントな方法を探さなきゃ、と思いました。crontab -e でいったん「JOB_ID」を全部削除したらどうなるんでしょうね。もっと混乱するかな。

★ rtmpdump

 再コンパイル。こないだやったばかりだから、これはスムーズに。例によって、Ubuntu MATE で削られている gcc やら何やらを入れています。

★ ffmpeg

 再コンパイル。これは実は久々で、苦労。しかも時間掛かるし、以前参考にしていた先人の知恵が環境の変化で頼れなくなっていて、新たなる先人の知恵を検索。

■ ubuntu14.04 にffmpegをインストールする
http://eco.senritu.net/ubuntu13-10_ffmpeg/

シェルスクリプトをコピペして、ちょこちょこ手を入れて使わせていただくだけ。本当にありがとうございます。手を入れたのは、

1) 作業場所は home ディレクトリにした
2) x264 の configure の時に言われるがままに「--disable-asm」追加
3) libvpx の make でエラー。必要ないので破棄
4) ffmpeg の configure のオプションから「--enable-libvpx」削除

途中でエラーが出ると面倒なので、コマンドをひとつひとつコピペして実行していたのですが、これって基礎知識なのかもしれないけど…コマンドとコマンドを「&&」でつないである部分は、ちゃんとつないだまま実行した方がいいんですね。最後の ffmpeg のコンパイルの部分で分かりました。

★ hddtemp / MATE sensors applet

 入れ替えた新しいHDDが、元々入っていたHDDより厚くてびっくり。小さい筐体の中でHDD周りの空きスペースが狭くなってしまい、放熱にやや不安が生じたので入れてみました。

★ 諸々のメディアプレイヤー

 取り敢えず mplayer SMPlayer VLC を入れました。

 このうち SMPlayer のインタフェイスをカスタマイズしていたんだけど、.conf の類をコピーしておらず新規インストールでやりなおし。Ubuntu 標準で入れられる SMPlayer はスキンとかの選択肢が少ないので、開発元オリジナルから再インストールしました。

★ xmllint

 何かをコンパイルする時に(多分 rtmpdump)xmllint が足りなかったので、ibxml2-utils を入れました。


 ---------------- これで民放ラジオの録音が可能に ---------------- 


★ MATE の実行形式を gnome のものに偽装

 gnome-schedule のコマンド実行を試すボタンが反応しないから変だなと思ったら、gnome-terminal がないのが原因でした。/usr/bin の MATE の実行形式のエイリアスを gnome のものにリネームして /usr/bin に。ついでに gedit なども。

mate-terminal -> gnome-terminal
pluma -> gedit
caja -> nautilus

★ box.com のストレージをマウント

 これも最近やったはずなのに、同じ所で引っ掛かる。「mount ~/hogehoge」すると「davfs2 にユーザが追加されていない」と言われたけど、確かに追加されている。でもマウントできない → 再起動したら大丈夫だった。

★ mozc with ibus

 ibus も再起動しないとアクティベートされなかった気がする。ちゃんとコマンドで restart すればよかったのかなと思うけど。

★ ウィンドウの「勝手に全画面化」抑止

 デスクトップでウィンドウを上の縁に寄せるとスナップしてしまうのを抑止。


によるとスナップしないはずなのだが、初期値が変わったのか。ここでは「有効にする」方法を示してあるので、その逆をたどります。dconfエディタで「org → mate → marco → general」の「side-by-side-tiling」のチェックを外す。

★ ターミナルで何かを実行する時のウィンドウの挙動

 ターミナル上でアプリケーションを起動した時に、アプリ実行終了まで実行する様子を見せたままにしたい時は「gnome-terminal -x hogehoge;hogehoge2 &」のように「」を最後に付ける。

----
(May 23, 2016、追記:May 24, 2016)

2013/07/01

いまさらながら ntp で時刻合わせ

わが家の常時稼動PCなどで、公営ラジオ放送ネットサイマルR2の語学講座を録音しています。どの講座かは恥ずかしくて書けないのですが、普通に cron で録音のスクリプトが1日に数回起動します。

そのスクリプトでは「番組前と番組後に60秒ずつマージンをとる」ように録音しているのに、先頭のマージンが各ファイルで違っています。そもそもそのマージンを設定したのも、ちゃんと最初から録音できない日があったからでして、「違う」ということには気付いていたけど、起動する時にサーバの込み具合などの事情で録音が早く始まったり遅く始まったりしてるんだろうと思って、原因究明はしていませんでした。

そんな状態でかれこれ1年半が過ぎ、今朝ふと気が向いて、各ファイルのマージンの時間がどれほどあるかおおよそのところを耳で聞きながら調べてみました(要らない部分をカットするスクリプトを作ったので、カットする時間の設定が必要だった)。

そしたら、次のような値になっていました。

06/24 60秒 = ほぼ設定通り
06/25 62秒
06/26 63秒
06/27 65秒
06/28 67秒
 :
 :
07/01 70秒

タイムスタンプをみると、スクリプトの起動から11〜12秒でファイルの書き込みが始まっています。つまり、PCの時計の遅れがそのまま先頭マージンの長さに影響を及ぼしていたのです。

「システム設定> 日付と時刻 > ネットワーク時刻」が「オン」になっていたから、Ubuntu が勝手に ntp.ubuntu.com にアクセスしてシステム時計を調整してくれているものだとばかり思って、疑うことすらしていませんでした。


---- ここからが本題 ----


■ ntpdate を使う

早速ググってみたら、ntp を「確実に」使う方法はすぐ分かりました。


1) ntpdate の設定

$ sudo (editor) /etc/default/ntpdate

中身は

| NTPDATE_USE_NTP_CONF=no 
| NTPSERVERS="ntp2.mynsp.com ntp1.mynsp.com"
|
NTPOPTIONS="-s -u"

2番めのNTPSERVERS の項目を有効にするためには1番めの「ntp.conf を使う」が「no」でないといけないようです。3番めのオプションは man を読む限りだいたいこんなものかなと。(editor) は gedit でも pico でも可(万年よちよちの俺は、いまだに vi はよう使わん)。

ntp サーバは実際には、次のような順番で設定しました。

① プロバイダのプライマリ
② プロバイダのセカンダリ
③ ntp.ring.gr.jp
④ ntp.nict.jp


2) cron.daily に登録

$ sudo (editor) /etc/cron.daily/ntpdate

中身は

| #!/bin/sh
| /usr/sbin/ntpdate-debian > /dev/null 2>&1



"ntpdate" を設定に従って実行するときは "ntpdate-debian" を使うようです。これが設定に従って ntpdate を逐次実行するみたい。


3) ntpdate を実行可能にする

$ sudo chmod 755 /etc/cron.daily/ntpdate

これでいいみたいです。 

端末などで手動実行するのにも、ntpdate 実行自体がルートでないとだめみたい。

$ sudo ntpdate ntp1.mynsp.com



で、実際に実行してみたら13秒ちょっと遅れていました。ネットワークのインタフェィス起動時に時刻は同期される、と書いてありましたが、ずっとつなぎっぱなしの環境では意味ないし。で、そんなわけでこれでやっと時計合わせ問題から解決される…はず。

cron がちゃんと動いてくれるかが最後の難関になりそうです。


しかし「日付と時刻の設定」の「ネットワーク時刻」は、いったいどこで何をしているんでしょうか。うそつきは(というより、ntp.conf 設定しろとか、何か言ってくれないと)困ります。


■ 今回いろいろ教わった先人方のブログ

# さくらの VPS: Ubuntu 12.04 導入後の設定(2)
# http://blog.livedoor.jp/oceanweb/archives/18083469.html
 

# おおかみ少年: タイムサーバーと時刻の同期
# http://blog.wolf.boy.jp/?cid=46505


# jitsu102の日記: (設定メモ)ntpdate-debianによる時刻同期
# http://d.hatena.ne.jp/jitsu102/20080721/1216568235


どうもありがとうございます。

----
(Jul.01, 2013)


2012/12/27

最近助かった tips 3つ


■ スクロールバーを普通のにする

from Liberian Geek
http://www.liberiangeek.net/2012/10/disable-overlay-scrollbar-in-ubuntu-12-10-quantal-quetzal/

Ubuntu 12.04 や 12.10 などでスクロールバーを、ほとんどの場合オペレーションがうまくいかない overlay でなく普通の「常設」スクロールバーにする。

$ gsettings set com.canonical.desktop.interface scrollbar-mode normal

おー、確かに元に戻ったぞ。これは dconf でもできました。


■ Unity のグローバルメニューを無効にする

also from Liberian Geek
http://www.liberiangeek.net/2012/04/disable-the-global-menu-in-ubuntu-12-04-precise-pangolin/

普段は GNOME Classic とかに切り替えているので、あまり関係ないですが、VPS 上の Ubuntu に RDP で入ると必ず Unity になってしまうので、そっちでは使える技かもです。

$ sudo apt-get autoremove appmenu-gtk appmenu-gtk3 appmenu-qt

これはインストール時に選択させてほしいですよね。UIに関してはホントゴリ押しがいやになります。そんな中でもちゃんとこうやって解決策へと導いてくれる先人賢者の皆さまに、心から感謝感謝です。

今後の研究課題としてはですね、「RDP でログインした時も Unity じゃなくて GNOME Classic とかにする方法があるはずだ!」という辺りです。


■ cron が機能しない!

cron って以前から、さまざまなチュートリアルに従ってやっても望みどおりの動きをしてくれないことがあって、具体的には単純に「起動してくれない」ということなんです。俺にとっては使いやすいgnome-schedule を使っても、先日からダメなタスクがあったりしたので「これだから Windows が楽なんだ」とか、口走ってはいけないことを心の中で叫びつつ、あれこれ調べ直していたら、ありました。見つけた瞬間、赤面。

「パーミッションを確認せよ」

昨夜、設定しているすべてのタスクについて「プログラムとして実行する」のチェックを「-」になっているものは「V」に変えました。ネットラジオの録音に使っています。ちゃんと機能しているかどうかは1週間経たないと分からないけど、きょうこれまでの分に関しては大丈夫みたいです。

----
(Dec.27, 2012)

楽天モバイルを台湾で使ってみた

GWに、久しぶりに台湾に赴きました。コロナ禍の間に延命していた台湾大哥大と中華電信の回線のうち中華電信の方を失効させてしまい(なぜ中華電信だけ失効したんだろう)、今回の滞在は台湾大哥大と楽天モバイルの2回線で賄うことにしました。テザリングでAndroidスマホ1台とiPad、Ma...