3
2

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.

睡眠不足解消のためにsystemd-timerで寝ましょうのメロディーを鳴らす

Posted at

(※)この記事は普段からLinuxデスクトップを使っている人を対象に書いています。Windowsの人はタスクスケジューラかなにかを使うといいと思います

寝ましょう。パソコンを消しましょう。

夜更かしはよくありません。みなさん、早く寝ましょう。

厚労省資料より引用します。

現代生活はシフトワークや長時間通勤・受験勉強・インターネットやゲームをしての夜型生活など、睡眠不足や睡眠障害の危険で一杯です。睡眠不足による産業事故、慢性不眠によるうつ病や生活習慣病の悪化など、睡眠問題を放置すると日中の心身の調子にも支障をもたらします。

また、健康づくりのための睡眠指針 2014 ~ 睡眠12箇条 ~ に基づいた保健指導ハンドブック, 尾崎章子 (東北大学),巽あさみ (浜松医科大学)にも、睡眠の意義や不眠の悪影響がわかりやすくまとめられています。

短時間睡眠が知覚・思考・記憶機能のような認知機能に悪影響を与えることは瀬尾 明彦, 砂川 久弥, 土井 幸輝, 鈴木 哲, 睡眠時間が翌日終日の認知・運動機能に与える影響, ITヘルスケア誌, 2008, 3 巻, 2 号, p. 96-105でも示されています。

時報を鳴らす

とはいえ、なんか知らんけど、パソコン着けてたら、いつの間にか日付変わってるじゃないですか。そこで思いついたのが、アラームを鳴らすことでした。

最近はsystemdでタイマーが使える

Linuxでタイマーといえばcronが有名です。私もcronでタイマーを設定するものだと思っていたのですが、私の使っているArch Linuxではcronはデフォルトではインストールされておらず、代わりにタイマーにはsystemdを使うようです。

最近のLinuxであれば、systemdはインストールされているでしょう。なので、本記事ではsystemdでタイマーを設定します。

え、systemd使うって、じゃあrootでタイマー設定するの?

いいえ、一般のユーザ権限でも
systemctl --user ...
のように設定できます。

設定を行う

では、やっていきましょう。

鳴らす音楽を置く

なんでもいいのですが、クラシックを無償で公開してくださっている方の音源をダウンロードしてくるのがいいかなと思います。長すぎないものがいいです。

どこのディレクトリに置いても基本的には問題ないですが、私は
~/.local/share/sounds
に置きました。

音楽を鳴らすserviceを作る

~/.config/systemd/user
に、拡張子が.serviceのファイルを以下のように作ります。ここでは例として、ファイル名を sleep-timer.service とします。

sleep-timer.service
[Unit]
Description=daily sleep reminder
RefuseManualStart=no
RefuseManualStop=no

[Service]
Type=oneshot
ExecStart=/usr/bin/mpv --no-terminal -vo=null 鳴らしたい音楽ファイルへのパス

音楽プレイヤーは、なんでもいいんですが、私はmpvを使っています。

動作確認をする

systemctl --user daemon-reload
をしてから
systemctl --user start sleep-timer.service
をすると音が鳴るはずです。止めたかったらCtrl-Cをして
systemctl --user stop sleep-timer.service
としたら止まるはずです。

タイマーのファイルを作る

~/.config/systemd/user
に、拡張子が.timerのファイルを以下のように作ります。ここでは例として、ファイル名を sleep-timer.timer とします。

sleep-timer.timer
[Unit]
Description=daily sleep reminder
RefuseManualStart=no
RefuseManualStop=no

[Timer]
Persistent=false
OnCalendar=*-*-* 0:00:00

[Install]
WantedBy=timers.target

毎日 0:00:00 にタイマーを作動させる、という意味です。
(まったくちょうどには鳴りません。そこは当てにしないでください)

タイマーを有効にする

systemctl --user daemon-reload
systemctl --user enable sleep-timer.timer
systemctl --user start sleep-timer.timer
でタイマーが有効になります。

systemctl --user list-timers
によって、登録されているタイマーの一覧が表示されます。

結果

0時に鳴っても寝なかったので、1時と2時にも鳴らすように設定しました。
ちょうど今、1時のメロディーが鳴っているので寝ます。おやすみなさい。

参考資料

https://wiki.archlinux.jp/index.php/Systemd/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC
https://wiki.archlinux.jp/index.php/Cron
https://wiki.gentoo.org/wiki/Systemd#Timer_services

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?