Exécuter une command crontab à chaque 59e seconde

Quelle est la façon la plus commode de configurer une command crontab pour exécuter toutes les 59 secondes, autrement que de courir sleep 59 dans le début de mon script?

S'il n'y a pas d'autres suggestions, l'exécution du sleep 59 retarde toutes mes autres inputs cron programmées pour l'exécution, attendez que le sumil soit terminé?

Mise à jour Pourquoi ai-je besoin du tout? J'ai écrit un petit script pour savoir qui s'est connecté sur le système au cours de la dernière minute. Il ressemble à ceci:

 who | grep `date +%R` | awk '{ print $1 " joins us." }' | write $USER 

Pour que cela fonctionne et ne pas compliquer les choses, j'ai besoin d'être lancé en fin de count.

Ceci a une command de date qui regarde la minute précédente:

 who | grep `date -d "now -1 min" +%R` | awk '{ print $1 " joins us." }' | write $USER 

Ensuite, vous pourriez l'exécuter à la minute avec cron :

 * * * * * /some/dir/scriptname 

Vous pourriez même faire ceci:

 who | grep `date -d "now -60 sec" +%R` | awk '{ print $1 " joins us." }' | write $USER 

Edit : Voici un cadeau:

 awk 'FNR > 2 {printf ",\n"} {printf "%s", name; name = $0; next} END {conj = " and\n"; if (FNR == 1) {singular = "s"; conj = ""}; printf "%s%s join%s us\n", conj, name, singular}' 

Sortie avec des virgules, "et" et un accord sur le verbe et suppression de phrases répétées (vous pouvez replace les nouvelles lignes (à l'exception du dernier) par des espaces si vous le désirez sur une seule ligne):

Allen se joint à nous

ou

facture et
chris rejoignez-nous

ou

dave
ellen et
félicitation à nous join

Le meilleur que vous pouvez faire en utilisant cron est exécuté à chaque minute:

 # minute hour dom mon dow * * * * * /path/to/command 

sleep 59 ne retarderait pas d'autres tâches.

Mais ça sent le danger. Si vous avez besoin de ce niveau de granularité, je prédis que vous allez disparaître.

Si vous expliquez la raison de vos besoins, vous pourriez find que quelqu'un est en mesure d'offrir un meilleur remède.

Cron n'est tout simplement pas aussi précis. Si vous avez besoin de ce niveau de précision, vous devriez envisager d'écrire un démon.

Avez-vous envisagé d'utiliser tail -f sur auth.log et de surveiller les connections en permanence?

Il serait préférable d'append le script à tous les users. Fichier d'input, ou .bashrc, ou similaire.

1) Il ne fonctionnait que lorsque quelqu'un a ouvert une session, donc plus efficace. 2) il fonctionnerait instantanément lorsque quelqu'un a ouvert une session, donc pas de retard.

Je vais juste mentionner que zsh a une horloge embeddede qui fait tout cela. (Cependant, vous devez utiliser zsh et utiliser votre shell pour le voir: il ne s'affichera pas dans d'autres terminaux.)

En résumé, ajoutez ceci à votre .zshrc :

 watch=notme