GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Ubuntu 14.04 et jouer des morceaux de Cron ?

J'ai récemment mis à jour mon ordinateur vers Ubuntu 14.04.

Après la mise à niveau, le système ne lit plus les quelques chansons que je lui ai fait jouer via crontab.

Les lignes crontab ressemblent à ceci :

0 9   *   *   1-5       /usr/bin/mpg123 -q //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3

Je n'obtiens aucune erreur de cron lors de l'exécution de la commande. Si j'exécute la commande manuellement via SSH, la chanson est lue avec succès.

J'ai préfixé la commande dans crontab avec 'env' pour avoir une meilleure compréhension de l'environnement dans lequel cron exécute le travail :

0 9   *   *   1-5       env; /usr/bin/mpg123 //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3

Cela a généré la sortie suivante :

HOME=/home/user
LOGNAME=user
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/user
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
    version 1.16.0; written and copyright by Michael Hipp and others
    free software (LGPL) without any warranty but with best wishes

Directory: /home/user/Music/
Playing MPEG stream 1 of 1: song.mp3 ...

MPEG 1.0 layer III, 320 kbit/s, 44100 Hz stereo
Comment:  00000000 00000210 00000AA0 000000000058C5D0 00000000 00506FD7 00000000 00000000 00000000 00000000 00000000 00000000

[2:11] Decoding of song.mp3 finished

Pour que le shell interactif de ma connexion ssh ressemble davantage à celui sous lequel cron s'exécute, j'ai tout désactivé sauf les variables d'environnement spécifiées :

for a in `env | awk -F= '{ print $1 }' | grep -v "HOME\|LOGNAME\|PATH\|LANG\|SHELL\|PWD" | xargs`; do unset $a; done

Et après cela, le copier-coller de crontab ne produit plus de son. Le programme semble lire le fichier cependant :

$ /usr/bin/mpg123 //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.16.0; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Directory: /home/user/Music/
Playing MPEG stream 1 of 1: song.mp3 ...

MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

[2:51] Decoding of song.mp3 finished.

Ce qui me porte à croire que le son est simplement émis vers le mauvais appareil.

Le passage en aplay ne produit aucun son :

$ aplay /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Mais spécifier cet appareil lit via HDMI comme prévu :

$ aplay -D plughw:CARD=NVidia,DEV=3 /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Comment puis-je définir cet appareil comme appareil par défaut du système ?
(Ce qui semble être le cas chaque fois que j'ai un environnement plus riche.)

Sinon, comment puis-je forcer mgp123 à utiliser le bon périphérique ?
Est-ce que le périphérique ALSA plughw:CARD=NVidia,DEV=3 corréler à un appareil dans /dev ?

mpg123 vous permettra de spécifier un appareil particulier comme ceci :

   -a dev, --audiodevice dev
          Specify the audio device to use.  The default is system-dependent (usually /dev/audio or /dev/dsp).  Use this option if  you  have  multiple  audio
          devices and the default is not what you want.

Les appareils plughw dans alsa :

$ aplay -L | grep plughw -A2
plughw:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=1
    HDA NVidia, ALC889A Digital
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Hardware device with all software conversions

Semble correspondre aux pcmC0D?p-devices dans /dev/snd :

$ ls /dev/snd/ | egrep [013]p
pcmC0D0p
pcmC0D1p
pcmC0D3p

Mais l'utiliser ne semble pas aider mpg123 :

$ /usr/bin/mpg123 -q -a /dev/snd/pcmC0D3p //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3
[oss.c:129] error: Can't reset audio!
[mpg123.c:690] error: ...in decoding next frame: Unable to set up output format! (code 1)

Je ne comprends pas vraiment ce qu'est ALSA et/ou PulseAudio à cet égard.

En relation :Comment toujours afficher (ou masquer automatiquement) les éléments de menu dans Unity ?

Aucun des deux ne semble fonctionner dans l'environnement limité :

$ pactl list cards
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
$ alsamixer
Error opening terminal: unknown.

Les deux commandes fonctionnent avec des variables d'environnement "normales".

J'ai téléchargé et exécuté alsa-info.sh, d'abord avec un environnement "normal":

http://www.alsa-project.org/db/?f=e2be8ceb9ef289ff9ef95557396dd82b88f337e0

Lorsque j'ai essayé de l'exécuter avec la plupart des variables d'environnement non définies, j'ai reçu une erreur.

Après avoir défini :

export TERM=xterm

J'ai de nouveau lancé le script. Résultat ici :

http://www.alsa-project.org/db/?f=67fdd80bd55c76cd6dd30c981bf02fe66ba3d9d6

MODIFIER :

Une enquête plus approfondie sur la suppression de la variable d'environnement montre que je n'ai qu'à supprimer XDG_RUNTIME_DIR pour interrompre la lecture.

$ unset XDG_RUNTIME_DIR

EDIT2 :

Si j'abandonne mgp123 pour cvlc, j'obtiens un son lors de la lecture via crontab comme suit :

 0 9  *   *    1-5      /usr/bin/cvlc -q --alsa-audio-device="hw:0,3" --play-and-exit //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3 2> /dev/null

Réponse acceptée :

Dans As you use ssh connection , essayez d'ajouter votre utilisateur dans le groupe "audio" :
sudo usermod -aG audio username
redémarrez et testez que alsamixer est ok , afin que vous puissiez régler les volumes :vous devez probablement appuyer sur F6 pour sélectionner le 3ème appareil.

Ensuite, dans mon cas, je peux lire le son connecté par ssh sur un pc distant sans serveur X en utilisant :

  • cvlc (fourni avec le package vlc-nox) :
    cvlc --alsa-audio-device="hw:0,3" /usr/share/sounds/alsa/Front_Center.wav
    Si ce n'est pas correct, changez hw:0,3 en hw:0,0 ou hw:0,1
    Dans mon cas, cela fonctionne aussi via crontab.
  • mpg123 :cela fonctionne également lancé via ssh :
    mpg123 -a hw:0,3 Musique/test.mp3

Notez que dans mon cas, pulseaudio est désactivé sur le PC distant (pas sûr que la désactivation soit utile car pulseaudio est démarré via X et lightdm session). Pour vérifier que pulseaudio est désactivé et ne réapparaît pas automatiquement, exécutez plusieurs fois killall -9 pulseaudio


Ubuntu
  1. Mise à niveau d'Ubuntu 13.10 vers Ubuntu 14.04

  2. Mise à niveau d'Ubuntu 13.04 vers Ubuntu 13.10

  3. Comment synchroniser la date et l'heure à partir de la ligne de commande dans Ubuntu

  4. Comment mettre à niveau vers Ubuntu 22.04 LTS à partir d'Ubuntu 20.04 LTS et 21.10

  5. Installer Ubuntu sur USB et démarrer à partir de Destop avec Uefi ?

Comment mettre à niveau d'Ubuntu 20.04 vers Ubuntu 22.04

Comment monter/démonter manuellement un périphérique USB sur Ubuntu 20.04 et 22.04

Comment extraire l'audio d'une vidéo dans Ubuntu et d'autres distributions Linux

Comment mettre à niveau vers Ubuntu 16.04 à partir d'Ubuntu 14.04 et 15.10

Comment passer de GNOME à Unity dans Ubuntu 18.04 et 17.10

Comment mettre à niveau vers Ubuntu 22.04 Beta à partir de 21.10 et 20.04 dès maintenant