How to make a command run everyday at a specific time?
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.
Use crontab. As Mint is based on Ubuntu, check out the documentation here: https://help.ubuntu.com/community/CronHowto
You can also use SystemD timers, which are (in my opinion) easier to manage
Crontab is deprecated,theres a better way now. Dont ask me though because im working on servers that havent had an upgrade in 10+ years
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.
You mean running systemd timers? Yes, they are great, but for a beginner I think understanding crontabs is still better.
Also, who said crontabs are deprecated? Do you have a source for that?
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:
this will append the current date/time once a minute (
*/1
) to a file in your home dir. You can check if it works withcat ~/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:
0 22 * * * /usr/bin/sct 2750