How to make a command run everyday at a specific time?
I am on Mint XFCE and Redshift is just so inconsistent and I have tried its forks, also inconsistent. So instead I have been using sct in the terminal to adjust the temperature, and have set a command that resets it back to normal every time that I log on. However, I was wondering if there is a way to make it so that "sct 2750" runs every day at 10 pm or during a specific period of time.
Edit: I figured out the solution which was to create a crontab with the following line in it: 0 22 * * * env DISPLAY=:0 XAUTHORITY=$HOME/.Xauthority /usr/bin/sct 2750
So I attempted to run a crontab and for whatever reason it does not do anything. What I put was * * * * * /usr/bin/sct 2750 after sudo crontab -e just to see if it even runs but it does not do anything. I rewrote and added multiple crontabs but no results. Any help would be appreciated.
For the "schedule expression" (the * * * * * part), try https://crontab.guru/. Some distributions have shortcut expressions like @hourly or @daily so you don't have to type * */1 * * * etc.
The crontab generally has a header that shows the columns, but if not, they're: m h dom mon dow command.
From * * * * * /usr/bin/sct 2750 I'm guessing you want to run every minute. If that's the case, as another commented pointed out, try */1 * * * * /usr/bin/sct 2750, meaning every 1 minute.
OK... So, just to test, edit your crontab and run a basic command:
*/1 * * * * date >> ~/date.log
this will append the current date/time once a minute (*/1) to a file in your home dir. You can check if it works with cat ~/date.log
If that works, then try again with your command. I see you used the full path to it, that's a good thing. Also, what does that command do if you run it manually?
To run the command at 10 PM every day, you should have it like this:
My servers are up to date and there is not a single Linux distro that has removed cron or marked it for removal yet. Probably will stay that way for a long time.
that's because we've understood there's a line between what is reasonable for most users to implement - cron - and what is more reasonable for the OS to implement - systemd timers.
you don't want a user who doesn't know what they're doing to accidentally brick a key OS timer (for instance, when they're setting up their own), so systemd helps to segregate while still allowing experienced users to easily stop timers.
meanwhile, for users, cron is much easier to work with...
systemd timers are not actually universal. not everyone uses systemd, some use sysvinit, openrc, etc. systemd timers are also much more difficult to set up.
cron is not "deprecated" and is still widely used industrially and locally.