OSX bash, 'watch' commande
Je suis à la recherche pour le meilleur moyen pour dupliquer le Linux 'watch' command sur Mac OSX. J'aimerais exécuter une commande toutes les quelques secondes de mise en correspondance du modèle sur le contenu d'un fichier de sortie à l'aide de la "queue" et avec "sed".
Ce qui est ma meilleure option sur un Mac, et peut-il être fait sans téléchargement de logiciel?
- Pourquoi voudriez-vous pour le dupliquer lorsque vous pouvez simplement l'installer?
- parce que j'ai configurer tous les Macs dans le bureau que l'utilisateur de mon script
- Je dirais que votre script installe brasser, puis de regarder.
- brasser de la montre ne semble pas pour ramasser des commandes sur mon chemin ou des alias.
- Sinon, pour une commande vous pouvez également utiliser l'application /Applications/Utilitaires/Console.application pour surveiller les fichiers journaux. Il permet le filtrage à base de recherche
- N'est-ce pas appartenir à apple.stackexchange.com?
- Vous pouvez utiliser un gestionnaire de paquets comme infusion.
- brasser de la montre ne prend pas en charge unicode :/
Vous devez vous connecter pour publier un commentaire.
Vous pouvez émuler les fonctionnalités de base avec la boucle shell:
Qui va boucler indéfiniment, effacer l'écran, l'exécution de votre commande, et attendez deux secondes - la base
watch your_command
mise en œuvre.Vous pouvez aller plus loin et créer un
watch.sh
script qui peut accepteryour_command
etsleep_duration
comme paramètres:your_command
àyour_command 2>&1|head -10
sleep ${2:-1}
de faire l'intervalle en option.echo "$(date)"
équivalent àdate
?watch
lorsque la sortie est à plus d'un écran. Montre seulement la fin, alors quewatch
ne montre que la partie supérieure. (Ni est idéal)chmod a+x watch.sh
pour le rendre exécutablebrew
version dewatch
montre juste un écran blanc pour certaines commandes.echo "$(clear;your_command)"
Avec Homebrew installé:
brew install watch
brew
sur mac.watch
: stackoverflow.com/questions/13593771/...watch
de brasser ne semble pas lire le mode d'alias. Lors de l'exécution dewatch somealias
, je reçois une commande introuvable.watch [command]
lorsque vous utilisezwatch somealias
il est à supposer quesomealias
est une commande que vous pouvez exécuter dans votre terminal.Utilisation macports:
watch
commande directement.watch
commande éclaté dans MacPorts?les coquilles ci-dessus fera l'affaire, vous pouvez même convertir un alias (peut-être besoin d'envelopper dans une fonction pour gérer les paramètres)
Exemples:
Alternativement, homebrew pouvez installer la montre de http://procps.sourceforge.net/
Il se peut que "regarder" n'est pas ce que vous voulez. Vous voulez sans doute demander de l'aide dans la résolution de votre problème, pas dans la mise en œuvre de votre solution! 🙂
Si votre objectif réel est de déclencher des actions en fonction sur ce qui est vu à partir de la
tail
commande, alors vous pouvez le faire dans le cadre de la queue elle-même. Au lieu de courir "périodiquement", ce qui estwatch
est le cas, vous pouvez exécuter votre code sur demande.Noter que
tail -F
continuera à suivre un fichier journal, même si il est mis en rotation par newsyslog ou logrotate. Vous voulez l'utiliser au lieu du bas-de-cassetail -f
. Vérifierman tail
pour plus de détails.Cela dit, si vraiment vous ne voulez pas exécuter une commande régulièrement, les autres réponses peut être transformé en un court script shell:
watch 2 cat *
permettrait d'élargir les paramètres avant d'exécuter le script, de sorte que dans un répertoire avec des fichiers "foo" et "bar", vous feriez exécutercat foo bar
toutes les 2 secondes. Ce comportement attendiez-vous?*
sans passer à la commande à exécuter. Essayez de lancer:mkdir /tmp/zz; touch /tmp/zz/foo; watch -n 2 ls -l /tmp/zz/*
dans une fenêtre. Alors que c'est en cours d'exécution, vous pouveztouch /tmp/zz/bar
dans une autre fenêtre. Voir si votre "regarder" voit le changement, dans la première fenêtre. Je ne pense pas que ça. Il n'est pas pour moi. Cela n'a rien à voir avec Ubuntu vs OSX ou Linux vs Unix, c'est le comportement debash
lui-même.watch "ls -l /tmp/zz/*"
mais si vous n'oubliez pas d'utiliser des citations, il fonctionne avec votre script. 🙂Va avec la réponse de ici:
Mais vous êtes vraiment mieux l'installation de regarder que ce n'est pas très propre..
brew install watch
Si la montre ne voulez pas l'installer via
Il y a un autre similaire/copie de la version qui est installée et a fonctionné parfaitement pour moi
https://github.com/tj/watch
Ou, dans votre ~/.bashrc
J'ai eu un problème similaire.
Quand j'ai cherché sur google, je suis tombé sur ce lien récemment. Ce n'est pas exactement "installation du logiciel", il vous suffit d'obtenir le binaire pour 'regarder' la commande.
Et le lien est Obtenir regarder de commande pour OSX
Voici une version légèrement révisée de cette réponse que:
Pour l'utiliser:
~/bin/watch
chmod 700 ~/bin/watch
dans un terminal pour le rendre exécutable.watch 1 echo "hi there"
~/bin/watch
Essayez ceci:
pour éviter le scintillement lors de votre commande principale prend perceptible de temps, vous pouvez capturer la sortie et seulement effacement de l'écran quand il est fait.
function watch {while :; do a=$($@); clear; echo "$(date)\n\n$a"; sleep 1; done}
ensuite l'utiliser:
watch istats
Utiliser le nix gestionnaire de paquets!
Installer nix, puis
nix-env -iA nixpkgs.watch
et il devrait être disponible pour une utilisation après l'avoir terminé les instructions d'installation (y compris l'approvisionnement. "$HOME/.nix-profile/etc/profile.d/nix.sh"
dans votre shell).