pense-bête de bruno sanchiz

Accueil > Linux > Lignes de commandes > bash - shell - un certain nombre de programmes

bash - shell - un certain nombre de programmes

Publié le 19 mars 2017, dernière mise-à-jour le 14 novembre 2025, > 56 visites, >> 165987 visites totales.

CONTENU DE FICHIERS

PROGRAMMATION

SYSTÈME



tail/head

tail -n 25 fichier : afficher les dernières 25 lignes
head -n 23 fichier : afficher les premières 25 lignes
tail -n +10  fichier |head -n 20 : afficher les lignes 10 à 10+20-1

CESU
A partir des fichiers de salaires donnés par le cesu, Bulletin salaire_MACHIN_11_2019.pdf, on obtient

Id Date Net NetImposable Heures SalaireHoraireNet SalaireBrut Patron Fichier
2015/05 180 186,71 6 30 235,39 MACHIN ./MACHIN/Bulletin salaire_MACHIN_05_2015.pdf
find . -name "*pdf" -print |while read i ; do echo "$i";nom=$(echo "$i" |sed 's#.*Bulletin salaire_\(.*\)_\([0-9][0-9]\)_\(20[0-9][0-9]\).pdf#\1#'); pdf2htmlEX "$i" a.html ; tmp=$(cat a.html |sed 's/<[^<>]*>//g' |tr "\n" " " |sed "s#.*Paie du [0-9][0-9]/\([0-9][0-9]\)/\(20[0-9][0-9]\).*Salaire net imposable (CSG/CRDS inclus) : \([0-9,]*\) €.*Net à payer avant impôt sur le revenu:\([0-9,]*\) €.*Nombre d&apos;heures travaillées:\([0-9]*\).*Salaire horaire net (heures normales):\([0-9,]*\) €.*Salaire brut : \([0-9,]*\) €.*#\2/\1\t\4\t\3\t\5\t\6\t\7\n#"); echo -e "\t""$tmp""\t""$nom""\t""$i" >>tmp.csv ;done ; echo -e "Id\tDate\tNet\tNetImposable\tHeures\tSalaireHoraireNet\tSalaireBrut\tPatron\tFichier">salaires.csv  ; cat tmp.csv |sort -u >> salaires.csv ;rm tmp.csv  a.html
 
cesu

xclip

xclip -o : colle le texte copié ( copier/coller )


PROGRAMMATION

shellcheck

sudo apt-get install shellcheck
Tester l’intégrité d’un fichier sh : oublie de guillemets,...

décimal <-> hexadécimal

  • décimal -> hexadécimal
    echo "257"|dc -e '10i16o?p'
    101
    
  • hexadécimal -> décimal
    echo "101"|dc -e '10o16i?p'
    257
    
  • (2+1)*F -> decimal
    echo "F 1 2"|dc -e '10o16i?+*p'
    45
    

SYSTÈME

ulimit, prlimit : mettre des limites aux processus


man 1 bash |grep -A 30 ulimit

ulimit [-HS] -a
ulimit -HS] [-bcdefiklmnpqrstuvxPRT [limitation]]
prlimit [options] [--resource[=limits]] [--pid PID]
prlimit [options] [--resource[=limits]] command [argument...]

debsums : vérifier les paquets et les fichiers de configuration

debsums -s : Affiche seulement les erreurs.
debsums -e : Vérifie seulement les fichiers de configuration.
debsums -c : Vérifie les fichiers modifiés.

cpulimit : limiter l’utilisation de l’ordi

sudo apt-get install cpulimit

  • limiter l’utilisation de l’ordi par un programme
    il faut d’abord récupérer le PID
    • si on connaît le nom du programme, par exemple ici blender4 : ps -C blender4 -o pid=
    • on obtient un nombre (ou plusieurs ) : 771928
  • un ordinateur contient plusieurs "coeurs" , chacun compte pour 100% ainsi 8 coeurs = 800%.
    • exemple : on autorise la moitié de la puissance de l’ordi à 8 coeurs pour blender4 , soit 400% : cpulimit -l 400 -p 771928

(d’après https://fr.linux-terminal.com/?p=5438)

cputool : limiter l’utilisation de l’ordi

sudo apt-get install cpuset
attention , cputool marche avec 1024 = 100%

  • limiter l’utilisation du processeur d’un processus portant l’ID 1234 à 50 % : sudo cpuset -p 1234 -u 512
  • allouer uniquement les cœurs de processeur 0 et 1 au processus portant l’ID 1234 : sudo cpuset -p 1234 -l 0,1
    regroupement de processus :
  1. créer un groupe : sudo mkdir /sys/fs/cgroup/cpuset/mycpuset
  2. déplacer les processus dans le cpuset : echo 1234 | sudo tee /sys/fs/cgroup/cpuset/mycpuset/tasks
  3. limiter l’utilisation du processeur du cpuset "mycpuset" à 20% : echo 20 | sudo tee /sys/fs/cgroup/cpuset/mycpuset/cpu.shares

( d’après https://fr.linux-console.net/?p=22930 )

watch : Exécuter un programme périodiquement en affichant le résultat à l’écran

exemple : regarder l’état de la mémoire vive toutes les 1s en mettant en exergue les différences et quiite si rien n’a changé au bout de 7 fois : : watch -n 1 -d -q 7 free

chattr : bloquer un fichier en écriture et quelconques changements

chattr +i fichier

trouver un fichier dans un paquet

grep foo2hbpl2 /var/lib/dpkg/info/*.list
dpkg -S foo2hbpl2

apt apt-get

apt list mariadb-client mariadb-server
En train de lister... Fait
mariadb-client/stable,now 1:10.11.3-1 amd64 [installé, automatique]
mariadb-client/stable 1:10.11.3-1 i386
mariadb-server/stable,now 1:10.11.3-1 amd64 [installé]
mariadb-server/stable 1:10.11.3-1 i386

liste des fichiers installés par apt-get/apt ou enlevés par remove :
for nom in $(ls -tr /var/log/apt/history.log*);do zgrep -a apt "$nom"|egrep " install | remove "|grep -v -- "-d" |sed -e 's#-y##' -e 's#^Commandline: ##' -e 's#^apt #apt-get #'|sed 's# --reinstall # #';done
on obtient des lignes

apt-get install
apt-get remove
apt-get --purge

touch

changer la date du fichier
touch -t "AAAAMMJJMMSS" fichier
touch -t "202310051200" fichier

built-in commands

compgen -b

readlink

Afficher la valeur d’un lien symbolique après résolution ou le nom canonique d’un fichier
readlink /usr/bin/X
Xorg
carlrwxrwxrwx  1 root root            4 19 févr. 14:42 X -> Xorg

pid d’une fenêtre

lancer
xprop |igrep pid|sed "s#[^0-9]##g"
choisir une fenêtre

pid des processus

echo $BASHPID
5770
gedit &
[1] 6087
pstree -p | grep -C 2 6087
         |               |-dconf-service(1617)-+-{dconf-service}(1622)
           |               |                     -{dconf-service}(1623)
           |               |-gnome-terminal-(5760)-+-bash(5770)-+-gedit(6087)-+-bash(6095)
           |               |                       |            |             |-{gedit}(6088)
           |               |                       |            |             |-{gedit}(6089)


 

formater des lignes

afficher sur 6 colonnes : ls |pr -6t

afficher les codes hexadécimaux dans un texte

echo "la ligne de commande" | hd

echo "a^Va" |hd
00000000  61 16 61 0a                                       |a.a.|
00000004
 

echo "a^Va" |hd |cut -d "|" -f2

a.a.
00000004
 

export

export donne les valeurs des variables
exemple :

export |grep SHELL
declare -x SHELL="/bin/bash" 
 echo $SHELL
/bin/bash

 

id

utilisateur normal : id
uid=1000(moi) gid=1000(moi) groupes=1000(moi),....
root : id
uid=0(root) gid=0(root) groupes=0(root)

loginctl

loginctl session-status

Failed to query ControlGroup: No such property 'ControlGroup'
1 - moi (1000)
           Since: Wed 2017-08-02 14:43:37 CEST; 2h 3min ago
          Leader: 4152 (lightdm)
            Seat: seat0; vc7
         Display: :0
         Service: lightdm; type x11; class user
         Desktop: mate
           State: active
            Unit: session-1.scope
 

ps

ps aux |grep lightdm

root      2287  0.0  0.0 289964  6528 ?        SLl  14:42   0:00 /usr/sbin/lightdm
root      2770  2.0  0.8 427468 72676 tty7     Ssl+ 14:42   2:34 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
lightdm   3658  0.0  0.0  48136  2428 ?        S    14:43   0:00 dbus-launch --autolaunch=951a1a1adc434650a61cdb4b557a485b --binary-syntax --close-stderr
lightdm   3773  0.0  0.0  45120  2584 ?        Ss   14:43   0:00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
lightdm   4014  0.0  0.0 220224  6244 ?        Sl   14:43   0:01 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
root      4152  0.0  0.0 250708  6840 ?        Sl   14:43   0:00 lightdm --session-child 12 21
 

cd

ouvrir un terminal menu applications/accessoires/terminal :

apparaît nom@ordi : $ qui sera utilisé dans la suite

cd nom_du_repertoire : va dans le répertoire

exemple : cd /usr/bin
cd .. on remonte d’un répertoire
cd : on va dans le répertoire personnel ( équivalent à cd /home/nom )

ls

ls : liste les fichiers et répertoires

ls -alliste les fichiers et répertoires y compris cachés et les permissions

permissions : voir chmod xyz fichier
r = read ( lecture autorisée ) :vaut 4 ou 0
w = write ( écriture autorisée) : vaut 2 ou 0
x : exécution autorisée : vaut 1 ou 0
rx = 4 + 1 = 5
rwx = 4 + 2 + 1 = 7

sudo -s

sudo -s : apparaît root@ordi : $ : vous devenez root, donc vous pouvez tout faire sur cet ordi, y compris tout effacer.

chown et chmod

chown nom :nom fichier : le fichier devient le fichier de nom dans le groupe nom ; le fichier doit déjà vous appartenir sinon passez en root

chown -R nom :nom repertoire : le répertoire et tout ce qu’il contient devient le fichier de nom dans le groupe nom

chmod xyz fichier : le fichier prend les permissions xyz : très utile si vous ne pouvez pas copier dans un répertoire, ou lire un fichier. ( voir ls -al )

x : permissions du propriétaire

y : permissions du groupe

z : permissions de tout le monde

x, y et z sont des nombres de 0 à 7 tels que :

0 2 4 6 : fichier non exécutable ( ou répertoire non ouvrable )
1 3 5 7 : fichier exécutable ( ou répertoire ouvrable )
0 1 4 5 : fichier non réinscriptible
2 3 6 7 : fichier réinscriptible
0 1 2 3 : fichier non lisible
4 5 6 7 : fichier lisible
exemple : 5 : fichier exécutable ( ou répertoire ouvrable ) et fichier non réinscriptible et fichier lisible

exemple chmod 754 fichier :

7 : fichier exécutable ( ou répertoire ouvrable ) et fichier réinscriptible et fichier lisible pour le propriétaire du fichier

5 : fichier exécutable ( ou répertoire ouvrable ) et fichier non réinscriptible et fichier lisible pour tous les utilisateurs appartenant au groupe du fichier

4 : fichier non exécutable ( ou répertoire non ouvrable ) et fichier non réinscriptible et fichier lisible pour tous les utilisateurs

chmod -R xyz repertoire : le répertoire et tout ce qu’il contient prend les permissions xyz

ifconfig ( obsolète )

ifconfig : donne les caractéristiques de votre réseau et/ou internet

utiliser plutot ip a commandes réseaux en vrac

mount et umount

mount -a : monte tout ce qui est déclaré dans /etc/fstab, par exmple, permet d’accéder à une partition nouvellement créée

umount /media/hda1 : démonte /media/hda1

ps

ps aux : montre les programmes en cours d’exécution ; permet en particulier de les arrêter en notant le premier nombre ( PID )

kill et killall

killall firefox-bin : arrête tous les programmes firefox-bin

kill -9 PID, tue le programme PID

on peut aussi utiliser top ou htop :
top puis CTRL C pour arreter : montre l’utilisation du CPU

free : montre l’utilisation des mémoires

contrôler charge CPU, disque durs, réseau, mails, mémoire->#gkrellm]

gkrellm

GKrellM est un moniteur système logiciel servant à surveiller l’état du processeur, de la mémoire vive, des disques durs, des interfaces réseau, des boîtes de courriel ainsi que beaucoup d’autres choses. Il est distribué sous licence GNU GPL.

Des greffons (ou plugins) sont disponibles pour une multitude de tâches, par exemple piloter le lecteur multimédia XMMS ou un client SETI@home. GKrellM est devenu populaire auprès des utilisateurs des systèmes d’exploitation GNU/Linux et *BSD. Il existe pour lui beaucoup de thèmes différents. GKrellM utilise peu de mémoire vive, mais il n’est pas aussi extensible que d’autres logiciels similaires, tels les gDesklets.

top et htop

top - 00:37:05 up  1:44,  2 users,  load average: 4,74, 3,54, 2,77
Tasks: 168 total,   1 running, 167 sleeping,   0 stopped,   0 zombie
%Cpu(s): 95,0 us,  5,0 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
MiB Mem :   2874,5 total,    117,2 free,    821,0 used,   1936,4 buff/cache
MiB Swap:   7000,2 total,   6987,7 free,     12,6 used.   1810,6 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                         
 2211 poum      20   0 1115808 212328  67788 S  77,8   7,2   5:57.61 ghb                                             
  511 root      20   0  369520  61344  43420 S  11,1   2,1   3:08.68 Xorg            
 

on peut configurer htop pour avoir la température

apt

  • apt-get install programme : télécharge sur internet ou un cd ( déclaré dans /etc/apt/sources.list ) et installe le programme
  • apt-cache show vlc-plugin-jackAffiche les informations associée au paquet vlc-plugin-jack.
Package: vlc-plugin-jack
Source: vlc
Version: 3.0.10-0+deb9u1
Installed-Size: 216
Maintainer: Debian Multimedia Maintainers <pkg-multimedia-maintainers@lists.alioth.debian.org>
Architecture: amd64
Depends: libc6 (>= 2.8), libjack-jackd2-0 (>= 1.9.10+20150825) | libjack-0.125, libvlccore9 (>= 3.0.10), vlc-plugin-abi-3-0-0f
Description-fr: greffons audio Jack pour VLC
 VLC est le lecteur multimédia du projet VideoLAN. Il peut lire les
 fichiers MPEG, MPEG-2, MPEG-4, DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3,
 Ogg/Vorbis, les DVD, VCD, la baladodiffusion et les flux multimédia de diverses
 sources réseau.
 .
 Ces greffons permettent au lecteur multimédia VLC d'utiliser JACK. Pour
 activer le module de sortie audio, utilisez l'option « --aout jack » ou
 sélectionnez le greffon de sortie audio « jack » dans le menu des
 préférences. Pour une entrée jack, utilisez
 « vlc jack://channels=…:ports=… »
Description-md5: 48cfa579f6997ac3ff068125f952b74b
Homepage: http://www.videolan.org/vlc/
Enhances: vlc
Multi-Arch: same
Pre-Depends: dpkg (>= 1.17.14)
Section: video
Priority: optional
Filename: pool/updates/main/v/vlc/vlc-plugin-jack_3.0.10-0+deb9u1_amd64.deb
Size: 132398
MD5sum: fe8dd1d6c9ddacf6889ed48a0924bac2
SHA1: ef6bfbff50a17f95b5916e73bb143fcdca531bf4
SHA256: a3aa78a79588c66d5396965aef622d738c9549ace592b274d131c9f76123a236

Package: vlc-plugin-jack
Source: vlc
Version: 3.0.8-0+deb9u1
Installed-Size: 214
Maintainer: Debian Multimedia Maintainers <pkg-multimedia-maintainers@lists.alioth.debian.org>
Architecture: amd64
Depends: libc6 (>= 2.8), libjack-jackd2-0 (>= 1.9.10+20150825) | libjack-0.125, libvlccore9 (>= 3.0.8), vlc-plugin-abi-3-0-0f
Pre-Depends: dpkg (>= 1.17.14)
Enhances: vlc
Description-fr: greffons audio Jack pour VLC
 VLC est le lecteur multimédia du projet VideoLAN. Il peut lire les
 fichiers MPEG, MPEG-2, MPEG-4, DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3,
 Ogg/Vorbis, les DVD, VCD, la baladodiffusion et les flux multimédia de diverses
 sources réseau.
 .
 Ces greffons permettent au lecteur multimédia VLC d'utiliser JACK. Pour
 activer le module de sortie audio, utilisez l'option « --aout jack » ou
 sélectionnez le greffon de sortie audio « jack » dans le menu des
 préférences. Pour une entrée jack, utilisez
 « vlc jack://channels=…:ports=… »
Description-md5: 48cfa579f6997ac3ff068125f952b74b
Multi-Arch: same
Homepage: http://www.videolan.org/vlc/
Tag: role::plugin
Section: video
Priority: optional
Filename: pool/main/v/vlc/vlc-plugin-jack_3.0.8-0+deb9u1_amd64.deb
Size: 130968
MD5sum: a02911e1527ce2e37f0cb54140b438cc
SHA256: 54246babb43585a6353dd2e5d09460be5f12792088d9d8dcf7129e810c2482d7
 

paquets : dépendances

  • apt-cache depends vlc-plugin-jack Affiche toutes les dépendances du paquet vlc-plugin-jack.
  Pré-Dépend: dpkg
    dpkg:i386
  Dépend: libc6
 |Dépend: libjack-jackd2-0
  Dépend: <libjack-0.125>
    libjack-jackd2-0
    libjack0
  Dépend: libvlccore9
  Dépend: <vlc-plugin-abi-3-0-0f>
    libvlccore9
  Améliore: vlc
 
  • apt-cache rdepends vlc-plugin-jack Affiche tous les paquets dont dépend le paquet vlc-plugin-jack
    vlc-plugin-jack
    Reverse Depends:
      multimedia-players
     

Visualiser les dépendances d’un paquet .deb de manière graphique
sudo apt-get install apt-rdepends graphviz
apt-rdepends -d xz-utils | dot > /tmp/apt.dot ; dotty /tmp/apt.dot

apt-rdepends -d xz-utils
  • apt-cache search -n vlc-plugin-jack Recherche et affiche tous les paquets ayant dans leur nom vlc-plugin-jack
    vlc-plugin-jack - greffons audio Jack pour VLC
     
  • apt-cache madison vlc-plugin-jackIndique le dépôts fournissant le paquet vlc-plugin-jack
    vlc-plugin-jack | 3.0.10-0+deb9u1 | http://deb.debian.org/debian-security stretch/updates/main amd64 Packages
    vlc-plugin-jack | 3.0.10-0+deb9u1 | http://security.debian.org stretch/updates/main amd64 Packages
    vlc-plugin-jack | 3.0.8-0+deb9u1 | http://deb.debian.org/debian stretch/main amd64 Packages
    vlc-plugin-jack | 3.0.8-0+deb9u1 | http://ftp.crihan.fr/debian stretch/main amd64 Packages
           vlc | 3.0.8-0+deb9u1 | http://deb.debian.org/debian stretch/main Sources
           vlc | 2.2.7-1~deb9u1 | http://deb.debian.org/debian-security stretch/updates/main Sources
           vlc | 3.0.10-0+deb9u1 | http://deb.debian.org/debian-security stretch/updates/main Sources
           vlc | 3.0.8-0+deb9u1 | http://ftp.crihan.fr/debian stretch/main Sources
           vlc | 2.2.7-1~deb9u1 | http://security.debian.org stretch/updates/main Sources
           vlc | 3.0.10-0+deb9u1 | http://security.debian.org stretch/updates/main Sources
     

df

df : octets sur chaque point de montage
ex df /dev/hdb1

Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur

/dev/hdb1 19607924 17211740 1400156 93% /media/hdb1

[bruno sanchiz]