2009-05-16 5 views
1

J'écris un script qui doit être exécuté toutes les heures. Il fonctionne essentiellement comme:Un bon endroit pour lire et écrire des données utilisées par un script cron?

  1. Lire le fichier de données s'il existe.
  2. Effectuez une action si le fichier de données contient certains contenus.
  3. Ecrivez ou créez le fichier de données.

Je vais mettre le script dans /etc/cron.hourly/ sur Ubuntu qui le fera s'exécuter une fois par heure.

Quel serait un bon endroit pour stocker le fichier de données? Le script est exécuté en tant que root.

Répondre

4

D'abord, le fichier de données et le travail cron doivent être nommés après votre application. Deuxièmement, si je comprends bien, vos données sont modifiées par le travail cron et ne sont pas éditées par un humain. Le Filesystem Hierarchy Standard indique donc que si l'application est nommée foo, le travail cron doit être /etc/cron.hourly/foo et le fichier de données doit être /var/lib/foo. La raison en est que le but de /var/lib est donné comme suit:

Cette hiérarchie contient des informations d'état concernant une application ou le système. Les informations d'état sont des données que les programmes modifient pendant leur exécution et qui concernent un hôte spécifique. Les utilisateurs ne doivent jamais avoir besoin de modifier les fichiers au /var/lib pour configurer l'opération d'un paquet.

+0

Excellent lien vers la norme de hiérarchie du système de fichiers. J'ai regardé les descriptions de celui-ci (la hiérarchie) mais jamais dans un tel détail. Vous avez également eu la réponse la plus informative. :-) –

+0

Je ne pouvais pas être plus d'accord. +1 –

2

/opt et/ou /var sont généralement de bons endroits pour cela. Évidemment, affinez-le à partir de là.

0

Si elle est en lecture seule des données:

/usr/local/share/program_name 

Si c'est un fichier de configuration (ou fichiers):

/usr/local/etc/program_name 

moins que ce soit quelque chose de très spécifique qui devrait aller dans/var/spool,/var/run ou ailleurs. Il y a aussi l'école /opt/XXX ...

+0

C'est un fichier que je lis et écris à partir du script. Mais je ne le touche jamais manuellement. –

1

Un sous-répertoire de /var est le bon endroit pour les données qui seront lus et modifiés par le système. Voir le Filesystem Hierarchy Standard pour plus d'informations.

+0

Excellent lien vers la norme de hiérarchie du système de fichiers. J'ai regardé les descriptions de celui-ci (la hiérarchie) mais jamais dans un tel détail. –

0

S'il s'agit de données transitoires, alors/tmp ou/var/tmp sont les répertoires standard. Les données persistantes peuvent être placées dans n'importe quelle zone du système de fichiers sur laquelle le processus peut lire et écrire. Je crée généralement un répertoire "data" quelque part dans l'arborescence où le processus dispose d'autorisations d'écriture telles que ~/data,/app/data etc.

+0

Merci pour votre réponse! Mais je pense que vous ne pouvez pas compter sur les données disponibles si vous les stockez dans/tmp. Il faudra une heure entre chaque exécution de ce script. Ou ai-je mal interprété quelque chose? –

Questions connexes