Значи, като редактирам кода след LOCALTIME
Не "след", а "от" - редът, в който се задава променливата LOCALTIME също отпада.
GeSHi (Bash):
/usr/bin/crontab -l | { cat; echo "$minute $hour * * * /пълен/път/до/sunset_redshiftgui.sh"; } | /usr/bin/crontab -
Това е редът в първия скрипт, който ще добавя подобна задача в crontab
13 20 * * * /пълен/път/до/sunset_redshiftgui.sh
която ще изпълнява втория скрипт в конкретните за деня час и минута на залеза (в примера се задава час 20:13). Ето редът от bash кода на части, за да го разбереш
GeSHi (Bash):
/usr/bin/crontab -l
Това изкарва пълен списък с текущо наличните задачи в crontab.
GeSHi (Bash):
{ cat; echo "$minute $hour * * * /пълен/път/до/sunset_redshiftgui.sh"; }
Това взема подадения текст на списъка (командата cat) и добавя към него ред със задачата, която ще извиква втория скрипт.
GeSHi (Bash):
/usr/bin/crontab -
Това налива целия получен текст (досегашното съдържание на crontab плюс новата задача) в crontab.
Правата черта (pipe, "|") между частите служи за препращане на изхода от предходната към следващата част за обработка.
Когато часът настъпи и crontab изпълни втория скрипт, скриптът си прави неговите действия по включване на нужното приложение и накрая с този ред
GeSHi (Bash):
/usr/bin/crontab -l | grep -v sunset_redshiftgui | /usr/bin/crontab -
се премахва задачата, включила този скрипт - вече ще е излишна, тъй като на следващия ден задачата ще трябва да се изпълни с друг час и за добавянето ѝ ще се погрижи първият скрипт. Първата и третата част от този ред вече ти ги обясних по-горе, а втората част
GeSHi (Bash):
grep -v sunset_redshiftgui
указва да се вземе целият текст от списъка с cron задачи без редовете, съдържащи текста "sunset_redshiftgui" (името на втория скрипт). Така премахваме от списъка cron задачата с втория скрипт и наливаме изчистения списък в crontab.
Когато пак дойде обяд, първият скрипт ще добави cron задача за изпълнението на втория скрипт с конкретния за деня час на залеза, и когато дойде часът на залеза и вторият скрипт се изпълни, той ще се погрижи да премахне собствената си cron задача, и т.н.