Table des matières
3 billet(s) pour janvier 2026
| Notes rsh rcp | 2026/01/21 18:08 | Jean-Baptiste |
| Git - Duplication d'un dépôt | 2026/01/19 10:22 | Jean-Baptiste |
| Exemple simple de conf Nagios | 2026/01/14 10:07 | Jean-Baptiste |
Notes son-alsa
Voir :
Voir aussi PulseAudio
alsamixer #this sets the simplified Pulseaudio mixer controls alsamixer -c0 #this sets up the actual ALSA sound card levels
alsamixer -c 0
[F4] pour les entrées son (micros) Input Source Rear Mic
A tester
Si tout est ok en root :
alsactl store
Mettre “Rear Mic” en “Input Source” en ligne de commande
amixer -c0 cset iface=MIXER,name='Input Source',index=0 'Rear Mic'
http://thenerdshow.com/index30e5.html
Ca marche ! Mais j'ai rajoutée cette ligne partout pour la lancer au démarrage du PC, pas moyen. Visiblement qqch change ma config son.
En tapant mate-session-properties (idem que gnome-session-properties, mais pour mate)
Système de son PulseAudio start-pulseaudio-x11
C'est lui le coupable. Je ruse en remplaçant la ligne :
start-pulseaudio-x11; amixer -c0 cset iface=MIXER,name='Input Source',index=0 'Rear Mic'
Ça ne marche pas. Un autre process se lançant au démarrage modifie ma config.
Je ruse en créant un script :
/usr/local/bin/jitsi.sh
#! /bin/bash sleep 15 ; amixer -c0 cset iface=MIXER,name='Input Source',index=0 'Rear Mic' jitsi
C'est lui que j'appelle au démarrage du PC.
Couper le son HP (Mute)
amixer set Master mute
Rétablir le son HP
amixer set Master toggle
Couper le son du micro (Mute)
amixer set Capture nocap
Rétablir le son du micro
amixer set Capture cap
Réduire ou augmenter le son
amixer -D pulse sset Master 50% amixer set Master 5+
Désactiver le micro
$ cat /proc/asound/modules 0 snd_hda_intel 1 snd_hda_intel
echo 'blacklist snd_hda_intel' | sudo tee -a /etc/modprobe.d/blacklist.conf
Autres
Sur Raspbian
/usr/sbin/alsactl -E HOME=/run/alsa -s -n 19 -c rdaemon
Mix
Solutions Serverless
Voir aussi :
- SlimFaas
| Nom | Dépôt code | Serverless FWK | Langu | K8S |
|---|---|---|---|---|
| Knative | https://github.com/knative/ | oui | Go | oui |
| OpenFaaS | https://github.com/openfaas | non | Go | Opt |
| OpenWhisk | https://github.com/apache/openwhisk | oui | Scala | Opt |
| Fission | https://github.com/fission/fission | plugin ? | Go | oui |
| #Fn | https://github.com/fnproject/fn#top | oui | Go | non |
| #Kubeless | https://github.com/vmware-archive/kubeless | oui | Go | oui |
Voir :
Voir aussi :
- firecracker-microvm
Knative
Knative est utilisé pour OpenShift / OKD
Tutos :
OpenFaaS
- can be deployed to a variety of container orchestrators such as Kubernetes, OpenShift, Docker Swarm or to a single host with faasd.
- Hélas pas pris nativement en charge par Serverless.com Framework.
Tutos :
Fn
Snapshot de process avec criu
Voir
- Podman
Voir aussi :
- kcarectl / KernelCare
Critmux
Semblable à http://blog.jasonantman.com/2014/07/session-save-and-restore-with-bash-and-gnu-screen/ ?
http://ftp.fr.debian.org/debian/pool/main/c/criu/criu_1.6.1-1_amd64.deb
CRIU avec Docker tmux
Source : https://github.com/jpetazzo/critmux
Démo ici : https://asciinema.org/a/9889
docker run -t -i --privileged --name critmux jpetazzo/critmux
docker stop critmux
docker start critmux ; docker attach critmux
Brouillon
wget http://ftp.fr.debian.org/debian/pool/main/c/criu/criu_1.6.1-1_amd64.deb sha256sum criu_1.6.1-1_amd64.deb
Le nombre en hexadécimal retourné par sha256sum doit être le même que celui figurant sur la page https://packages.debian.org/experimental/amd64/criu/download
<cide → 78c1acc0fa73e7b7843945f314802760c485557a927f9f886489d0ccb823fc87 criu_1.6.1-1_amd64.deb </code>
dpki -i criu_1.6.1-1_amd64.deb apt-get -f install
# mkdir checkpoint # criu dump -D checkpoint -t $(pgrep iceweasel) --file-locks Error (sk-inet.c:141): Connected TCP socket, consider using tcp-established option. Error (cr-dump.c:1584): Dump files (pid: 17543) failed with -1 Error (cr-dump.c:1947): Dumping FAILED.
On compile newns (voir http://criu.org/VNC)
#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <sys/mount.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/wait.h> #include <sys/param.h> #include <sys/mman.h> #include <fcntl.h> #include <signal.h> #include <sched.h> #define STACK_SIZE (8 * 4096) static int ac; static char **av; static int ns_exec(void *_arg) { int fd; fd = open("newns.log", O_CREAT | O_TRUNC | O_RDWR | O_APPEND, 0600); if (fd >= 0) { close(0); dup2(fd, 1); dup2(fd, 2); close(fd); } setsid(); execvp(av[1], av + 1); return 1; } int main(int argc, char **argv) { void *stack; int ret; pid_t pid; ac = argc; av = argv; stack = mmap(NULL, STACK_SIZE, PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_GROWSDOWN | MAP_ANONYMOUS, -1, 0); if (stack == MAP_FAILED) { fprintf(stderr, "Can't map stack %m\n"); exit(1); } pid = clone(ns_exec, stack + STACK_SIZE, CLONE_NEWPID | CLONE_NEWIPC | SIGCHLD, NULL); if (pid < 0) { fprintf(stderr, "clone() failed: %m\n"); exit(1); } return 0; }
gcc newns.c -o newns mv newns /usr/local/bin/ chmod +x /usr/local/bin/newns
$ newns iceweasel
clone() failed: Operation not permitted </code>
Voir https://github.com/lxc/lxc/issues/261
J'ai essayé : Sans succès !
echo 1 > /sys/fs/cgroup/cpu,cpuacct/cgroup.clone_children echo 1 > /proc/sys/kernel/unprivileged_userns_clone
Analysons
$ strace newns 2>&1 | grep -i clone clone(child_stack=0x7f105164fff0, flags=CLONE_NEWIPC|CLONE_NEWPID|SIGCHLD) = -1 EPERM (Operation not permitted) write(2, "clone() failed: Operation not pe"..., 40clone() failed: Operation not permitted
Scripting shell bash et tests unitaires avec bats
apt-get install -y --no-install-recommends bats
test/spec.bats
#!/usr/bin/env bats set -euo pipefail @test "Check apache2 is up" { ps aux | grep "apache2" }
test/spec.bats
#! /usr/bin/env bats set -eu setup() { # Appelée avant chaque test unitaire #echo "$(date --iso-8601=second BEGIN $BATS_TEST_NUMBER $BATS_TEST_NAME" > /dev/stdin true } teardown() { # Appelée après chaque test unitaire #echo "$(date --iso-8601=second) END $BATS_TEST_NUMBER $BATS_TEST_NAME" > /dev/stdin true } setup_file() { # Appelée une seule fois au début du lancement de ce script echo "$(date --iso-8601=second) BEGIN $(basename $BATS_TEST_FILENAME)" > /dev/stdin } teardown_file() { # Appelée une seule fois en dernier lors de l’exécution de ce script sleep 1 echo -e "\b$(date --iso-8601=second) END $(basename $BATS_TEST_FILENAME)" > /dev/stdin } ### Exemple de tests @test "prereq - create account" { ansible -b -i tests/inventory -m user -a 'name=testplop' all } @test "Check required fields" { ansible-playbook --check tests/test.yml -i tests/inventory |grep -q 'NameError.' }
Dépendance et condition
test/spec.bats
foo() { echo foobar > /tmp/plop } @test "foobar" { run foo }
Autres
tests/spec.sh
#! /bin/bash set -eu if [ -z "${ALREADY_RUN:-}" ] then export ALREADY_RUN=yes fi
test/spec.bats
#! /usr/bin/env bats set -eu load spec.sh @test "clean" { if [ ! -z "${ALREADY_RUN:-}" ] then ssh server -- sudo find /opt/app1/ -type f -delete fi }
