Crontab - Esegui nella directory


170

Vorrei impostare un lavoro da eseguire quotidianamente nel crontab di root. Ma vorrei che lo eseguisse da una directory particolare in modo che possa trovare tutti i file di cui ha bisogno, poiché l'applicazione ha un sacco di percorsi relativi.

Ad ogni modo, posso dire a crontab di funzionare da una directory particolare?

Risposte:


318

Tutti i lavori vengono eseguiti da una shell, quindi avvia lo snippet di shell con un comando per cambiare la directory.

cd /path/to/directory && ./bin/myapp

Riguardo all'uso di &&invece di ;: normalmente non fa differenza, ma se il cdcomando fallisce (ad es. Perché la directory non esiste) con &&l'applicazione non viene eseguita, mentre con ;viene eseguita (ma non nella directory prevista ).


Invece di aggiungere una risposta per lo più duplicata, lasciatemi solo aggiungere che potete scegliere quale shell (se avete bisogno di bash piuttosto che sh, per esempio) impostando SHELLnel vostro crontab.
Edd Steel,

12
+1. ogni altra domanda correlata è di riscrivere lo script con percorsi assoluti. questo è esattamente ciò di cui avevo bisogno
Conrad.Dean,

2
Per curiosità, potresti usare un punto e virgola al ;posto della doppia e commerciale &&o non funzionerebbe? E perché?
Joshua Pinter,

32
@JoshPinter Normalmente non fa differenza. Ma se il cdcomando fallisce (ad es. Perché la directory non esiste), con &&, l'applicazione non viene eseguita. Con ;, viene eseguito (ma non nella directory prevista).
Gilles 'SO- smetti di essere malvagio' il

1
Lo farò per tutti i lavori cron delle mie app, mi hai salvato dal cambiare i miei file sorgente, grazie mille
Accountant م
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.