2013-08-05 17 views
10

Sto lavorando con Yii e devo implementare uno script per cron. Ho un file di script, che chiama solo Yii e avvia il mio file php-script.Cron Job utilizza il vecchio file php inesistente

Fino a questo punto è tutto a posto. Se sto aggiornando lo script php, Cron continua semplicemente a eseguire quello vecchio.

Il riavvio di cron-service, il riavvio del server, ecc. Non ha aiutato. Ho anche disinstallato cron e l'ho reinstallato, ma nulla è cambiato. Esegue ancora la vecchia versione di questo script php.

Qualcuno un'idea cosa c'è che non va o cosa potrei fare per risolvere questo? Sto usando Ubuntu 12.04.

EDIT:

Lo script cronjob è in esecuzione:

#!/bin/bash 
cd ../www/protected/ ./yiic Cron ProcessPayments 

Il php-script

class CronCommand extends CConsoleCommand { 
public function actionProcessPayments() { 
... 
}} 

Questo funziona, ma ogni cambiamento che faccio su questo script viene ignorato da cron. E ora sono su questo punto: esegue entrambi. La mia vecchia versione e la nuova versione. Non sono mai stato così confuso da qualcosa.

+0

Puoi postare come si definisce il comando da eseguire? – Mantas

+0

Hai provato a eseguire ancora "$ crontab -l"? –

+0

crontab -l stampa semplicemente la configurazione che puoi modificare con crontab -e. Ho aggiunto lo script cron e un estratto dello script php. – user1151040

risposta

0

Individuare tutte le copie dello script utilizzando il comando find ed eliminare quelle copie non necessarie. Riavviare cron dopo aver scelto la copia dello script che si desidera eseguire. La mia ipotesi è che una copia dello script potrebbe trovarsi in una directory (ad esempio config.daily o qualcosa di simile).

HTH

0

Supponendo di avere sudo sulla macchina si trova su ...

Prima di controllo per vedere se è situato nei soliti directory cron /etc/cron.*

sudo find /etc/cron* -mount -iname yiic 

Se non si presenta lì poi cercare l'intero filesystem perché altrimenti potrai iniziare dover cercare un sacco di altri posti manualmente e ci vuole più tempo di esecuzione di un trovare

sudo find/-mount -iname yiic 

In entrambi trovano i comandi, se il nome del file è o è mai stato altro che yiic fanno yiic * in modo che searchs per tutto ciò che inizia con yiic

Dopo aver trovato le copie, se ci sono tutti gli altri, rimuovere ogni singolo eccetto il più nuovo, o anche quello singolo e quindi reinstallare lo script sul computer dal controllo di versione.


Edit:

Probabilmente più di quanto si interessa davvero, ma il comando find rompe in questo modo:

sudo - privilegi elevati in modo da poter cercare ovunque al contrario di cui si 'utente può leggere nuovamente

find - comando per cercare thigs

/ - il punto di partenza per la ricerca, può essere ovunque

-mount - questo dice trovare di non cercare altri filesystem

-iname - caso nome insensibile a cercare

yiic - il termine di ricerca

0

Ho avuto un problema simile. Uno script in /etc/cron.d è stato ancora eseguito nel vecchio modo dopo averlo modificato. Ho risolto il problema inviando un SIGHUP a cron:

sudo pkill -SIGHUP /usr/sbin/cron