시작 시 파일에서 crontab 로드

시작 시 파일에서 crontab 로드

AWS(Amazon Web Services)의 AMI(Amazon Machine Image)에서 컴퓨터를 부팅하고 AMI의 crontab을 사용하는 대신 파일에서 crontab을 동적으로 로드하려고 합니다. 내가 생각한 한 가지 방법은 AMI의 crontab을 다음과 같이 설정하는 것입니다.

@reboot crontab [CRONTAB_FILE]

이 접근 방식의 문제점은 CRONTAB_FILE의 @reboot 계획이 이를 실행하는 데 사용되지 않는다는 것입니다.

이를 달성하는 다른 방법이 있습니까? 데몬이 시작되기 전에 crontab을 변경할 수 있는 방법이 있습니까?

내 컴퓨터는 데비안을 실행하고 있습니다. 차이가 있다면요.

답변1

나는 보통 crontab -u user file/etc/rc.local과 같은 곳에 cron 탭을 로드합니다. 그 외에는 별로 할 일이 없습니다.

나는 보통 다음과 같은 일을 합니다: (rc.local에서)

wget http://169.254.169.254/latest/meta-data/instance-id -O /tmp/instance  
INSTANCE=`cat /tmp/instance`
KEY="/etc/pk.pem"
CERT="/etc/cert.pem"
CONFIG=`ec2-describe-tags -K $KEY -C $CERT -F "resource-id=$INSTANCE" -F "key=ConfigBucket" | awk '{print $5}'`
if  [ -n $CONFIG ]; then
    s3cmd -c /etc/.s3cfg sync s3://$CONFIG/etc/ /etc
    chmod +x /etc/post-ec2-start.sh
    /etc/post-ec2-start.sh
fi

exit 0

그런 다음 /etc/post-ec2-start.sh에서

#!/bin/bash
wget http://169.254.169.254/latest/meta-data/instance-id -O /tmp/instance
INSTANCE=`cat /tmp/instance`
KEY="/etc/pk.pem"
CERT="/etc/cert.pem"

VOL1="vol-12345678"
VOL2="vol-87654321"
IP="54.123.123.132"

ec2-attach-volume -K $KEY  -C $CERT $VOL1 -i "$INSTANCE" -d /dev/sdf
ec2-attach-volume -K $KEY  -C $CERT $VOL2 -i "$INSTANCE" -d /dev/sdg
ec2-associate-address -K $KEY  -C $CERT -i "$INSTANCE" $IP
sleep 90
mount /dev/sdf1 /home/
mount /dev/sdg1 /var/lib/mysql

hostname some.fqdn.com




#register crontabs
#crontab -u coteyr /etc/coteyr.crontab
crontab -u root /etc/root.crontab

#fix home directoris
cd /home/
for i in *; do 
    useradd $i
    chown -R $i:$i /home/$i
done

이것의 장점은 S3에서 구성을 로드한 다음 해당 구성을 기반으로 실행할 수 있다는 것입니다. (재)시작 시 실행할 항목이 필요한 경우 설정 구성의 일부로 필요한지 아니면 구성이 완료된 후에 필요한지 여부에 따라 /etc/post-ec2-start.sh 또는 /etc/rc.local에 추가하면 됩니다. 완벽한. 비슷한 것이 당신에게 도움이 될 것입니다.

관련 정보