Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Script qui réagit différemment en cron et en shell
#1

Hello ici,

J'ai un souci avec un script que j'ai fait en python. Il est basique et totalement procédural, et fonctionne très bien quand je le lance en console.
Il appelle 8 procédures qui ont toute un retour texte (print).

Lancé en cron, il plante toujours dans la même fonction :
Code :
def getCPULoad():
    p = os.popen('/usr/bin/top -n1 | /bin/grep Cpu')
    line = p.readline().replace(',','.').split()
    # C'est ici le dernier "print" qui fonctionne
    return([float(line[1]), float(line[3]), float(line[7])])

def processCPULoad():
    processCPULoad.DB = RRD_PATH + 'cpu_load.rrd'
    if not os.path.isfile(processCPULoad.DB):
        rrdtool.create(processCPULoad.DB,
            # plein de trucs qui fonctionnent
        )
    cpu_load = getCPULoad()
    # On n'arrive jamais ici
    processCPULoad.error = rrdtool.update(processCPULoad.DB,
        '-t', 'user:system:idle',
        'N:'+str(cpu_load[0])+':'+str(cpu_load[1])+':'+str(cpu_load[2])
    )
    return

Vous voyez un truc qui déconne dans getCPULoad ?
Répondre
#2

Bon, finalement, après bien des recherches, j'ai trouvé l'explication. Le souci n'est pas le script lui-même, mais l'appel de top. En effet, celui-ci a besoin d'un terminal pour s'exécuter, or bien entendu il n'y a pas de terminal d'initié en cron.

Je change donc d'optique et vais utiliser psutils.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)