Puncte:1

paplay nu funcționează din cron

drapel mx

Acum puțin mai mult de un an am scris o aplicație de notificare. (pe Ubuntu 16.04.7) care a redat niște sunet cu paplay și apoi a deschis o fereastră yad cu textul notificării. Acesta poate fi rulat fie din linia de comandă, fie din cron. Recent, am instalat Ubuntu 20.04.3 și am constatat că rularea din linia de comandă încă funcționează, dar rularea din cron nu. Am un director bin sub directorul meu de acasă unde este păstrat scriptul (remind.sh). Versiunea redusă a remind.sh este următoarea. Rețineți că atunci când rulez de la cron, nu primesc nicio indicație audio, scriptul a rulat, dar fișierul trace.txt este actualizat și yad produce o fereastră.

#!/bin/bash
# script de memento apelat de la oricare
# 1. cron sau
# 2. direct din shell la pop-up sau
# 3. gidday.sh
# produce o fereastră „yad” cu o imagine și un mesaj în ea.

/usr/bin/paplay /home/gary/sounds/marimba.ogg

# urmăriți alergarea
d=`data`
echo "terminat -- "$d >> trace.txt

# acum dă afară pe fereastră
#
#/usr/bin/yad --borders=50 --scroll --image=/home/gary/Pictures/shrunk-pictures/${ar[$t]} --title="${ar[$t] }" --text-align=center --mouse --width=800 --height=400 --text='<span font="20">'"$txt"'</span>' 2>/dev /nul

Îmi pare rău, ar fi trebuit să furnizez următoarele în postarea mea inițială. Linia din crontab care declanșează scriptul remind1.sh este:

36 13 30 aug * export DISPLAY=:0 && export MESSG="obține filme din lib" && /home/gary/bin/remind1.sh

După cum am spus mai devreme, totul a funcționat perfect în Ubuntu 16.04. Și încă nu explică de ce comanda paplay nu rulează, dar comanda yad (necomentată).

Gary Fisher avatar
drapel mx
Îmi pare rău, ar fi trebuit să furnizez următoarele în postarea mea inițială.
Gary Fisher avatar
drapel mx
Nu sunt sigur că fac acest lucru corect, dar are cineva idee/input de ce paplay nu rulează în Ubuntu 20, dar funcționează bine în Ubuntu 16?
Puncte:1
drapel it

Locuri de muncă rulează cron, sau systemd Scripturile de pornire nu sunt rulate în același mediu de rulare pe care îl aveți pe desktop. systemd scripturile de pornire sunt rulate ca rădăcină. Nici unul dintre voi CALE modificări sau alte setări ale variabilelor de mediu din dvs ~/.bashrc sunt propagate automat către dvs cron loc de munca. De exemplu, nu există $DISPLAY, deci programele GUI au nevoie de un tratament special (citiți man xhost).

Se pot seta variabile de mediu pentru toate cron locuri de muncă în crontab fişier Citit om 5 crontab.

Uită-te la rezultatele echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias în fiecare dintre mediile dumneavoastră.

De când comanda parte a crontab linia este, implicit, interpretată de /bin/sh, care are o sintaxă mai simplă decât /bin/bash, recomand să aveți comanda fii un apel către a bash script (executabil, montat, începe cu #!/bin/bash) care configurează mediul, apoi apelează programul dorit.

waltinator avatar
drapel it
Comentariile sunt concepute pentru ca SUA să vă pună întrebări despre întrebarea dvs. Ar trebui să [Editați] întrebarea pentru a adăuga informații. Actualizându-vă Întrebarea și folosind butoanele de formatare, puneți toate informațiile la dispoziția noilor cititori. Oamenii nu ar trebui să citească o serie lungă de comentarii pentru a înțelege întreaga poveste.
Gary Fisher avatar
drapel mx
Are cineva idee de ce paplay nu rulează în scriptul meu pe Ubuntu 20.04, dar funcționează bine pe Ubuntu 16.04? Și pentru a adresa un comentariu în răspunsul inițial, partea de comandă a liniei crontab poate fi interpretată de /bin/sh, dar apelul este făcut la un script bash.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.