Existe-t-il une limite de caractères pour une commande dans une crontab?
J'ai un crontab avec une commande de 178 caractères et il semble être tronqué à 164 lors de son exécution. Je peux dire ce numéro à partir de l'e-mail que je reçois et des couleurs vi changeant à partir de ce moment.
Alors, est-ce une limitation "officielle"? Je ne trouve aucune documentation à ce sujet.
Réponses:
Wow, j'ai trouvé quel était mon problème et cela n'avait rien à voir avec la longueur de la ligne.
Il s'avère que ma commande avait un% (signe de pourcentage), ce qui a une signification particulière dans crontab. Il est utilisé pour saisir du texte dans STDIN (voir Pourquoi mon crontab ne fonctionne pas et comment puis-je le dépanner? ).
J'ai donc dû y échapper. Ma commande qui était:
devient
la source
%
provoqué une couple d' heures de consternation!Expérimentalement , il y a une troncature de 999 caractères par ligne sur toutes mes machines Ubuntu, bien que je n'aie pas encore trouvé de documentation explicative connexe.
J'ai testé sur Ubuntu 10.04, 12.04 et 14.04, et le nombre de caractères 999 est démarré au premier caractère non blanc après le calendrier (dans mon exemple, le calendrier est
* * * * *
, ce qui équivaut à 1 fois par minute).Observer:
D'abord, nous comptons les caractères de la commande que nous ajouterons à notre crontab - sans le calendrier :
Ajoutez cette commande à notre crontab, pour l'exécuter toutes les minutes: (AVERTISSEMENT cela écrase toutes les entrées crontab existantes pour l'utilisateur concerné)
Attendez une minute, vérifiez qu'un
/tmp/test.log
fichier est créé contenant tous vos "a":Recommencez, supprimez la crontab et le fichier journal:
Ajoutez la même commande qu'avant, seulement 1 caractère de plus, (dans mon cas,
B
):/tmp/test.lo
été créé avec vos "a". En effet, le 1000e caractère a été tronqué.Pour confirmer, supprimez l'ajout
B
et ajoutez plutôt un1
au nom de fichier, comme ceci:/tmp/test1.lo
est créé avec vos "a"./bin/echo
à/usr/bin/echo
et découvrez que vous devrez supprimer 4 caractères supplémentaires de votre commande.la source
cron
sur mon Ubuntu 14.04 tronque silencieusement la commande à 999 caractères. C'est tellement fou, il m'a fallu du temps pour le digérer. Et cela semble être le seul endroit sur Internet à le documenter, avec 1 vote positif.... && stop-power-plant; start-power-plant
et cron coupe silencieusement; start-power-plant
/bin/sh: 1: Syntax error: Unterminated quoted string
, mais rien ne le garantit.