Cron: Difference between revisions

From NixOS Wiki
imported>Sjau
No edit summary
imported>Sjau
No edit summary
Line 14: Line 14:
</syntaxHighlight>
</syntaxHighlight>


The above example would run the command <tt>date >> /tmp/cron.log</tt> as <tt>root</tt> user every <tt>5 minutes</tt> (indicated by <tt>*/5*</tt>.
The above example would run the command <tt>date >> /tmp/cron.log</tt> as <tt>root</tt> user every <tt>5 minutes</tt> (indicated by <tt>*/5*</tt>. For more information regarding the cronjob entries, see the link below.


==Loading environment==
==Loading environment==
Line 25: Line 25:


The <tt>. /etc/profile;</tt> part first sources the profile file and hence loading the environment. After that, the actual command is being run in the proper environment. The above entry would run the rss2email program every 10 minutes as user <tt>johndoe</tt>
The <tt>. /etc/profile;</tt> part first sources the profile file and hence loading the environment. After that, the actual command is being run in the proper environment. The above entry would run the rss2email program every 10 minutes as user <tt>johndoe</tt>
=See also=
* [https://linux.die.net/man/5/crontab crontab(5): tables for driving cron]


[[Category:Configuration]]
[[Category:Configuration]]

Revision as of 19:18, 17 February 2018

Using Cron

General

Cron is a very useful tool to run stuff at predefined times. Users, if allowed, can setup their own cron job, while the system crontab can be easily setup from the configuration.nix

  # Enable cron service
  services.cron = {
    enable = true;
    systemCronJobs = [
      "*/5 * * * *      root    date >> /tmp/cron.log"
    ];
  };

The above example would run the command date >> /tmp/cron.log as root user every 5 minutes (indicated by */5*. For more information regarding the cronjob entries, see the link below.

Loading environment

However, sometimes cron won't run because it's missing the according environment (as it is the case for rss2email as example). In that case you just have to source the profile file first before running the desired command, like in the example below:

      "*/10 * * * *   johndoe   . /etc/profile; /run/current-system/sw/bin/r2e run"

The . /etc/profile; part first sources the profile file and hence loading the environment. After that, the actual command is being run in the proper environment. The above entry would run the rss2email program every 10 minutes as user johndoe

See also