Mac

[Mac][cron] 指定した音楽ファイルを一定時間ごとに再生する

定期的な作業を自動実行したい時に、cron でスケジューリングすることができます。cron には、実行したいプログラム(シェルスクリプト)・処理と、時間をテキストで指定します。

今回は、指定した時間ごとに音楽を鳴らすように設定してみます。

cron にスケジュールを追加

cron にスケジュールを追加するために、Terminal を起動します。

cron スケジュールの編集には、crontab というプログラムを利用します。「crontab -e」を実行すると vi エディタが起動して、cron の設定(時間・実行するプログラム)ができるようになります。

しかし、自分の環境では何故か vi エディタで保存することができなかったので、nano エディタで編集します。

$ EDITOR=nano crontab -e

以下のように設定しました。

30 * * * * afplay /Users/rakuishi/Music/iTunes/iTunes Media/Music/EGOIST/All Alone With You - EP/01 All Alone With You.m4a > /dev/null 2>&1

30分 * 時 * 日 * 月 * 曜日に、「/Users/(省略)/01 All Alone With You.m4a」にある音楽ファイルを鳴らします(afplay)。鳴らした後に、標準出力と標準エラー出力を破棄させます(> /dev/null 2>&1)。

つまり、毎時30分になったら音楽が鳴ります。

この cron の指定は、以下のブログを参考に書いています。

参考:crontabの設定メモ - ザリガニが見ていた…。

ちなみに、nano エディタで保存する場合は、ctrl + o → enter → ctrl + x です。enter を押す必要があるのに、なかなか気付かなかった。

また、再生したい音楽ファイルを terminal にドラッグ&ドロップすることで、長いパスが挿入されます。

cron に登録したスケジュールの確認

「crontab -l」することで、登録された cron を見ることができます。ちゃんと登録されているのが確認できますね。

$ crontab -l
30 * * * * afplay /Users/rakuishi/Music/iTunes/iTunes Media/Music/EGOIST/All Alone With You - EP/01 All Alone With You.m4a > /dev/null 2>&1

これで指定した時間に音楽が再生されます。

音楽ファイルの再生を止める

音楽が再生されて喜んだ後に、「あれ、音楽止められない」という事態に陥ります(笑)。これはプロセスから削除する必要があります。

今、起動しているプログラムを確認するには、「ps -e」命令を使用します。

$ps -e
809 ?? 0:00.71 afplay /Users/rakuishi/Music/iTunes/iTunes Media/Mus

するとプロセス番号 809 で音楽が再生されているので、このプログラムを終了します。終了するには、「kill -TERM プロセス番号」を入力します。

kill -TERM 809

これで音楽が再生されなくなりました。