aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/cron/crontab
Commit message (Collapse)AuthorAgeFilesLines
* cron: respect PATH from login.confKyle Evans2020-03-301-17/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | As a followup to the use of login.conf environment vars (other than PATH) in cron, this patch adds PATH (and HOME) to the list of login.conf settings respected. The new logic is as follows: 1. SHELL is always _PATH_BSHELL unless explicitly overridden in the crontab file itself; no other settings are respected. This is unchanged. 2. PATH is taken from the first of: crontab file, login.conf, _PATH_DEFPATH 3. HOME is taken from the first of: crontab file, login.conf, passwd entry, unset 4. The current directory for invoking the command is taken from the crontab file's value of HOME (existing behavior), or the passwd entry, but not anywhere else (so it might not equal HOME if that was set in login.conf). Submitted by: Andrew Gierth <andrew_tao173.riddles.org.uk> Reviewed by: sigsys_gmail.com Differential Revision: https://reviews.freebsd.org/D23597 Notes: svn path=/head/; revision=359434
* cron(8): set the environment variables of the user and/or login classKyle Evans2020-02-051-2/+10
| | | | | | | | | | | | | | | Prior to processing environment variable set in the crontab file as those should be of higher precedent, pull in the user or login class environment. This is another supporting feature for allowing one to configure system-wide settings that may affect both regular cron jobs as well as services. This is the final part of D21481. Submitted by: Andrew Gierth <andrew_tao173.riddles.org.uk> Notes: svn path=/head/; revision=357565
* cron: add log suppression and mail suppression for successful runsKyle Evans2019-09-251-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds two new extensions to crontab, ported from OpenBSD: - -n: suppress mail on succesful run - -q: suppress logging of command execution The -q option appears decades old, but -n is relatively new. The original proposal by Job Snijder can be found here [1], and gives very convincing reasons for inclusion in base. This patch is a nearly identical port of OpenBSD cron for -q and -n features. It is written to follow existing conventions and style of the existing codebase. Example usage: # should only send email, but won't show up in log * * * * * -q date # should not send email * * * * * -n date # should not send email or log * * * * * -n -q date # should send email because of ping failure * * * * * -n -q ping -c 1 5.5.5.5 [1]: https://marc.info/?l=openbsd-tech&m=152874866117948&w=2 PR: 237538 Submitted by: Naveen Nathan <freebsd_t.lastninja.net> Reviewed by: bcr (manpages) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D20046 Notes: svn path=/head/; revision=352668
* cron(8): schedule interval jobs that get loaded during executionKyle Evans2019-04-201-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Jobs using the @<second> syntax currently only get executed if they exist when cron is started. The simplest reproducer of this is: echo '@20 root echo "Hello!"' >> /etc/cron.d/myjob myjob will get loaded at the next second==0, but this echo job will not run until cron restarts. These jobs are normally handled in run_reboot_jobs(), which sets e->lastexit of INTERVAL jobs to the startup time so they run 'n' seconds later. Fix this by special-casing TargetTime > 0 in the database load. Preexisting jobs will be handled at startup during run_reboot_jobs as normal, but if we've reloaded a database during runtime we'll hit this case and set e->lastexit to the current time when we process it. They will then run every 'n' seconds from that point, and a full restart of cron is no longer required to make these jobs work. Reported by: Juraj Lutter (otis_sk.freebsd.org) Reviewed by: allanjude, bapt, bjk (earlier version), Juraj Lutter MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D19924 Notes: svn path=/head/; revision=346427
* cron(8): Add MAILFROM ability for crontabsKyle Evans2019-04-151-1/+4
| | | | | | | | | | This changes the sender mail address in a similar fashion to how MAILTO may change the recipient. The default from address remains unchanged. MFC after: 1 week Notes: svn path=/head/; revision=346252
* Add new functionality and syntax to cron(1) to allow to run jobs at aGleb Smirnoff2018-06-071-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | given interval, which is counted in seconds since exit of the previous invocation of the job. Example user crontab entry: @25 sleep 10 The example will launch 'sleep 10' every 35 seconds. This is a rather useless example above, but clearly explains the functionality. The practical goal here is to avoid overlap of previous job invocation to a new one, or to avoid too short interval(s) for jobs that last long and doesn't have any point of immediate launch soon after previous run. Another useful effect of interval jobs can be noticed when a cluster of machines periodically communicates with a single node. Running the task time based creates too much load on the node. Running interval based spreads invocations across machines in cluster. Note that -j/-J won't help in this case. Sponsored by: Netflix Notes: svn path=/head/; revision=334817
* DIRDEPS_BUILD: Update dependencies.Bryan Drewery2017-10-311-1/+0
| | | | | | | Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=325188
* usr.sbin: normalize paths using SRCTOP-relative paths or :H when possibleEnji Cooper2017-03-041-1/+1
| | | | | | | | | | This simplifies make logic/output MFC after: 1 month Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=314659
* Add a 'force' option for non-interactive crontab removalConrad Meyer2016-12-202-5/+15
| | | | | | | | | | | | Add a '-f' option to force crontab '-r' to be non-interactive. Submitted by: Sam Gwydir <sam at samgwydir.com> Reviewed by: me, wblock (previous version) Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D8815 Notes: svn path=/head/; revision=310329
* cron: use existing maximum username constant MAXLOGNAMEEd Maste2016-09-021-1/+2
| | | | | | | | | | | | | | | | | Previously cron had its own maximum username length limit, which was smaller than the system's MAXLOGNAME. This could lead to crontab -u updating the wrong user's crontab (if the name was truncated, and matched another user). PR: 212305 Reported by: Andrii Kuzik Reviewed by: allanjude, jilles MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D7747 Notes: svn path=/head/; revision=305269
* crontab: ftruncate() with ftello() instead of ftell().Pedro F. Giffuni2016-02-161-1/+1
| | | | | | | Obtained from: OpenBSD (CVS rev. 1.47) Notes: svn path=/head/; revision=295672
* Add sbin and /usr/local directories to _PATH_DEFPATH.Jilles Tjoelker2016-01-051-2/+2
| | | | | | | | | | | | | | | | | | | | Set _PATH_DEFPATH to /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin. This is the path in the default class in the default /etc/login.conf, excluding ~/bin which would not be expanded properly in a string constant. For normal logins, _PATH_DEFPATH is overridden by /etc/login.conf, ~/.login_conf or shell startup files. _PATH_DEFPATH is still used as a default by execlp(), execvp(), posix_spawnp() and sh if PATH is not set, and by cron. Especially the latter is a common trap (most recently in PR 204813). PR: 204813 Reviewed by: secteam (delphij), alfred Notes: svn path=/head/; revision=293204
* crontab: properly free an entryPedro F. Giffuni2015-12-221-1/+1
| | | | | | | | | | This should close memory leak. Obtained from: OpenBSD (rev. 1.62) CID: 271773 Notes: svn path=/head/; revision=292606
* Add META_MODE support.Simon J. Gerraty2015-06-131-0/+21
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | Off by default, build behaves normally. WITH_META_MODE we get auto objdir creation, the ability to start build from anywhere in the tree. Still need to add real targets under targets/ to build packages. Differential Revision: D2796 Reviewed by: brooks imp Notes: svn path=/head/; revision=284345
| * dirdeps.mk now sets DEP_RELDIRSimon J. Gerraty2015-06-081-2/+0
| | | | | | | | Notes: svn path=/projects/bmake/; revision=284172
| * Merge sync of headSimon J. Gerraty2015-05-271-2/+1
| |\ | |/ |/| | | Notes: svn path=/projects/bmake/; revision=283595
| * Merge from head@274682Simon J. Gerraty2014-11-191-2/+0
| |\ | | | | | | | | | Notes: svn path=/projects/bmake/; revision=274683
| * \ Merge head from 7/28Simon J. Gerraty2014-08-193-2/+4
| |\ \ | | | | | | | | | | | | Notes: svn path=/projects/bmake/; revision=270164
| * | | Updated dependenciesSimon J. Gerraty2014-05-161-1/+0
| | | | | | | | | | | | | | | | Notes: svn path=/projects/bmake/; revision=266219
| * | | Updated dependenciesSimon J. Gerraty2014-05-101-0/+2
| | | | | | | | | | | | | | | | Notes: svn path=/projects/bmake/; revision=265802
| * | | Updated dependenciesSimon J. Gerraty2013-03-111-0/+1
| | | | | | | | | | | | | | | | Notes: svn path=/projects/bmake/; revision=248169
| * | | Updated dependenciesSimon J. Gerraty2013-02-161-2/+0
| | | | | | | | | | | | | | | | Notes: svn path=/projects/bmake/; revision=246868
| * | | Sync from headSimon J. Gerraty2012-11-042-2/+12
| |\ \ \ | | | | | | | | | | | | | | | Notes: svn path=/projects/bmake/; revision=242545
| * | | | Sync FreeBSD's bmake branch with Juniper's internal bmake branch.Marcel Moolenaar2012-08-221-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Requested by: Simon Gerraty <sjg@juniper.net> Notes: svn path=/projects/bmake/; revision=239572
* | | | | Convert usr.sbin to LIBADDBaptiste Daroussin2014-11-251-2/+1
| |_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | Reduce overlinking Notes: svn path=/head/; revision=275054
* | | | Revert r267233 for now. PIE support needs to be reworked.Bryan Drewery2014-08-191-2/+0
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. 50+% of NO_PIE use is fixed by adding -fPIC to INTERNALLIB and other build-only utility libraries. 2. Another 40% is fixed by generating _pic.a variants of various libraries. 3. Some of the NO_PIE use is a bit absurd as it is disabling PIE (and ASLR) where it never would work anyhow, such as csu or loader. This suggests there may be better ways of adding support to the tree. Many of these cases can be fixed such that -fPIE will work but there is really no reason to have it in those cases. 4. Some of the uses are working around hacks done to some Makefiles that are really building libraries but have been using bsd.prog.mk because the code is cleaner. Had they been using bsd.lib.mk then NO_PIE would not have been needed. We likely do want to enable PIE by default (opt-out) for non-tree consumers (such as ports). For in-tree though we probably want to only enable PIE (opt-in) for common attack targets such as remote service daemons and setuid utilities. This is also a great performance compromise since ASLR is expected to reduce performance. As such it does not make sense to enable it in all utilities such as ls(1) that have little benefit to having it enabled. Reported by: kib Notes: svn path=/head/; revision=270168
* | | use .Mt to mark up email addresses consistently (part2)Baptiste Daroussin2014-06-202-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | PR: 191174 Submitted by: Franco Fichtner <franco@lastsummer.de> Notes: svn path=/head/; revision=267668
* | | In preparation for ASLR [1] support add WITH_PIE to support building with -fPIE.Bryan Drewery2014-06-081-0/+2
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is currently an opt-in build flag. Once ASLR support is ready and stable it should changed to opt-out and be enabled by default along with ASLR. Each application Makefile uses opt-out to ensure that ASLR will be enabled by default in new directories when the system is compiled with PIE/ASLR. [2] Mark known build failures as NO_PIE for now. The only known runtime failure was rtld. [1] http://www.bsdcan.org/2014/schedule/events/452.en.html Submitted by: Shawn Webb <lattera@gmail.com> Discussed between: des@ and Shawn Webb [2] Notes: svn path=/head/; revision=267233
* | Second attempt to add @every_second keyword support. Due to multipleMaxim Sobolev2012-10-251-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | requests, default to the previous 60-seconds scheduling method unless there is any @every_second entries to conserve CPU cycles and power. This change also improves scheduling in the default mode by running as close to the beginning of the minnute as possible by replacing sleep(3) with nanosleep(2). Previously, the tasks would run anywhere within the first second of the minute and that offset drifted back and forth each time cron(8) was engaged. MFC after: 1 month Notes: svn path=/head/; revision=242101
* | Revert latest changes to cron, until better version is worked out (I hope).Maxim Sobolev2012-10-171-2/+0
| | | | | | | | | | | | | | Requested by: few Notes: svn path=/head/; revision=241649
* | Add per-second scheduling into the cron(8). Right now it'sMaxim Sobolev2012-10-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | only available via the new @every_second shortcut. ENOTIME to implement crontab(5) format extensions to allow more flexible scheduling. In order to address some concerns expressed by Terry Lambert while discussing the topic few years ago, about per-second cron possibly causing some bad effects on /etc/crontab by stat()ing it every second instead of every minute now (i.e. atime update), only check that database needs to be reloaded on every 60-th loop run. This should be close enough to the current behaviour. Add "@every_minute" shortcut while I am here. MFC after: 1 month Notes: svn path=/head/; revision=241576
* | Rework all non-contributed files that use `struct timezone'.Ed Schouten2012-09-011-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This structure is not part of POSIX. According to POSIX, gettimeofday() has the following prototype: int gettimeofday(struct timeval *restrict tp, void *restrict tzp); Also, POSIX states that gettimeofday() shall return 0 (as long as tzp is not used). Remove dead error handling code. Also use NULL for a nul-pointer instead of integer 0. While there, change all pieces of code that only use tv_sec to use time(3), as this provides less overhead. Notes: svn path=/head/; revision=239991
* | Add a one second sleep before touching the spool directory. If the touchJohn Baldwin2012-07-021-0/+9
|/ | | | | | | | | | | | occurs in the same second as the earlier operations to create the temporary file and the cron(8) daemon is rescans the spool directory during that second, then the daemon may miss a cron edit and not properly update its internal database. MFC after: 1 month Notes: svn path=/head/; revision=238024
* As cron(8) is started with '-s' by default, timezones that observeGlen Barber2012-04-281-4/+15
| | | | | | | | | | | | | | | | DST should not need to worry about scheduling jobs when the DST time changes. Rather than removing the BUGS section in crontab(5) regarding this, note that disabling '-s' may still cause jobs to be executed twice or not at all. PR: 166318 Submitted by: Florian k Unglaub (f.unglaub%googlemail!com) MFC After: 1 week Notes: svn path=/head/; revision=234775
* Drop setuid status while doing file operations to prevent potentialXin LI2012-02-271-12/+21
| | | | | | | | | | | information leak. This changeset is intended to be a minimal one to make backports easier. Reviewed by: kevlo, remko MFC after: 1 week Notes: svn path=/head/; revision=232202
* Since April 2, 2006, Indiana has observed DST.Sean Farley2012-01-281-2/+2
| | | | | | | MFC after: 5 days Notes: svn path=/head/; revision=230655
* Point out that @reboot runs at every cron startup, not just systemWarren Block2011-11-251-1/+1
| | | | | | | | | | | | startup. Discussed on: hackers@ Approved by: gjb (mentor) MFC after: 1 week Notes: svn path=/head/; revision=227981
* List /var/cron/tabs in FILES and add descriptions for the other entries.Christian Brueffer2010-05-141-1/+5
| | | | | | | | | | PR: 145912 Submitted by: Julian H. Stacey <jhs@berklix.com> Obtained from: OpenBSD MFC after: 1 week Notes: svn path=/head/; revision=208054
* Fix typo.Sergey Skvortsov2008-12-011-1/+1
| | | | | | | Approved by: ru Notes: svn path=/head/; revision=185525
* Be more precise and use sizeof(tn)Matteo Riondato2008-11-181-1/+1
| | | | | | | | | Pointed out by: glewis@ MFC after: 3 days Notes: svn path=/head/; revision=185041
* Use WARNS?= instead of WARNS=Matteo Riondato2008-11-181-1/+1
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=185040
* Make usr.sbin/cron/crontab and usr.sbin/cron/lib WARNS=3 cleanMatteo Riondato2008-11-102-14/+12
| | | | | | | | | Tested with: make universe MFC after: 3 days Notes: svn path=/head/; revision=184809
* Revert to previous revision.Matteo Riondato2008-11-091-23/+0
| | | | | | | | | I should not commit anything at 3.50 AM. In addition to danfe's comments, I got others. I'll work on a better version of the patch. Notes: svn path=/head/; revision=184784
* Don't leave files in /var/cront/tabs when interruptedMatteo Riondato2008-11-091-0/+26
| | | | | | | | PR: 17363 MFC after: 3 days Notes: svn path=/head/; revision=184780
* Be paranoid and use snprintfMatteo Riondato2008-11-091-7/+7
| | | | | | | | | PR: bin/122137 Submitted by: Steven Kreuzer <skreuzer@exit2shell.com> MFC after: 3 days Notes: svn path=/head/; revision=184779
* Be paranoid and zero out passwdMatteo Riondato2008-11-061-0/+2
| | | | | | | | | | PR: 122070 Submitted by: Steven Kreuzer <skreuzer@exit2shell.com> Reminded by: gnn@ MFC after: 3 days Notes: svn path=/head/; revision=184706
* Cleanup of userland __P useKevin Lo2007-11-071-7/+7
| | | | Notes: svn path=/head/; revision=173412
* Use a #define to refer to /etc/crontab.Ruslan Ermilov2006-09-031-2/+2
| | | | Notes: svn path=/head/; revision=161964
* /etc/crontab is similar enough to parse as correct if you runBrooks Davis2006-01-101-0/+4
| | | | | | | | | | | | "crontab /etc/crontab", but not the same format due to the who field. Add some limited anti-foot-shooting support and refuse to load /etc/crontab as someone's crontab. Users wishing shoot their foot in this manner may copy /etc/crontab elsewhere. :) MFC After: 1 week Notes: svn path=/head/; revision=154166
* Mention the default value of PATH and that it may be overridden.Christian Brueffer2005-07-311-2/+7
| | | | | | | | Submitted by: Roman Divacky MFC after: 3 days Notes: svn path=/head/; revision=148595