forked from andonome/lk
		
	fix crontabe
This commit is contained in:
		| @@ -4,32 +4,26 @@ tags: [ "Documentation", "Basics" ] | |||||||
| --- | --- | ||||||
| # Cron | # Cron | ||||||
|  |  | ||||||
| Various services from cron exist, e.g. | The crontab program might have various names, like `cronie` or `crond`. | ||||||
|  |  | ||||||
| > sudo apt -y install cron | > sudo apt search -n ^cron | ||||||
|  |  | ||||||
| Start the cronie with | Once installed, search for the service name, and start it. | ||||||
|  |  | ||||||
|  | > sudo systemctl list-unit-files | grep cron | ||||||
|  |  | ||||||
| > sudo systemctl enable --now cron | > sudo systemctl enable --now cron | ||||||
|  |  | ||||||
| Specify a cron job with: | You can *e*dit your crontab with: | ||||||
|  |  | ||||||
| > cron -e | > crontab -e | ||||||
|  |  | ||||||
| You can run a script with: |  | ||||||
|  |  | ||||||
| */10 * * * * /home/pi/script.sh | ``` | ||||||
|  |  | ||||||
| ... which would run every 10 minutes. | 39 */3 * * * /usr/bin/updatedb | ||||||
|  |  | ||||||
| To run something as root, do: |  | ||||||
|  |  | ||||||
| > sudo crontab -e |  | ||||||
|  |  | ||||||
| For example, you can update the database, meaning searches with 'locate' command will be faster. |  | ||||||
|  |  | ||||||
| > */30 * * * * /usr/bin/updatedb |  | ||||||
|  |  | ||||||
|  | ``` | ||||||
| ## Syntax | ## Syntax | ||||||
|  |  | ||||||
| `* * * * *` | `* * * * *` | ||||||
| @@ -49,9 +43,70 @@ Doing the same thing, but only in February, would be: | |||||||
|  |  | ||||||
| `0 15 * 2 7` | `0 15 * 2 7` | ||||||
|  |  | ||||||
| # Testing with runparts | ### Full Paths | ||||||
|  |  | ||||||
|  | Executing something requires the full path to where it is, so you cannot simply use `apt update -y`, because cron does not know where `apt` is. | ||||||
|  | Instead, find out where it is: | ||||||
|  |  | ||||||
|  | > type -P apt | ||||||
|  |  | ||||||
|  | `/usr/bin/apt` | ||||||
|  |  | ||||||
|  | Then put that into the crontab: | ||||||
|  |  | ||||||
|  | > sudo crontab -e | ||||||
|  |  | ||||||
|  | `40 */3 * * * /usr/bin/apt update -y` | ||||||
|  |  | ||||||
|  | This will run `apt update -y` as root every 3 hours, at 40 minutes past the hour, e.g. 00:40, 03:40, 06:40. | ||||||
|  |  | ||||||
|  | ## Directories | ||||||
|  |  | ||||||
|  | You can execute a script as root by putting it into a directory, instead of in the tab. | ||||||
|  | Look at the available cron directories: | ||||||
|  |  | ||||||
|  | > ls /etc/cron.\* | ||||||
|  |  | ||||||
|  | ### Testing with runparts | ||||||
|  |  | ||||||
| Run-parts runs all executable scripts in a directory. | Run-parts runs all executable scripts in a directory. | ||||||
|  |  | ||||||
| > run-parts /etc/cron.hourly | > run-parts /etc/cron.hourly | ||||||
|  |  | ||||||
|  | ## Tips | ||||||
|  |  | ||||||
|  | ### Variables | ||||||
|  |  | ||||||
|  | Add your `$HOME` to crontab to use scripts. | ||||||
|  | First add `HOME=/home/user`, then you can use syntax like this: | ||||||
|  |  | ||||||
|  | 0 * * * * $HOME/.scripts/myScript.sh | ||||||
|  |  | ||||||
|  | *Remember to test the script by executing that line first*: | ||||||
|  |  | ||||||
|  | > $HOME/.scripts/myScript.sh | ||||||
|  |  | ||||||
|  | You can also add your regular path to your crontab as a variable (see example below). | ||||||
|  | If you're using vim as the editor, just run this at the top of your crontab: | ||||||
|  |  | ||||||
|  | > :r!echo $PATH | ||||||
|  |  | ||||||
|  | ### Location | ||||||
|  |  | ||||||
|  | The crontab files are in `/var/spool/cron/`, so you can backup or restore them. | ||||||
|  |  | ||||||
|  | # Example | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | HOME=/home/user | ||||||
|  | PATH=/usr/condabin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/user/.local/bin:/home/user/.scripts/:/home/user/.local/bin:/home/user/.scripts/ | ||||||
|  |  | ||||||
|  | 1 0 1 * *    /usr/bin/mkdir -p $HOME/arc/$(date +%Y/%m) | ||||||
|  |  | ||||||
|  | 18 0 1 */3 * $HOME/.scripts/mail-clean.sh | ||||||
|  |  | ||||||
|  | * * * * * ping -c 1 home || mail-pull.sh | ||||||
|  |  | ||||||
|  | 50 18 * * * /usr/bin/timeout 30m /usr/bin/syncthing | ||||||
|  |  | ||||||
|  | ``` | ||||||
|   | |||||||
| @@ -1,33 +0,0 @@ | |||||||
| --- |  | ||||||
| title: "cronie" |  | ||||||
| tags: [ "Documentation", "System" ] |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| Various services from cron exist, e.g. |  | ||||||
|  |  | ||||||
| > sudo apt -y install cronie |  | ||||||
|  |  | ||||||
| start the cronie with |  | ||||||
|  |  | ||||||
| > sudo Systemctl start cronie |  | ||||||
|  |  | ||||||
| start a cron with  |  | ||||||
|  |  | ||||||
| > cron -e |  | ||||||
|  |  | ||||||
| You can run a script with: |  | ||||||
|  |  | ||||||
| */10 * * * * /home/pi/script.sh |  | ||||||
|  |  | ||||||
| ... which would run every 10 minutes. |  | ||||||
|  |  | ||||||
| To run something as root, do: |  | ||||||
|  |  | ||||||
| > sudo crontab -e |  | ||||||
|  |  | ||||||
| For example, you can update the database, meaning searches with 'locate' command will be faster. |  | ||||||
|  |  | ||||||
| > */30 * * * * /usr/bin/updatedb |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user