I want to write a script that add a cron job to my crontab but without user intervention like editing a file using crontab -e. Is there a way to programatically manipulate the cron jobs from command line? Any suggestion on how to do that? Thanks in advance.
Asked
Active
Viewed 1.4k times
10
Ither
- 203
- 1
- 2
- 6
-
1`crontab` uses the values of the `VISUAL` and `EDITOR` variables to determine the program which will edit the crontab - the variables can contain, for example, the path to a script, or shell commands, using which you can programmatically edit it. See for example, http://unix.stackexchange.com/a/179445/70524 using this to edit suoders. – muru Feb 25 '15 at 14:12
2 Answers
17
To install a crontab:
echo "1 1 * * * test" | crontab -
should do the trick.
NOTICE that this substitutes the whole crontab. You have to save the value it had with crontab -l if you just want to add/edit things. For example
(crontab -l && echo "1 1 * * * test") | crontab -
will add the line to your crontab.
Rmano
- 31,627
- 16
- 118
- 187
-
1"crontab -l" produces on some linux distros a warning message if you have no crontabs. So this will concatenate the warning as a cronjob. Use "crontab -l 2>/dev/null" instead. – Niels Dec 08 '20 at 07:50
0
How about the following:
crontab -l | some-editing-command | EDITOR=cat crontab -e
The first part of the pipe lists the current crontab, the second part is supposed to modify it in a sensible way, and the third part reinstalls it using cat as the "editor", as suggested by @muru.
krlmlr
- 3,292
- 4
- 33
- 55
-
You do not need to redefine `EDITOR`. Just do: `crontab -l | some-editing-command | crontab -` – pabouk - Ukraine stay strong Feb 07 '23 at 11:06