6 janvier 2015

at: 0481-108 You are not authorized to use the at command

Sous Unix pour exécuter un traitement en tâche de fond, HR Access utilise (via le script $SIGACS/bin/job) la commande "at now".

Exemple de syntaxe :
echo "ma commande > monlog 2>&1" | at now

Le "now" signifie : "déclenchement immédiat" (il peut y avoir des équivalents dans autres langues). La commande reconnait aussi "hhmm" (du jour - ou du lendemain si l’heure est depassée). Il est possible d'être plus précis et d'utiliser le format "[SSAA]MMJJhhmm[.ss]" (avec l'option -t) ou des ajouts sur le modèle de "now + 5 minutes" ou de "next hour". Consultez le "man" pour plus de détails.

echo "ma commande > monlog 2>&1" | at 1200            # a 12h00
echo "ma commande > monlog 2>&1" | at -t 201512312359 # le 31/12/2014 à 23h59

Pour lister les traitements planifiés en attente :
at -l
hradev.1420628400.a     Wed Jan  7 12:00:00 2015
hradev.1451602799.a     Thu Dec 31 23:59:59 2015

Pour déplanifier un traitement :
at -r hradev.1420628400.a
L'administrateur Unix peut restreindre les droits à cette commande "at". Si les droits ne sont pas ouverts pour le compte Unix de l'applicatif, les traitements batch demandés via l'interface Web ne seront pas déclenchés, et un message d'erreur apparaîtra dans $TMP/a.batch :

/hradev/hraccess/txt/log/OPER.594
PHASE: OPER WITH THESE PARAMETERS
PPCLIDEVAS800AS800NBX03PA45000467066ASREL0                                      AS800NBX               PA46                                                      ASRELX0ZYDV           PA47


at: 0481-108 You are not authorized to use the at command.



D'autre part ces traitements passent par des "files d'attentes" ou queues. Sur un système Unix ces queues sont paramétrées dans le fichier queuedefs (/etc/cron.d ou /var/adm/cron). On y trouve les références de 6 queues nommées a b c d e f. Celle utilisée par la commande "at" est la queue "a". Ce fichier permet de préciser le nombre maximum de traitement concurrents et leur niveau de priorité :

q.[njobj][nicen][nwaitw]
(exemple a.4j1n)

Sur un Linux SUSE ce sont des fichiers de configuration spécifiques qui permettent de préciser le comportement de la commande at

/etc/sysconfig/atd ATD_BATCH_INTERVAL = "60"
ATD_LOADAVG = "0.8"


/lib/systemd/system/atd.service...
ExecStart=/usr/sbin/atd -b ${ATD_BATCH_INTERVAL} -l ${ATD_LOADAVG}

avec ;
-l
Specifies a limiting load factor, over which batch jobs should not be run, instead of the compile-time choice of 0.8. For an SMP system with n CPUs, you will probably want to set this higher than n-1.
-b
Specify the minimum interval in seconds between the start of two batch jobs (60 default)

Aucun commentaire:

Enregistrer un commentaire