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

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

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

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

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

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

0
19.10.2016, 12:45
2 ответа

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

Добавьте пользователя allsites в /etc/group для пользователей site1, site2 и 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"
1
28.01.2020, 02:34

Вы написали, что:

каждый сайт находится в своей директории и пользователь

/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 - это ваши site{1,2,3}:

0,30 * * * * sh -c "cd /www/site_dir/ && /usr/bin/php ./tool.php -c Table_Update"
1
28.01.2020, 02:34

Теги

Похожие вопросы