LoginSignup
5

More than 3 years have passed since last update.

posted at

systemdでcronみたいなこと

systemdでcronみたいなこと

環境

  • GentooLinux
  • systemd

記事と関係ないけど、最近Ubuntuを入れる機会があって、インストールが簡単なこと、みんなが最近(?)sudo ばっかりしていることがよくわかった。gentooはめんどくさいけど、やっぱりなんか好き。

目的

  • emerge-webrsync を systemdのタイマーで定期的に実行する
  • ユーザー権限で実行する

systemdのファイルの細かいところは方方ドキュメントがあるので適宜検索するとして。
簡単に必要最低限をおまとめしました。

作る必要があるもの

  • ~/.local/share/systemd/user ディレクトリ
  • ~/.local/share/systemd/user/webemerge.service ファイル
  • ~/.local/share/systemd/user/webemerge.timer ファイル
  • 場所はどこでもいいので、例えば ~/bin/web-emerge.sh ファイル

流れ

systemdは.timerファイルを作って、その中に任意の作動時間を記載すると、同名の.serviceが起動されるらしい。

書式

webemerge.service

至極単純に。timer起動するものはType=oneshoptとするらしい。
/path/to/web-emerge.sh を実行するよ、という意味合いのファイル。

[Unit]
Description=weekly emerge webrsync

[Service]
Type=oneshot
ExecStart=/path/to/web-emerge.sh

webemerge.timer

毎週日曜朝3:00に起動するよ、という意味合いのファイル。

Persistent: true/falseを記載。起動タイミングで電源が落ちていたりして起動できなかった場合、起動できる状態になったらすぐ実行したい場合はtrueを設定。あくまでその時間に実行しないとならない場合はfalseを設定。

OnCalendar: 起動タイミングを記載する。
基本的な書式は
[WEEKDAY] <Year>-<Month>-<Day> <HH>:<MM>:<SS>
となる模様。

またmonthlyweeklydailyhourlyminutelyなど、特殊な書式もある。
下記参考サイトからの引用

minutely → --* ::00
hourly → --* :00:00
daily → *-
-* 00:00:00
monthly → --01 00:00:00
weekly → Mon --* 00:00:00
yearly → *-01-01 00:00:00
quarterly → *-01,04,07,10-01 00:00:00
semiannually → *-01,07-01 00:00:00
各セクション、カンマ区切りなどで複数指定可能。詳細は下記の参考サイトにて。。

参考:
https://jlk.fjfi.cvut.cz/arch/manpages/man/systemd.time.7.html
※いつも Calender などとtypoしてしまって、うまく動かずハマる。。。

[Unit]
Description=weekly emerge webrsync

[Timer]
Persistent=true
OnCalendar=Sun *-*-* 3:00

[Install]
WantedBy=timers.target

web-emerge.sh

実処理のファイル。今回はシェルで単純に

#!/bin/sh

/usr/bin/sudo /usr/bin/emerge-webrsync

とした

systemd へのインストールなど

--user をつけるとユーザー上のsystemdで動作する。
それ以外はいつもと同じ。

リロード

$ systemctl --user daemon-reload

有効化

$ systemctl --user enable webemerge.timer

無効化

$ systemctl --user disable webemerge.timer

実行

$ systemctl --user start webemerge.timer

状況確認

$ systemctl --user status webemerge.timer

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
What you can do with signing up
5