여러 사용자를 위한 Cronjob

여러 사용자를 위한 Cronjob

나는 다음과 같은 상황에 처해 있습니다. 아마도 간단하지만 어떤 방법이 논리적으로 정확하고 정확히 수행하는 방법을 모르겠습니다.

여러 사이트가 있고 /www/각 사이트에는 자체 디렉터리와 사용자가 있습니다.

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

이제 PHP 스크립트를 실행하고 각 사이트의 데이터베이스에 있는 테이블을 업데이트하는 cronjob을 만들고 싶습니다.

대본이나 실제 작업에는 아무런 문제가 없었습니다. 문제는 이것을 올바르게 수행하는 방법입니다. 각 사용자에 대한 작업을 생성하는 방법은 무엇입니까? Cronjob은 필요한 경우 30분마다 실행됩니다.

답변1

allsites새 사용자를 추가합니다 . 사용자를 호출해 보겠습니다 .

for 및 users allsites에 사용자를 추가합니다 ./etc/groupsite1site2site3

사용자로 스크립트를 실행하십시오 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"

답변2

당신은 다음과 같이 썼습니다:

각 사이트는 자체 디렉토리와 사용자에 있습니다.

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

출력된 사용자 이름이 동일합니다. 맞습니까?

귀하의 위치에 있는 사용자가 실제로 다른 경우 각 사용자에 대해 세 개의 별도 크론을 생성합니다.

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

그리고 모든 사람을 위한 규칙을 던져보세요.사이트 디렉토리당신 것인가요?웹사이트{1,2,3}:

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

관련 정보