Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esecuzione di processi Cron sulle istanze Linux
Importante
Il AWS OpsWorks Stacks il servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Squadra su AWS Re:post o tramite
Un processo Cron di Linux indica al daemon Cron di eseguire uno o più comandi su una pianificazione specificata. Ad esempio, supponiamo che il tuo stack supporti un'applicazione di PHP e-commerce. È possibile impostare un processo Cron per fare in modo che il server invii un report delle vendite in un orario specificato ogni settimana. Per ulteriori informazioni su Cron, consulta cron
Sebbene sia possibile impostare manualmente i cron
lavori su singole istanze basate su Linux collegandosi a esse e modificando le relative vociSSH, un vantaggio fondamentale di crontab
AWS OpsWorks Stacks è che puoi indirizzarlo per eseguire l'operazione su un intero livello di istanze. La procedura seguente descrive come configurare un cron
lavoro sulle istanze di un livello di PHP App Server, ma è possibile utilizzare lo stesso approccio con qualsiasi livello.
Per configurare un processo cron
sulle istanze di un livello
-
Implementare un libro di ricette con una ricetta con una risorsa
cron
che imposta il processo. L'esempio presuppone che la ricetta sia denominatacronjob.rb
; i dettagli di implementazione vengono descritti in seguito. Per ulteriori informazioni sui libri di ricette e sulle ricette, consulta Libri di ricette e ricette. -
Installare il libro di ricette sullo stack. Per ulteriori informazioni, consulta Installazione di libri di ricette personalizzati.
-
Avere AWS OpsWorks Gli stack eseguono automaticamente la ricetta sulle istanze del layer assegnandola ai seguenti eventi del ciclo di vita. Per ulteriori informazioni, consulta Esecuzione automatica di ricette.
-
Configurazione: assegnazione a questo indirizzo di eventi
cronjob.rb
AWS OpsWorks Stack per eseguire la ricetta su tutte le nuove istanze. -
Deploy: assegnazione
cronjob.rb
di indirizzi a questo evento AWS OpsWorks Stack per eseguire la ricetta su tutte le istanze online quando distribuisci o ridistribuisci un'app sul layer.
È anche possibile eseguire manualmente la ricetta sulle istanze online utilizzando il comando stack
Execute Recipes
. Per ulteriori informazioni, consulta Esecuzione dei comandi dello stack. -
L'esempio seguente è l'cronjob.rb
esempio, che configura un cron job per eseguire un'PHPapplicazione implementata dall'utente una volta alla settimana che raccoglie i dati di vendita dal server e invia un rapporto per posta. Per ulteriori esempi di come utilizzare una risorsa Cron, consulta cron
cron "
job_name
" do hour "1" minute "10" weekday "6" command "cd /srv/www/myapp/current && php .lib/mailing.php" end
cron
è una risorsa Chef che rappresenta un processo cron
. Quando AWS OpsWorks Stacks esegue la ricetta su un'istanza, il provider associato gestisce i dettagli della configurazione del lavoro.
-
è un nome definito dall'utente per il processojob_name
cron
, come per esempioweekly report
. -
hour
/minute
/weekday
specificano quando i comandi devono essere eseguiti. Questo esempio esegue i comandi ogni sabato alle 01:10. -
command
specifica i comandi da eseguire.Questo esempio esegue due comandi. Il primo passa alla directory
/srv/www/myapp/current
. Il secondo esegue l'applicazionemailing.php
implementata dall'utente, che raccoglie i dati di vendita e invia il report.
Nota
Il comando bundle
non funziona con i processi cron
per impostazione predefinita. Il motivo è che AWS OpsWorks Stacks installa il bundler nella directory. /usr/local/bin
Per utilizzare bundle
con un processo cron
, bisogna aggiungere esplicitamente il percorso /usr/local/bin
al processo Cron. Inoltre, poiché la variabile di PATH ambiente $ potrebbe non espandersi nel cron
job, è consigliabile aggiungere esplicitamente tutte le informazioni necessarie sul percorso al job senza fare affidamento sull'espansione della variabile $. PATH Gli esempi seguenti mostrano due modi per utilizzare bundle
in un processo cron
.
cron "my first task" do path "/usr/local/bin" minute "*/10" command "cd /srv/www/myapp/current && bundle exec my_command" end
cron_env = {"PATH" => "/usr/local/bin"} cron "my second task" do environment cron_env minute "*/10" command "cd /srv/www/myapp/current && /usr/local/bin/bundle exec my_command" end
Se lo stack dispone di più server di applicazioni, l'assegnazione cronjob.rb
degli eventi del ciclo di vita del livello PHP App Server potrebbe non essere l'approccio ideale. Per esempio, la ricetta viene eseguita su tutte le istanze del livello, quindi verranno ricevuti più report. Un approccio migliore è quello di utilizzare un livello personalizzato per assicurare che solo un server invii un report.
Per eseguire una ricetta solo su una delle istanze di un livello
-
Crea un layer personalizzato chiamato, ad esempio, PHPAdmin e assegnalo
cronjob.rb
agli eventi Setup and Deploy. I livelli personalizzati non devono necessariamente fare molto. In questo caso, esegue PHPAdmin solo una ricetta personalizzata sulle relative istanze. -
Assegna una delle istanze dell'PHPApp Server a. AdminLayer Se un'istanza appartiene a più di un livello, AWS OpsWorks Stacks esegue le ricette integrate e personalizzate di ogni livello.
Poiché solo un'istanza appartiene all'PHPApp Server e ai PHPAdmin livelli, cronjob.rb
viene eseguita solo su quell'istanza e si riceve un solo rapporto.