From 4c213d6cf416917c61f82d8bee795b8f3a4c5372 Mon Sep 17 00:00:00 2001 From: WaLyong Cho Date: Tue, 9 Dec 2014 16:07:16 +0900 Subject: run: introduce timer support option Support timer options --on-active=, --on-boot=, --on-startup=, --on-unit-active=, --on-unit-inactive=, --on-calendar=. Each options corresponding with OnActiveSec=, OnBootSec=, OnStartupSec=, OnUnitActiveSec=, OnUnitInactiveSec=, OnCalendar= of timer respectively. And OnCalendar= and WakeSystem= supported by --timer-property= option like --property= of systemd-run. And if --unit= option and timer options are specified the command can be omitted. In this case, systemd-run assumes the target service is already loaded. And just try to generate transient timer unit only. --- man/systemd-run.xml | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 89 insertions(+), 5 deletions(-) (limited to 'man') diff --git a/man/systemd-run.xml b/man/systemd-run.xml index 28a9878b83..b9cec91d15 100644 --- a/man/systemd-run.xml +++ b/man/systemd-run.xml @@ -45,7 +45,7 @@ along with systemd; If not, see . systemd-run - Run programs in transient scope or service units + Run programs in transient scope or service or timer units @@ -56,15 +56,23 @@ along with systemd; If not, see . ARGS + + systemd-run + OPTIONS + TIMER OPTIONS + COMMAND + ARGS + Description - systemd-run may be used to create and start - a transient .service or a - .scope unit and run the specified - COMMAND in it. + systemd-run may be used to create and + start a transient .service or a transient + .timer or a .scope unit + and run the specified COMMAND in + it. If a command is run as transient service unit, it will be started and managed by the service manager like any other service, @@ -74,6 +82,18 @@ along with systemd; If not, see . will start the service asynchronously in the background and immediately return. + If a command is run with timer options, transient timer unit + also be created with transient service unit. But the transient + timer unit is only started immediately. The transient service unit + will be started when the transient timer is elapsed. If + is specified with timer options, the + COMMAND can be omitted. In this case, + systemd-run assumes service unit is already + loaded and creates transient timer unit only. To successfully + create timer unit, already loaded service unit should be specified + with . This transient timer unit can + activate the existing service unit like any other timer. + If a command is run as transient scope unit, it will be started directly by systemd-run and thus inherit the execution environment of the caller. It is however @@ -210,6 +230,54 @@ along with systemd; If not, see . + + + + + + + + Defines monotonic timers relative to different + starting points. Also see OnActiveSec=, + OnBootSec=, + OnStartupSec=, + OnUnitActiveSec= and + OnUnitInactiveSec= in + systemd.timer5. This + options have no effect in conjunction with + . + + + + + + + Defines realtime (i.e. wallclock) timers with + calendar event expressions. Also see + OnCalendar= in + systemd.timer5. This + option has no effect in conjunction with + . + + + + + + + Sets a timer unit property for the timer unit + that is created. It is similar with + but only for created timer + unit. This option only has effect in conjunction with + , , + , + , + , + . This takes an assignment in + the same format as + systemctl1's + set-property command. + + @@ -250,6 +318,21 @@ Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20. property. # systemd-run -p BlockIOWeight=10 updatedb + + The following command will touch a file after 30 seconds. + + # date; systemd-run --on-active=30 --timer-property=AccuracySec=100ms /bin/touch /tmp/foo +Mon Dec 8 20:44:24 KST 2014 +Running as unit run-71.timer. +Will run as unit run-71.service. +# journalctl -b -u run-73.timer +-- Logs begin at Fri 2014-12-05 19:09:21 KST, end at Mon 2014-12-08 20:44:54 KST. -- +Dec 08 20:44:38 container systemd[1]: Starting /bin/touch /tmp/foo. +Dec 08 20:44:38 container systemd[1]: Started /bin/touch /tmp/foo. +# journalctl -b -u run-73.service +-- Logs begin at Fri 2014-12-05 19:09:21 KST, end at Mon 2014-12-08 20:44:54 KST. -- +Dec 08 20:44:48 container systemd[1]: Starting /bin/touch /tmp/foo... +Dec 08 20:44:48 container systemd[1]: Started /bin/touch /tmp/foo. @@ -263,6 +346,7 @@ Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20. systemd.slice5, systemd.exec5, systemd.resource-control5, + systemd.timer5, machinectl1 -- cgit v1.2.3-54-g00ecf