digitorum.ru

Как меня найти

Профиль

icq: 4415944

Обновляем crontab через djem

djemscript, nix

Не буду описывать что такое дизайн- и контент-шаблоны, будем считать что об этом уже все изветсно.

Нам потребуется два типа документов. Назовем их "Кронтаб / Раздел" и "Кронтаб / Запись".

Для "записи" делаем контент-шаблон вида:

и дизайн-шаблон (код специально оформлен без отступов, чтобы сформировать валидный файл):

<file name="/tmp/crontab.txt">
# generated via cms djem
<foreach name="x" path="<#_parent_id#>.$" sort="_sort">
<foreach[x].minute><if <foreach[x].minuteSlash>>/<foreach[x].minuteSlash></if> <foreach[x].hour><if <foreach[x].hourSlash>>/<foreach[x].hourSlash></if> <foreach[x].day><if <foreach[x].daySlash>>/<foreach[x].daySlash></if> <foreach[x].month><if <foreach[x].monthSlash>>/<foreach[x].monthSlash></if> <foreach[x].weekday><if <foreach[x].weekdaySlash>>/<foreach[x].weekdaySlash></if> <foreach[x].username> <foreach[x].interpritator> <foreach[x]._name.replace('::documentRoot::', <['main.system.php.config'].documentRoot>)>

</foreach>
</file>

 

Для "раздела" делаем очень большой дизайн-шаблон:

<exec name=e cmd="crontab.sh">

 

Файлики генерим в документах, так как сначала выполняются все действия, а потом записываются файлы.

То есть если вызов плагина и генерацию файла поместить в один дизайн-шаблон, то сначала вызовется плагин, а потом запишется файл. Нам надо наоборот.

Исходный код плагина:

/bin/sh
crontab <['main.system.php.config'].documentRoot>/tmp/crontab.txt
rm -f <['main.system.php.config'].documentRoot>/tmp/crontab.txt

 

Warning! Этот плагин обновит кронтаб пользователя, под которым работает djem.

Возможно будет интересно: