Fu
Simple is Beautiful!

systemd中的时间格式

systemd 自身定义了三种时间格式:

time span

time span 是由数值和时间单位组成,以空格分开:

2h 30min

上面代表 2 小时 30 分钟,共计 150 分钟。

时间单位如下:

如果不指定时间单位,默认为秒。

下面的 time span 格式都是允许的:

2 h
2hours
48hr
1y 12month
55s500ms
300ms20s 5day

timestamp

timstamp 代表的是一个具体的时间点,例如:

Fri 2012-11-23 23:02:15 CET

timestamp 不仅可以向上面那样表示, 也可以用 nowtodayyesterdaytomorrow 表示, 又可以用 + 或者 - 后跟一个 time span,表示当前时间加上或减去指定的 time span,可用后缀 leftago 替代, 最后可以用 @ 后跟一个数值代表一个 Epoch time,也就是距离 1st Jan, 1970, 00:00 的秒数。

下面是合法的 timestamp 和它们代表的时间(假设现在是 2012-11-23 18:15:22):

Fri 2012-11-23 11:12:13  →  Fri 2012-11-23 11:12:13
    2012-11-23 11:12:13  →  Fri 2012-11-23 11:12:13
             2012-11-23  →  Fri 2012-11-23 00:00:00
               12-11-23  →  Fri 2012-11-23 00:00:00
               11:12:13  →  Fri 2012-11-23 11:12:13
                  11:12  →  Fri 2012-11-23 11:12:00
                    now  →  Fri 2012-11-23 18:15:22
                  today  →  Fri 2012-11-23 00:00:00
              yesterday  →  Fri 2012-11-22 00:00:00
               tomorrow  →  Fri 2012-11-24 00:00:00
               +3h30min  →  Fri 2012-11-23 21:45:22
                    -5s  →  Fri 2012-11-23 18:15:17
              11min ago  →  Fri 2012-11-23 18:04:22
            @1395716396  →  Tue 2014-03-25 03:59:56

calendar event

calender event 是用来在一个表达式中代表多个时间点的,就是 timestamp 的超集,如下:

Thu,Fri 2012-*-1,5 11:12:13

上面的 calender event 代表的是 2012 年中每一月的第 1 天或第 5 天的 11 点 12 分 13 秒那些时间点,但是这一天必须是星期二或星期五。

calender event 格式规则如下:

下面是合法的 calender event:

   Sat,Thu,Mon-Wed,Sat-Sun  →  Mon-Thu,Sat,Sun *-*-* 00:00:00
     Mon,Sun 12-*-* 2,1:23  →  Mon,Sun 2012-*-* 01,02:23:00
                   Wed *-1  →  Wed *-*-01 00:00:00
           Wed-Wed,Wed *-1  →  Wed *-*-01 00:00:00
                Wed, 17:48  →  Wed *-*-* 17:48:00
Wed-Sat,Tue 12-10-15 1:2:3  →  Tue-Sat 2012-10-15 01:02:03
               *-*-7 0:0:0  →  *-*-07 00:00:00
                     10-15  →  *-10-15 00:00:00
       monday *-12-* 17:00  →  Mon *-12-* 17:00:00
 Mon,Fri *-*-3,1,2 *:30:45  →  Mon,Fri *-*-01,02,03 *:30:45
      12,14,13,12:20,10,30  →  *-*-* 12,13,14:10,20,30:00
 mon,fri *-1/2-1,3 *:30:45  →  Mon,Fri *-01/2-01,03 *:30:45
            03-05 08:05:40  →  *-03-05 08:05:40
                  08:05:40  →  *-*-* 08:05:40
                     05:40  →  *-*-* 05:40:00
    Sat,Sun 12-05 08:05:40  →  Sat,Sun *-12-05 08:05:40
          Sat,Sun 08:05:40  →  Sat,Sun *-*-* 08:05:40
          2003-03-05 05:40  →  2003-03-05 05:40:00
                2003-03-05  →  2003-03-05 00:00:00
                     03-05  →  *-03-05 00:00:00
                    hourly  →  *-*-* *:00:00
                     daily  →  *-*-* 00:00:00
                   monthly  →  *-*-01 00:00:00
                    weekly  →  Mon *-*-* 00:00:00
                    yearly  →  *-01-01 00:00:00
                  annually  →  *-01-01 00:00:00
                     *:2/3  →  *-*-* *:02/3:00
linux31systemd5
2015-04-16 12:45:00