Так вышло что за долгие годы в линуксе я не пользовался подобными инструментами, и ничего о них не знаю. Но недавно по работе понадобилась автоматизация различных задач, да и захотелось тем же самым заняться дома. Подумал что если что-то делаю изо дня в день, то наверно неплохо бы автоматизировать это и сэкономить время на более важных делах. Часть задач требует запуска графических программ, а часть может выполняться в консоли, и как это все сделать пока непонятно.
Хотелось бы получить комментарий тех кто в теме, по каждому из пунктов, которые я напишу, потому что сам я, повторюсь, в таких программах не мастер.
1) Начал конечно с GUI. В КДЕ есть встроенный автозапуск приложений. «Параметры системы» > «Запуск и завершение» > «Автозапуск». Там можно добавить приложение и сценарий. Но как это работает для меня непонятно. Допустим указал путь до нужного графического приложения. А что за сценарий? На каком он языке, как его писать? Он сможет управлять задачами тех же КДЕ-приложений, чтобы они выполняли нужный набор действий после запуска? Где можно найти официальную инструкцию к этой опции в КДЕ?
2) Потом нашел вот такое, называется KTimer. Это тоже программа для КДЕ, только как мне показалось она еще более слабая, чем встроенное средство. Вроде как просто запускалка программ, даже без сценариев. А что толку просто запускать программы, чтобы они просто висели? Если кто-то пользовался, подскажите для чего оно?
https://www.kde.org/applications/utilities/ktimer/
3) Потом я нашел cron. Мощный консольный планировщик задач, и говорят не очень сложный в использовании. Уже было начал разбираться, как вдруг прочел, что cron давно deprecated, тем более в системах на systemd. А значит в ubuntu его смысла использовать нет, и тратить время на его освоение тоже, тем более что systemd уже установлен и все это в нем есть. Так ли это, что нет смысла тратить на него время?
4) Начал гуглить про systemd.timers, чем он отличается от cron, и нагуглил вот такое.
Here are some points about those two:
1. checking what your cron job really does can be kind of a mess, but all systemd timer events are carefully logged in systemd journal like the other systemd units based on the event that makes things much easier.
2. systemd timers are systemd services with all their capabilities for resource management, IO CPU scheduling, ... There is a list :
- systemcall filters
- user/group ids
- membershipcontrols
- nice value
- OOM score
- IO scheduling class and priority
- CPU scheduling policy CPU
- affinity umask
- timer slacks
- secure bits
- network access and ,...
3. with the dependencies option just like other systemd services there can be dependencies on activation time.
4. Units can be activated in different ways, also combination of them can be configured. services can be started and triggered by different events like user, boot, hardware state changes or for example 5mins after some hardware plugged and ,...
5. much easier configuration some files and straight forward tags to do variety of customizations based on your needs with systemd timers.
6. Easily enable/disable the whole thing with:
systemctl enable/disable
and kill all the job's children with:
systemctl start/stop
7. systemd timers can be scheduled with calenders and monotonic times, which can be really useful in case of different timezones and ,...
8. systemd time events (calendar) are more accurate than cron (seems 1s precision)
9. systemd time events are more meaningful, for those recurring ones or even those that should occur once, here is an example from the document:
Sat,Thu,Mon-Wed,Sat-Sun → Mon-Thu,Sat,Sun *-*-*00:00:00 Mon,Sun 12-*-* 2,1:23 → Mon,Sun 2012-*-* 01,02:23:00 Wed *-1 → Wed *-*-01 00:00:00 Wed-Wed,Wed *-1 → Wed *-*-01 00:00:00 Wed, 17:48 → Wed *-*-* 17:48:00
10. From the CPU usage view point systemd timer wakes the CPU on the elapsed time but cron does that more often.
11. Timer events can be scheduled based on finish times of executions some delays can be set between executions.
12. The communication with other programs is also notable sometimes it's needed for some other programs to know timers and the state of their tasks.
Вобщем, сложилось впечатление, что плюсов у systemd.timers куда больше, чем минусов. Так ли это?
И везде советуют в принципе systemd.timers.
https://unix.stackexchange.com/questions/278564/cron-vs-systemd-timers/281203
https://mjanja.ch/2015/06/replacing-cron-jobs-with-systemd-timers/
https://medium.com/horrible-hacks/using-systemd-as-a-better-cron-a4023eea996d
Подскажите, что лучше использовать, а так же по первым 2м пунктам (планировщики с графической оболочкой). И есть ли еще какие-то варианты, может еще какие планировщики?
Перемещено tailgunner из linux-general