Cronjob (ы) для нескольких пользователей

У меня есть следующий случай, который может быть простым, но я не знаю, какой путь логически корректен и как это делается.

У меня есть несколько сайтов в /www/ каждый сайт в собственном каталоге и пользователе

 /www/site1/ // user site1 /www/site2/ // user site2 /www/site3/ // user site3 

Теперь я хочу сделать cronjob, который запустит PHP-скрипт и обновит одну таблицу в базе данных каждого сайта.

Сценарий и фактическая работа не являются проблемой. Проблема в том, как это сделать правильно? Как создать для каждой пользовательской работы? Cronjob будет работать каждые полчаса, если это имеет значение.

Добавьте нового пользователя – назовем их allsites .

Добавьте пользователя allsites в /etc/group для пользователей site3 и site3 .

Запустите скрипт как пользователь allsites .

Затем запустите один скрипт с различными деталями на сайт, включенный в скрипт. Для (очень простой) пример. Копия script-name.sh находится в каждом каталоге $LIST :

 #!/bin/sh # The base location of each site LIST="/path/to/site1 /path/to/site2 /path/to/site3" # Place script-name.sh in each of the above paths SCRIPT_NAME="script-name.sh" for i in $LIST do sh "${i}/${SCRIPT_NAME}" done 

Другим основным примером может быть следующее. Один скрипт выберет пользовательскую конфигурацию.

 #!/bin/sh # The base location of each site LIST="/path/to/site1 /path/to/site2 /path/to/site3" # Place details for each site in config.sh in each of the above paths CONFIG="config.sh" for i in $LIST do # Pull in the config for the current site . "${i}/${CONFIG}" # Add your commands here that use the details from $CONFIG echo "EXAMPLE: user name: $username" done 

config.sh которая содержит уникальные данные для каждого сайта, будет примерно такой:

 #!/bin/sh # User name for DB connection?? username="site1user" 

Вы написали:

каждый сайт находится в собственном каталоге и пользователю

 /www/site1/ // **user** site1 /www/site2/ // **user** site2 /www/site3/ // **user** site3 

На вашем выходном имени пользователя то же самое, это правильно?

Если пользователи на самом деле отличаются друг от друга, я создаю три отдельных клона для каждого из них:

 for i in user1 user2 user3; do crontab -u $i -e ; done 

и бросили правило, подготовленное для каждого из них, например (где site_dir – ваш сайт {1,2,3} :

 0,30 * * * * sh -c "cd /www/site_dir/ && /usr/bin/php ./tool.php -c Table_Update"