Help us understand the problem. What is going on with this article?

systemdでcronみたいなこと

More than 1 year has passed since last update.

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした