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.
Yes, it’s usually still available, but systemd timers are the more “modern” way, which is why distros like Arch use them by default:
https://wiki.archlinux.org/title/Cron
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…
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?
Idk i remember reading that theres a new way. Maybe it isnt deprecated? Yes systemd timers is the new way
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.
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 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