This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| troubleshooting:cronstoppedworkingonmacbook [2023/02/25 16:42] – kamaradski | troubleshooting:cronstoppedworkingonmacbook [2023/03/07 22:51] (current) – [final thoughts] kamaradski | ||
|---|---|---|---|
| Line 16: | Line 16: | ||
| yes, as expected once for root, and once for the local user: | yes, as expected once for root, and once for the local user: | ||
| <code bash> | <code bash> | ||
| - | ps aux | grep cron | + | $ ps aux | grep cron |
| root | root | ||
| kamaradski | kamaradski | ||
| Line 25: | Line 25: | ||
| no: | no: | ||
| <code bash> | <code bash> | ||
| - | cat / | + | $ cat / |
| </ | </ | ||
| However, this is not a good thing as i would expect also a note when crons are getting executed successfully | However, this is not a good thing as i would expect also a note when crons are getting executed successfully | ||
| ===== do we have valid crons? ===== | ===== do we have valid crons? ===== | ||
| + | |||
| <code bash> | <code bash> | ||
| - | crontab -l | + | $ crontab -l |
| 0 6 * * * cd / | 0 6 * * * cd / | ||
| 5 6 * * * cd / | 5 6 * * * cd / | ||
| + | </ | ||
| + | |||
| + | Can we run the command from our current user? => yes: | ||
| + | |||
| + | <code bash> | ||
| + | $ cd / | ||
| + | 12345689% | ||
| </ | </ | ||
| Line 39: | Line 47: | ||
| <code bash> | <code bash> | ||
| - | which go | + | $ which go |
| / | / | ||
| - | crontab -e | + | $ crontab -e |
| crontab: installing new crontab | crontab: installing new crontab | ||
| - | crontab -l | + | $ crontab -l |
| 0 6 * * * cd / | 0 6 * * * cd / | ||
| 5 6 * * * cd / | 5 6 * * * cd / | ||
| </ | </ | ||
| - | Lets see tomorrow if this has fixed the issue or not. | + | And yay what do you know: this fixed my issue :) |
| + | |||
| + | ===== have a look at the file permissions ===== | ||
| + | |||
| + | > By default, the / | ||
| + | |||
| + | <code bash> | ||
| + | $ ls -l / | ||
| + | -rwxr-xr-x 1 root wheel 205440 Jan 11 08:03 / | ||
| + | |||
| + | sudo ls -l / | ||
| + | Password: | ||
| + | total 8 | ||
| + | -rw-------@ 1 root wheel 420 Feb 25 17:40 kamaradski | ||
| + | </ | ||
| + | |||
| + | This is fine, my particular | ||
| + | |||
| + | ===== why is cron behaving differently? | ||
| + | |||
| + | The cron daemon runs in the background of a system and executes scheduled tasks based on a predefined schedule. These tasks are executed in a separate environment, | ||
| + | |||
| + | When a user logs into a system, they are assigned a shell, which defines their environment variables, such as PATH, HOME, and others. These environment variables are specific to the user's session and are not shared with other users or processes running on the system. | ||
| + | |||
| + | In contrast, the environment in which cron jobs run is defined by the cron daemon itself. The cron daemon sets its own environment variables, which are different from those of the user who is logged in. This means that the cron jobs may not have access to the same resources or settings as the user who is logged in, such as environment variables or configuration files. | ||
| + | |||
| + | Therefore, it's essential to consider the environment in which cron jobs run when scheduling tasks. It's also important to ensure that the necessary environment variables and resources are available to the cron jobs to ensure that they execute correctly. This can include setting the appropriate environment variables within the cron job itself or modifying the system' | ||
| + | |||
| + | So obviously things like the below will not work: | ||
| + | * Any EnvVar you have set under your user environment via for example '' | ||
| + | * Use of standard variables like '' | ||
| + | * $PATH is also empty, so this is why I needed to specify the full path for the Go application in the example above | ||