systemd 自身定义了三种时间格式:
- Time Span(时间段)
- Timestamp(时间戳)
- Calendar Event(日程表)
time span
time span 是由数值和时间单位组成,以空格分开:
2h 30min
上面代表 2 小时 30 分钟,共计 150 分钟。
时间单位如下:
- usec, us
- msec, ms
- seconds, second, sec, s
- minutes, minute, min, m
- hours, hour, hr, h
- days, day, d
- weeks, week, w
- months, month
- years, year, y
如果不指定时间单位,默认为秒。
下面的 time span 格式都是允许的:
2 h
2hours
48hr
1y 12month
55s500ms
300ms20s 5day
timestamp
timstamp 代表的是一个具体的时间点,例如:
Fri 2012-11-23 23:02:15 CET
timestamp 不仅可以向上面那样表示,
也可以用 now
、today
、 yesterday
、 tomorrow
表示,
又可以用 +
或者 -
后跟一个 time span,表示当前时间加上或减去指定的 time span,可用后缀 left
或 ago
替代,
最后可以用 @
后跟一个数值代表一个 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 格式规则如下:
- 代表星期的部分可以省略,如果指明,必须用缩写(Web)或不缩写(Wednesday)两种形式
- 日期和时间的每一部分均可以用
*
代替,表示符合要求的任意值,也可以用由逗号分割的列表表示 - 日期和时间的数值部分可以后跟
/
和一个迭代值,代表这个数值以及这个数值和迭代值的整数倍之和(合法的)
下面是合法的 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