J'ai donc un répertoire
ls -lrth /opt/splunk/var/run 6726763764-7937483-7237438.bundle (file) ywueye-7274837-2829383.delta (file) serverclass.xml (file) splunk (directory)
Je veux donc obtenir l'utilisation du disque de tous les fichiers sous le répertoire d'exécution qui contient soit le bundle mondial soit le delta
Exemple:
/opt/splunk/var/run/
donc je veux l'utilisation totale du disque de 6726763764-7937483-7237438.bundl
e et ywueye-7274837-2829383.delta fichiers
est-ce possible?
3 Réponses :
essayez du
. voici l'exemple
du -sch *.bundl *.delta | grep total
pour le total
du -sh *.bundl *.delta
Je ne peux pas aller dans le répertoire où je dois faire sudo du -sch / opt / splunk / var / run / | grep total pouvez-vous changer votre réponse au scénario ci-dessus s'il vous plaît?
pour moi dans mon terminal * ne fonctionne pas
Vous pouvez essayer d'utiliser find
pour une recherche complexe, puis compter la taille totale avec la commande du
:
find /opt/splunk/var/run -regex '.*\(bundle\|delta\).*' -print0 | du -ch --files0-from=- | grep total | awk '{ print $1 }'
ou avec regex pour une syntaxe plus courte:
find /opt/splunk/var/run -regex '.*\(bundle\|delta\).*' -print0 | du -ch --files0-from=-
Ensuite, vous pouvez utiliser grep
et awk
pour ne prendre que la taille totale du sortie:
find /opt/splunk/var/run \( -name "*bundle*" -o -name "*delta*" \) -print0 | du -ch --files0-from=-
quand je fais votre commande, cela donne l'erreur - vous en avez trop ')' De plus, find recherche également des fichiers nommés bundle dans le répertoire Splunk également (à partir de mon exemple ci-dessus)
Je veux dire si vous voyez mon exemple, il y a un répertoire appelé splunk dans le répertoire run.Splunk contient également des fichiers qui contiennent un bundle dans leur nom.La commandeind les répertorie également.Je ne veux pas qu'il aille plus loin que le répertoire run. Il ne devrait considérer que les fichiers dont le nom contient bundle ou delta sous le répertoire d'exécution et me donner une utilisation totale du disque.
1. J'ai corrigé le chemin pour qu'il utilise le bon dossier à partir de maintenant. 2. Essayez la commande avec -regex
au lieu de l'option -name
. Cela peut être un problème avec (
dans votre shell.
Il va toujours dans le répertoire splunk
Vous pouvez utiliser l'option -maxdepth 1
de la commande find pour limiter la profondeur. Cela ressemblera donc à find / opt / splunk / var / run -maxdepth 1 -regex '. * \ (Bundle \ | delta \). *' -Print0 | du -ch --files0-from = - | total de grep | awk '{print $ 1}'
find / opt / splunk / var / run -maxdepth 1 -regex '. * (bundle \ | delta). *' -print0, jusqu'ici ça marche bien.Si j'utilise la chose totale, il dit permission refusée parce que ces direcorty appartient à splunk user.i ne peut pas changer en splunk user.i ne peut faire que sudo -u splunk avant find.i pense que ne pas changer en splunk user est le problème ici.
J'ai vérifié avec mon ami qui a le mot de passe root, votre commande fonctionne à merveille. mais y a-t-il un moyen de changer votre commande pour ma situation ??
utilisez la commande du comme ci-dessous du -sh * | grep bundl
du -b -h / opt / splunk / var / run a >?
Stack Overflow est un site pour les questions de programmation et de développement. Vous devriez probablement utiliser un autre site du réseau Stack Exchange pour cette question. Si vous pensez que la question concerne le sujet, consultez Comment créer un exemple minimal, complet et vérifiable . Il devrait être facile de trouver un exemple sur le Web. Cette question a été posée et répondue à plusieurs reprises.