#1976 Le 11/04/2021, à 13:09
- Watael
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Mais quid de la soustraction ?
$ shopt -s extglob
$ Tab3=( $( printf '%s\n' "${Tab2[@]//@($(IFS='|';echo "${Tab1[*]}"))/}") )
?
là, l'assignation de Tab3 fonctionne parce que les éléments sont insécables.
si ce n'était pas le cas, il faudrait itérer sur le résultat.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#1977 Le 11/04/2021, à 14:04
- Tawal
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Incroyable !
Mais pas étonnant de ta part
Si je comprends bien, tu développes les éléments de Tab1 en expression régulière (avec le IFS) pour la substitution (par rien) dans les éléments de Tab2.
Est-ce que ça résiste à tous caractères ? Aux noms de fichiers, par exemple ? Aux espaces ?
Tu as l'air de dire non pour les espaces.
Super, c'est plus concis et plus rapide que ma méthode.
Merci de ton intervention
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#1978 Le 11/04/2021, à 14:56
- Watael
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
il ne s'agit pas d'expression régulière. il s'agit de correspondance de motifs (Pattern matching, aka. globbing) étendu (extglob).
pour du nom de fichier, je ferais plutôt une boucle comportant une fonction isInArray :
isInArray()
{
local item=$1
shift
rgx="^($(IFS='|'; echo "$*"))$" #là, c'est une regex.
[[ $item =~ $rgx ]]
}
Dernière modification par Watael (Le 11/04/2021, à 14:56)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#1979 Le 11/04/2021, à 15:16
- Tawal
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Oui, je confonds.
Je voulais dire, tu développes en
Tab1[0]|Tab1[1]|....|Tab[n]
pour la substitution.
Ingénieux le code retour de la fonction
Edit:
Je note pour le extglob; j'ai beau lire le man bash, il y a beaucoup à assimiler ...
Merci encore.
Dernière modification par Tawal (Le 11/04/2021, à 15:22)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#1980 Le 12/04/2021, à 09:57
- jlfh0816
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
PS : c'est un projet perso, vos retours sont donc les bienvenus!
Ca fonctionne très bien sur ma Xubuntu-Voyager 18.04 à condition que je l'installe avec pip3 (voir le post-scriptum) :
pip3 install ytdlmusic
Merci beaucoup pour ton travail, ytdlmusic est simple et agréable à utiliser, il a tout pour me plaire !
PS: juste pour info et si ça peut être utile, ytdlmusic ne fonctionne pas si je l'installe avec la ligne :
pip install ytdlmusic
car ça me retourne le message d'erreur suivant :
jlfh0816 @ Voyager1804 ~
└─ $ ▶ ytdlmusic "the beatles" "let it be"
Traceback (most recent call last):
File "/home/jlfh0816/.local/bin/ytdlmusic", line 7, in <module>
from ytdlmusic.__ytdlmusic__ import ytdlmusic
ImportError: No module named ytdlmusic.__ytdlmusic__
Ne connaissant rien du tout à python, je n'ai pas pu résoudre l'erreur. Mais bon, ce n'est pas grave puisque ça a fini par fonctionner en installant avec pip3 plutôt qu'avec pip ... c'est bien l'essentiel !
Dernière modification par jlfh0816 (Le 12/04/2021, à 09:58)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#1981 Le 12/04/2021, à 11:46
- thib1984
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Merci pour ton retour, je vais ouvrir une issue et tenter de la corriger ce soir (j'ai reproduit sur une vm en ligne, du coup j'ai fait une première étape).
Edit : le souci vient d'une incompatibilité avec python 2 d'une des dépendances, du coup je vais mettre à jour la documentation pour préciser que mon application est compatible uniquement avec python3
Dernière modification par thib1984 (Le 12/04/2021, à 12:58)
Hors ligne
#1982 Le 13/04/2021, à 11:59
- thib1984
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@jlfh0816
Je te confirme que le package n'est pas compatible avec python2. J'ai par contre apporté quelques corrections et nouvelles options.
pip3 install --upgrade ytdlmusic
(une fois)
Et ensuite tu as deux nouvelles commandes d'administration
ytdlmusic version
pour afficher toutes les versions
ytdlmusic update
pour mettre à jour le package et ses dépendances, cela peut etre utile car youtube-dl est constamment mis à jour
Encore merci de tes retours!
Hors ligne
#1983 Le 13/04/2021, à 14:03
- jlfh0816
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@thib1984
Après avoir mis à jour avec succès le package et ses dépendances, voici le retour de la demande d'affichage de la version :
jlfh0816 @ Voyager1804 ~
└─ $ ▶ ytdlmusic version
ytdlmusic version : 0.3.1
youtube-search-python version : 1.4.3
youtube-dl version : 2021.4.7
pip(3) version : 9.0.1
python version : 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0]
ffmpeg : /usr/bin/ffmpeg
Tout s'est donc bien passé et a priori, même youtube-dl a été mis à jour.
Merci beaucoup pour ta réactivité et encore bravo pour ton application !
Juste un petit dernier mot : une fois ton application installée, la mise à jour de youtube-dl ne peut plus se faire que par son intermédiaire puisque lorsqu'on tente de la faire isolément et manuellement, on a ce message d'avertissement :
jlfh0816 @ Voyager1804 ~
└─ $ ▶ youtube-dl -U
It looks like you installed youtube-dl with a package manager, pip, setup.py or a tarball. Please use that to update.
Peut-être faut-il en avertir l'utilisateur lambda lorsqu'il installe ton application, histoire qu'il ne soit pas surpris ?
Dernière modification par jlfh0816 (Le 13/04/2021, à 14:03)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#1984 Le 13/04/2021, à 15:58
- thib1984
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@jlfh0816
Bonne remarque. J'ai essayé de comprendre, je ne pense pas que ce soit bloquant ou réellement génant (si je comprends bien tu aurais eu un autre message d'erreur meme sans l'upgrade forcé), du coup j'ai mis à jour la documentation :
https://github.com/thib1984/ytdlmusic#faq
Merci de tes retours, ca fait très plaisir de savoir que son application est utilisée !
Edit : je pense que tu as raison, je vais ajouter un y/n à l'update avec un message de prévention, en proposant deux options : update (seulement le package ytdlmusic) et full-update (package ytdlmusic et depéndances).
Tu en penses quoi?
Dernière modification par thib1984 (Le 13/04/2021, à 18:08)
Hors ligne
#1985 Le 13/04/2021, à 18:39
- jlfh0816
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
... je vais ajouter un y/n à l'update avec un message de prévention, en proposant deux options : update (seulement le package ytdlmusic) et full-update (package ytdlmusic et depéndances).
Ah oui, si tu peux proposer le choix "update de seulement ytdlmusic" ou "update ytdlmusic + dépendances" , je pense que ça serait bienvenu.
Avec une option d'update aussi explicite, chacun s'y retrouvera, même un débutant.
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#1986 Le 13/04/2021, à 19:32
- thib1984
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
C'est fait
~ ytdlmusic version
ytdlmusic version : 0.4.4
youtube-search-python version : 1.4.3
youtube-dl version : 2021.4.7
pip(3) version : 21.0.1
python version : 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
ffmpeg : NON INSTALLE
~ ytdlmusic help
NAME
ytdlmusic
SYNOPSIS
With ytdlmusic, you can download from youtube a mp3 or ogg music without use browser. 5 choices are available with small summary
to facilitate the choice. You can also use auto mode to download the first item.
help : display this help
-> ytdlmusic help
update : upgrade ytdlmusic
-> ytdlmusic update
full-update : upgrade youtube-dl, youtube-search-python and ytdlmusic
-> ytdlmusic full-update
version : display versions of ytdlmusic and his dependencies
-> ytdlmusic version
artist song : display 5 choices from youtube with given search, then download the mp3 or ogg choosen by user
-> example : ytdlmusic "the beatles" "let it be"
artist song auto: download mp3 or ogg of the first from youtube with given search
-> example : ytdlmusic "the beatles" "let it be" auto
~ ytdlmusic full-update
update the ytdlmusic package and the dependencies [y/n] ? n
~ ytdlmusic update
update the ytdlmusic package [y/n] ? n
~
Dernière modification par thib1984 (Le 13/04/2021, à 19:41)
Hors ligne
#1987 Le 13/04/2021, à 20:38
- jlfh0816
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@thib1984
Bravo pour la réactivité !
J'ai testé dans la foulée et les deux options (update et full-update) fonctionnent sans soucis.
Encore merci pour ton application que je trouve vraiment pratique et efficace (elle trouve même les titres et/ou les auteurs si on fait une faute d'orthographe).
PS: si j'ai bien compris, ton application archive par défaut tous les titres téléchargés dans le répertoire courant, le $HOME
Penses-tu qu'il soit possible de lui préciser un autre répertoire ou dossier d'archivage ?
Par exemple, quelque chose comme la ligne de commande ci-dessous :
ytdlmusic "the beatles" "let it be" $HOME/Musique/Beatles/
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#1988 Le 13/04/2021, à 20:58
- thib1984
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@jlfh0816
Yes, par défaut ca DL dans le répertoire courant (pas forcément le HOME donc).
Je note ton idée, après ca rentrerait en conflit avec le troisième paramètre qui est réservé à "auto" faudrait que je trouve une autre façon de tourner cette option.
Et je ne sais pas si je devrais gérer ou non l'existence du dossier?
Pour le titre/auteur, ce n'est pas géré par ytdlmusic mais par youtube-search-python.
En clair, youtube-search-python version gère jusqu'à l'affichage de la liste des résultats, puis youtube-dl prend le relais une fois le choix indiqué.
ytdlmusic gère la communication entre les deux packages et la coquille de présentation
Hors ligne
#1989 Le 13/04/2021, à 21:08
- jlfh0816
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@thib1984
OK, merci pour toutes ces explications !
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#1990 Le 16/04/2021, à 13:22
- thib1984
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@jlfh0816
J'ai apporté pas mal de modifs dans le coeur du code (mais peu de choses visibles)
tape
ytdlmusic
puis la commande proposée pour l'update...
puis retape
ytdlmusic
pour récupérer les nouvelles commandes :
Normalement tu devrais avoir :
NAME
ytdlmusic
SYNOPSIS
With ytdlmusic, you can download directly from YouTube music files in MP3/OGG format from your terminal,
without using your browser. By default, it will match your request with a selection of 5 results
with a breif summary to choose from or you can use auto mode to download automaticaly the first item.
--help : display this help
-> ytdlmusic --help
--update : upgrade ytdlmusic
-> ytdlmusic --update
--full-update : upgrade youtube-dl, youtube-search-python and ytdlmusic
-> ytdlmusic --full-update
--version : display versions of ytdlmusic and his dependencies
-> ytdlmusic --version
artist song : display 5 choices from YouTube with given search, then download the MP3/OGG chosen by user
-> example : ytdlmusic "Rexlambo" "Stay With Me"
--auto artist song : download MP3/OGG of the first from YouTube with given search
-> example : ytdlmusic --auto "Rexlambo" "Stay With Me"
Les options s'activent avec "--" ce qui me permettra peut etre de gérer le repertoire de destination à l'avenir
J'utilise aussi une musique libre de droits dans l'exemple.
Normalement, je gère mieux les dépendances requises de version également
N'hésite pas à me faire des retours sur la documentation
Dernière modification par thib1984 (Le 16/04/2021, à 13:23)
Hors ligne
#1991 Le 16/04/2021, à 13:50
- jlfh0816
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@thib1984
J'ai suivi scrupuleusement tes indications et tout s'est bien passé
J'ai bien accès aux commandes à double tiret -- de cette nouvelle version 1.0.2 de ytdlmusic :
jlfh0816 @ Voyager1804 ~
└─ $ ▶ ytdlmusic --version
ytdlmusic version : 1.0.2
youtube-search-python version : 1.4.3
youtube-dl version : 2021.4.7
pip(3) version : 9.0.1
Python version : 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0]
ffmpeg : /usr/bin/ffmpeg
Et les téléchargements s'effectuent aussi bien avec cette nouvelle version qu'avec l'ancienne
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#1992 Le 19/04/2021, à 14:27
- Tawal
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Hello,
Je poste ici un petit script qui renvoie les processus qui utilisent le swap.
#!/bin/bash
# Nom : procswap
tot=0
shopt -s nullglob
for fich in /proc/*/status
do
awk '/Name|Tgid|VmSwap/ {printf("%s %s",$2,$3)} END {print ""}' $fich 2>/dev/null
done | grep kB | grep -v " 0 kB" | sort -k 3 -nr -o /tmp/procswap
if [ -s /tmp/procswap ]
then
printf "%-18s%5s%11s\\n" "PROCESSUS" "PID" "SWAPED"
while read line
do
ligne=( $line )
tot=$(( tot+ligne[2] ))
printf "%-18s%5s%8s %2s\\n" "${ligne[@]}"
done < /tmp/procswap
tot=$((tot/1024))
echo
echo "Total swaped : $tot MB"
else
echo "Aucun processus utilise le swap."
fi
rm /tmp/procswap
exit 0
Exemple de retour :
$ procswap
PROCESSUS PID SWAPED
lightdm 934 728 kB
dbus-daemon 797 292 kB
Xorg 1102 144 kB
unattended-upgr 922 144 kB
dbus-daemon 1568 72 kB
NetworkManager 800 52 kB
pulseaudio 2160 44 kB
evolution-calen 2598 16 kB
gvfs-udisks2-vo 2484 12 kB
Total swaped : 1 MB
$
Bon usage
Dernière modification par Tawal (Le 19/04/2021, à 14:35)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#1993 Le 19/04/2021, à 14:41
- Watael
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
avec awk, la boucle for est inutile, ainsi que les grep, et on peut aussi se dipenser du sort, avec Gawk.
edit : finalement, je ne suis pas sûr* si tout ne pourrait pas être fait en gawk.
--
* pas sûr à 2%
Dernière modification par Watael (Le 19/04/2021, à 14:42)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#1994 Le 19/04/2021, à 14:58
- Tawal
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Merci de tous ces conseils.
Déjà que je ne maîtrise pas du tout toutes les possibilités d'awk, je vais avoir du mal avec gwak, mais je vais regarder
Je crois que j'ai compris comment se passer de la boucle for : en passant /proc/*/status en paramêtre à awk.
Je vais étudier (et j'en ai besoin) awk et gawk pour se passer des grep et du sort.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#1995 Le 19/04/2021, à 17:13
- Jarodd
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour,
Ca a probablement déjà été fait des milliers de fois, et de façon bien plus propre et efficace, mais j'ai fait ça pour m'amuser et apprendre la syntaxe.
C'est un petit script pour renommer des fichiers, en passant en paramètre une chaîne à supprimer.
Exemple : mon_fichier_a_moi.txt
Appel du script rename_files.sh _a_moi
=> Le fichier sera renommé mon_fichier.txt
Je l'utilise pour renommer des photos/vidéos, et enlever les IMG_, VID_ et autres _HDR sans lancer de programme externe.
#!/bin/bash
##### Ne pas oublier de donner la permission +x à l'user qui lance le script
##### SCRIPT A LANCER AVEC :
##### ./rename_files.sh chaine_a_supprimer
COLOR_BLACK='\033[0m'
COLOR_RED='\033[0;31m'
COLOR_GREEN='\033[0;32m'
COLOR_YELLOW='\033[0;33m'
COLOR_BLUE='\033[0;34m'
COLOR_PURPLE='\033[0;35m'
COLOR_CYAN='\033[0;36m'
COLOR_WHITE='\033[0;37m'
get_nb_of_files_named() {
echo -e "${COLOR_YELLOW}1/ ${COLOR_BLACK}Recherche de fichiers contenant le terme :${COLOR_CYAN}" $@
cmd="ls | grep $@"
#echo $cmd
nb_files=`bash -c "$cmd" | wc -l`
}
get_files_named() {
echo -e "${COLOR_YELLOW}2/ ${COLOR_BLACK}Fichiers contenant le terme :${COLOR_CYAN}" $@
cmd="ls | grep $@"
#echo $cmd
files=`bash -c "$cmd"`
echo -e " "${COLOR_PURPLE}$files
}
rename_files() {
echo -e "${COLOR_YELLOW}3/ ${COLOR_BLACK}Suppression de ${COLOR_CYAN}$1 ${COLOR_BLACK}dans le(s) fichier(s) suivant(s) :"
for file in $files;
do
old_name=${file}
new_name="$(echo ${old_name} | sed "s/$str_to_delete//g")"
mv "$old_name" "$new_name"
echo -e " "${COLOR_RED}${old_name} ${COLOR_BLACK}"renommé en" ${COLOR_GREEN}$new_name
done
}
nb_files=0
get_nb_of_files_named $@
if [ $nb_files = 0 ]
then
echo -e "${COLOR_RED}Aucun fichier nommé ${COLOR_CYAN}$@"
else
if [ $nb_files = 1 ]
then
echo -e " ${COLOR_BLACK}=> ${COLOR_GREEN}1 fichier contenant ${COLOR_CYAN}$@"
else
echo -e " ${COLOR_BLACK}=> ${COLOR_GREEN}$nb_files fichiers contenant ${COLOR_CYAN}$@"
fi
get_files_named $@
str_to_delete=$@
rename_files $str_to_delete $files
fi
Ubuntu 22.04.3 LTS (64 bits)
Hors ligne
#1996 Le 19/04/2021, à 17:15
- Tawal
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
En effet, j'ai pu (d'une manière barbare à mon avis) tout intégrer dans une commande awk sauf le sort.
La commande est longue car elle affiche l'entête et la conclusion :
$ awk 'BEGIN{printf("%-18s %5s %11s\n","PROCESSUS","PID","SWAPED")} /Name/ {a=$2} /Tgid/ {b=$2} /VmSwap/ {if ($2!=0) printf("%-18s %5s %8s %2s\n",a,b,$2,$3); c=(c+$2)} END {u="kB"; if (c>1024) {c=(c/1024); u="MB"}; printf("\nTotal swaped : %s %s\n",c,u)}' /proc/*/status
PROCESSUS PID SWAPED
dbus-daemon 797 80 kB
NetworkManager 800 4 kB
lightdm 934 144 kB
Total swaped : 228 kB
Je sens que pour obtenir le sort, ça va me compliquer l'affaire ...
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#1997 Le 19/04/2021, à 17:44
- Watael
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
pour le tri dans awk, utilise un tableau : la valeur à trier en indice, et les valeurs à afficher en valeur, et assigne PROCINFO("sorted_in").
pour faire simple, parce qu'il existe aussi des fonction asort() et asorti()...
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#1998 Le 19/04/2021, à 19:31
- Tawal
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
pour faire simple, parce qu'il existe aussi des fonction asort() et asorti()
En effet, je galérais (sans résultat ) avec asorti().
La variable d'environnement PROCINFO["sorted_in"] me convient mieux (peut-être parce que j'ai pu la mettre en œuvre) surtout en l'assignant avec @ind_num_desc
Voici la commande :
$ awk 'BEGIN{printf("%-18s %5s %11s\n","PROCESSUS","PID","SWAPED")} /Name/ {a=$2} /Tgid/ {b=$2} /VmSwap/ {if ($2!=0) {i=(i+1); t[$2]=sprintf("%-18s %5s %8s %2s",a,b,$2,$3); c=(c+$2)}} END {PROCINFO["sorted_in"]="@ind_num_desc"; for (i in t) {printf("%s\n",t[i])}; u="kB"; if (c>1024) {c=(c/1024); u="MB"}; printf("\nTotal swaped : %s %s\n",c,u)}' /proc/*/status
PROCESSUS PID SWAPED
lightdm 934 144 kB
dbus-daemon 797 80 kB
Total swaped : 224 kB
C'est 10×+ rapide que la boucle for
@geole: Bonne idée pour le free -h, je crois bien que je rajouterais ces infos dans le script
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#1999 Le 19/04/2021, à 21:07
- Tawal
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Du coup voici le nouveau script avec les infos mémoire (merci geole) avec un grand MERCI à Watael de m'avoir fait chercher sur awk et gawk (pour ses conseils et infos aussi )
#!/bin/bash
# Nom : procswap
free -h | awk '{if (NR==1) {entete=toupper($0); print entete;next}}; {print}'
2>/dev/null awk 'BEGIN {
printf("\n%-18s %5s %11s\n","PROCESSUS","PID","SWAPED")
}
/Name/ {nom_proc=$2}
/Tgid/ {pid=$2}
/VmSwap/ {
if ($2!=0) {
i=(i+1)
datas_Tab[$2]=sprintf("%-18s %5s %8s %2s",nom_proc,pid,$2,$3)
tot=(tot+$2)
}
}
END {
PROCINFO["sorted_in"]="@ind_num_desc"
for (i in datas_Tab) {
print datas_Tab[i]
}
unit="kB"
if (tot>1024) {
tot=(tot/1024)
unit="MB"
}
if (tot>1048576) {
tot=(tot/1048576)
unit="GB"
}
printf("\nTotal swaped : %s %s\n",tot,unit)
}' /proc/*/status
exit $?
Par contre avec cette indentation, ça me casse la coloration du script dans mon éditeur
Je pense que ça vient de la "coupure" des simples quotes ' encadrant la commande awk.
Edit: Rajout de l'exit $? et de la redirection des erreurs d' awk
Dernière modification par Tawal (Le 19/04/2021, à 21:11)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#2000 Le 19/04/2021, à 21:09
- Watael
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
je suis étourdi : que se passe-t-il si plusieurs processus utilisent le même volume de swap ?
=>
awk 'FNR==1{split(FILENAME,nameParts,"/"); proc=nameParts[3]; /^Name:/name[proc]=$2; Tgid=[proc]=$2; ...
de plus, à la lecture du fichier, je convertirais en octets selon l'unité indiquée dans le status , et je créerais une fonction pour convertir en unité lisible par un humain dans le END au moment de l'affichage
je crois que tu devrais attendre que nous ayons validé tes scripts dans la rubrique « Terminal, scripts et ligne de commande » avant de les poster sur « Vos scripts utiles » .
PS: le tri se fait alors sur la valeur du tableau, plus sur l'indice.
PS2 : j'essaie de faire des tests, mais ma machine ne swap pas.
$ awk 'BEGIN{PROCINFO["sorted_in"]="@val_num_desc"; units["kB"]=1024; units["mB"]=1024**2; units[gB]=1024**3}/^Name/{name=$2}; /^Tgid/{tgid=$2}; /^VmSwap/{byteSize=$2*units[3]; procName[tgid]=name; procSwap[t
gid]=byteSize}END{for(i in procSwap)print procName[i],bytes2human(procSwap[i]) }' /proc/*/status
il faut encore créer la fonction bytes2human() pour rendre le nombre d'octets lisible par un humain
Dernière modification par Watael (Le 20/04/2021, à 01:23)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne