2010-09-23 20 views
2

Lorsque j'essaie d'utiliser cron pour exécuter mon script python dans un futur, j'ai trouvé qu'il y a une commande à, AFAIK, le cron est à exécuter périodiquement, mais ce que mon scénario est seulement exécuté pour une fois dans le temps spécifié. et ma question est de savoir comment ajouter un script python au commande, aussi il un paquet python pour le contrôle de la commande atComment utiliser à la commande pour définir le script Python s'exécuter à l'heure spécifiée

Mon dev os est ubuntu 10.04 lucide, et mon serveur produit est ubuntu-server 10,04 la version lucide. en fait, je veux par script python ajouter des tâches de script python au commande, qui le changement de fichier peut effectuer à la commande ajouter ou supprimer de nouveaux emplois

+0

Si vous éditez le Q pour ajouter l'information cruciale que vous avez complètement ignorée (quel ** système ** courez-vous, par exemple ?!), nous serons heureux de vous aider. (Non, aucun paquet Python dont j'ai entendu parler). –

Répondre

-1

Il suffit de faire

python FILE | at TIME > app.log 

remplacer: FILE - Votre fichier .py (inclure le shebang)

TIME - Votre temps

+0

Je fais ce que vous donnez, il me répond un avertissement, c'est quoi l'enfer? python /home/mlzboy/my/ide/test/c.py | maintenant + 2 minutes> /home/mlzboy/haha.txt avertissement: les commandes seront exécutées en utilisant/bin/sh travail 6 au jeu 23 septembre 10:27:00 2010 – mlzboy

+0

@mizboy avez-vous le shebang, il semble pour moi que le terminal pense ce que vous exécutez est un script de lot, soit cela ou il se réfère à l'exécution de la commande en tant que script batch (dans ce cas, il est bash donc c'est bien) – Zimm3r

+0

j'avais ajouter 1 #!/usr/bin/env python 2 # encoding = utf-8 en haut de mon script py – mlzboy

2

Type man at, il vous expliquera comment l'utiliser. L'utilisation différera légèrement d'un système à l'autre, il est donc inutile de vous dire ici exactement.

4

Cela fonctionne sur mon linux:

echo python myscript | at 10:15 

Modifier: stupide citant ...

2

Comme le dit la page de manuel, à (par opposition à Cron par exemple) ne respecte pas le tralala (la ligne #!/usr/bin/env python). Il utilise toujours /bin/sh pour exécuter le fichier.

Ainsi, afin d'exécuter un script python vous devez utiliser soit

echo python myscript.py | at 10:15 

comme suggéré par @bstpierre ou créer un fichier supplémentaire

myscript.sh:

python myscript.py 

et puis

at -f myscript.sh at 10:15 

Shebangs ne sont pas nécessaires de cette façon (mais ne ferait pas de mal non plus).

+0

Une explication logique de ce comportement étrange que j'aurais pu penser est que le drapeau '-f' est apparu plus tard et pour garder la compatibilité ascendante ils ont décidé d'ignorer le shebang (sinon lancer * at * avec les mêmes commandes lues de stdin et de le fichier spécifié par '-f' donnerait des résultats différents) – axil