Programmer l’exécution d’un script

© Christian PAULUS. Document créé le 31 août 2010 , mis à jour le 31 août 2010.

Un idiot pauvre est un idiot, un idiot riche est un riche. Paul Laffitte

Accueil du site > Astuces > Unix > Programmer l’exécution d’un script

at, batch / Ligne de commande

Demander au système l’exécution d’un script, d’une commande, à un instant précis : la commande at, et son pendant batch sont à votre disposition.

Leur utilisation est simple. Il suffit d’appeler une de ces deux commandes, suivi du script à exécuter, et de préciser l’heure souhaitée.

La différence entre at et batch est que cette dernière tient compte de la charge du système.

Pour en savoir plus, lire cette page du manuel, en français ou sur votre terminal : man at

Dans tous les cas, il faut activer atrun qui se charge de l’exécution des commandes at et batch demandées.

Activation de atrun sur le système

Par défaut, atrun n’est pas activé sur le système.

Vérifier la présence de atrun sur votre système qui est en général dans /usr/libexec/atrun.

Sur FreeBSD, pour activer atrun toutes les cinq minutes, il suffit d’ajouter une ligne au fichier /etc/crontab :

*/5     *       *       *       *      /usr/libexec/atrun

Pour activer atrun uniquement pour l’utilisateur httpd, vous devez éditer la table cron de cet utilisateur :

crontab -u httpd -e

et d’y ajouter cette ligne du crontab.

Sur d’autres systèmes, il faut parfois préciser l’utilisateur dans cette ligne du crontab. Exemple ici pour l’utilisateur httpd :

*/5     *       *       *       *       httpd    /usr/libexec/atrun

Activer atrun sur Mac OS X

Vous pouvez très bien utiliser la bonne vieille méthode du cron comme décrite ci-dessus (prendre l’exemple FreeBSD). Utiliser la commande crontab -e pour éditer la table cron de l’utilisateur courant. Les tables sont enregistrées dans le répertoire /private/var/at/tabs/. Le nom du fichier qui se trouve dans ce répertoire porte le login de l’utilisateur.

Activer atrun via launchd sur Mac OS X

L’exemple qui suit, par contre, doit être mis en oeuvre si vous préférez utiliser les fonctionnalités de launchd (voir cette documentation sur launchd sur le site Apple).

Voici le fichier des proprietés /System/Library/LaunchDaemons/com.apple.atrun.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.apple.atrun</string>
   <key>ProgramArguments</key>
   <array>
           <string>/usr/libexec/atrun</string>
   </array>
   <key>StartInterval</key>
   <integer>30</integer>
   <key>Disabled</key>
   <true/>
</dict>
</plist>

StartInterval (intervalle entre deux appels atrun) est exprimé en secondes. Ici, 30 secondes. Vous pouvez modifier cette valeur avec l’éditeur de propriétés (/Developer/Applications/Utilities/Property List Editor.app) ou plus simplement avec vim.

Vous pouvez vérifier l’activation d’atrun par launchctl :

sudo launchctl list|grep atrun

Si pas de résultat, c’est qu’il n’est pas activé. Pour activer atrun :

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Pour mémo, tout ce qui est placé dans LaunchDaemons est exécuté avec les droits root et n’a pas besoin que l’utilisateur soit logé sur la machine. LaunchAgents par contre, nécessite l’identification de l’utilisateur pour lancer les programmes (agents) définis par leurs propriétés respectives.

Plussoyez !

Les forums sont fermés.