Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
Problema crontab
Last Updated: Oct 26 2019 16:27, Started by
tekoa
, Aug 24 2019 21:55
·
0
#1
Posted 24 August 2019 - 21:55
De multi ani folosesc doua cronuri de forma:
$ crontab -l 30 8-23 * * * espeak -vro -a 12 "Ceasul este $(date +\%R)." # JOB_ID_1 0 8-23 * * * espeak -vro -a 12 "Ceasul este $(date +\%R)." # JOB_ID_2care imi fac calculatorul sa-mi spuna ora la fiecare jumatate de ora intre orele 8-23. Metoda a functionat fara niciun fel de probleme pana prin primavara acestui an cand am constatat la un moment dat ca daca in momentul in care ar trebui sa-mi spuna ora, placa audio e ocupata de altceva (player audio, video, browser deschis pe youtube sau altceva), comanda de espeak ramane cumva suspendata si intra in functiune abia cand inchid playerul sau browserul, si abia atunci imi spune ceea ce trebuia spus la momentul respectiv. Mai concret: daca trebuia sa-mi spuna ora la 20, sa zicem, si in momentul acela ascultam muzica cu Audacious pe care il opresc la 20:10, abia atunci imi spune "ceasul este douazeci". Daca opresc Audacious nu la 20:10 ci la 20:35, in acel moment imi spune simultan ca a fost opt suprapus peste a fost opt treizeci, adica ambele anunturi pe care trebuia sa le faca in timp ce mergea playerul audio. Repet, asta se intampla de prin primavara. Pana atunci muti ani de zile nu a existat aceasta problema. Stie cineva vreo rezolvare sau, daca nu exista, o alta metoda de a comanda espeak sa-mi spuna ora in acelasi fel? |
#2
Posted 25 August 2019 - 10:08
Nu are nimeni un raspuns?
Problema sigur e legata dre cron, si nu de espeak sau pulseaudio, pentru ca dau aceeasi comanda in terminal in timp ce functioneaza un player, espeak imi spune cat e ceasul. |
#3
Posted 25 August 2019 - 11:28
Îți dai seama că problema ta este una mai rar întâlnită, nu văd prea multe cazuri în care ai vrea să-ți spună cineva cât este ceasul.
Nu ai dat suficiente detalii, ce versiune de linux, de cron, de espeak. Eu sînt mai mult ca sigur că problema nu este de la cron, mai degrabă de la pulseaudio. Am făcut un test pe Debian 10 cu cron 3.0pl1-134, espeak 1.48.03 și cu alsa în loc de pulseaudio și a funcționat corect chiar dacă în acel moment rula audacious. Ca un sfat legat de cron, poți folosi 0,30 8-23 * * * ... în loc de cele 2 intrări separate. |
#4
Posted 25 August 2019 - 12:00
uite o sugestie, desi nu stiu daca are legatura cu problema ta - niceness
ambele procese ruleaza sub acelasi user? adica cronul si audacious? |
#5
Posted 25 August 2019 - 12:04
Nu pare să fie o problemă de cron, ci de aplicație/driver. Dacă te uiți prin loguri vei vedea că espeak a rulat la orele stabilite, doar că n-a putut să preia controlul audio ca să-ți spună ție cît e ceasul.
|
#6
Posted 25 August 2019 - 12:14
Mulțumesc mult pentru sfaturi.
Nevoia unui ceas vorbitor se datoreaza faptului ca sunt lipsit in totalitate de notiunea timpului. Si in telefon am ceva asemanator. E vorba de Linux Mint Cinnamon 19.2 cron 3.0pl1-128.1ubuntu1 espeak 1.48.04+dsfg-5 pulseaudio 1:11.1ubuntu7.2 dar și in Mint 19.1 sau Manjaro facea la fel. Momentan am updatat cronul la versiunea 3.0pl1-134 si astept sa vad cum se comporta. Treaba e ca nu pot inlocui pulseaudio cu alsa ca am niste aplicatii care depind de acesta. Revin. |
#7
Posted 25 August 2019 - 12:20
@born2lose
Da @mufa O sa ma uit (trebuie mai intai sa le gasesc) dar mi se pare ciudat că daca, in timp ce canta playerul, dau comanda in terminal imi spune cat e ceasul. De aceea am presupus ca e de la cron. Ca si cum in acel moment nu ar avea drepturi de executie in pulseaudio care raman suspendate pana opresc playerul. |
#8
Posted 25 August 2019 - 15:12
Ai dreptate. Asta e in log la o ora cand aveam un player pornit:
Aug 25 13:30:01 eu-desktop CRON[6150]: (eu) CMD (espeak -vro -a 12 "Ceasul este $(date +%R)." # JOB_ID_1) Aug 25 13:30:01 eu-desktop pulseaudio[2497]: [alsa-sink-ALC1150 Analog] alsa-sink.c: Error opening PCM device front:0: Device or resource busy Aug 25 13:30:01 eu-desktop pulseaudio[2497]: [alsa-sink-ALC1150 Analog] alsa-sink.c: Error opening PCM device front:0: Device or resource busyIntrebarea este cum rezolv, sau daca mai exista o alta metoda pentru a face calculatorul sa-mi spuna ora. |
#10
Posted 25 August 2019 - 21:13
alsa-utils era deja instalat (1.1.3-1ubuntu1) asa ca am schimbat doar comanda cu cea indicata de tine dar, din pacate, nu s-a schimbat nimic.
Asta am in log pentru ora 22 in timp ce era pornit un player Aug 25 22:00:01 eu-desktop CRON[4494]: (eu) CMD (espeak -vro -a 12 "Ceasul este $(date +%R)." --stdout | aplay # JOB_ID_1) Aug 25 22:00:01 eu-desktop pulseaudio[2207]: [alsa-sink-ALC1150 Analog] alsa-sink.c: Error opening PCM device front:0: Device or resource busy Aug 25 22:01:54 eu-desktop CRON[4493]: (CRON) info (No MTA installed, discarding output) |
|
#11
Posted 25 August 2019 - 21:50
tekoa, on 25 august 2019 - 10:08, said:
Nu are nimeni un raspuns? in crontab vei trece ora la care este lansat scriptl/programul care lanseaza la randul lui acel fisier audio. |
#12
Posted 25 August 2019 - 21:52
idea este ca acel lansarea acelui program/script creaza un thread paralel iar ce pui in acel thread e problema ta.iar tu pui ca in acel thread paralele sa ruleze un fisier audio.
Consecinta este ca pe placa audio vor rula in paralele si fisierul tau la ora dorita si orice se mai gaseste la ora respectiva care ocupa placa audio atunci, |
#13
Posted 25 August 2019 - 23:10
Quote
Aug 25 22:00:01 eu-desktop pulseaudio[2207]: [alsa-sink-ALC1150 Analog] alsa-sink.c: Error opening PCM device front:0: Device or resource busy |
#14
Posted 26 August 2019 - 00:22
MartinAdelberg, on 25 august 2019 - 21:50, said:
fa-ti un script/program care la ora data de crontab, lanseaza scriptul/programul in executie, si acel script/program lanseaza acel fisier audio, intr-un thread paralel. in crontab vei trece ora la care este lansat scriptl/programul care lanseaza la randul lui acel fisier audio. Adica crontab in loc sa-mi lanseze la ora respectiva espeak care sa-mi spuna ora, adica comanda espeak -vro -a 12 "Ceasul este $(date +%R)." sa-mi lanseze un script plasat undeva care sa conțina acea comanda? Daca da, asta e unul dintre lucrurile pe care le-am incercat prima data caci observasem, asa cum am mai spus, ca desi cron-ul cu comanda nu are efect daca e placa audio ocupata cu ceva, aceeasi comanda data in terminal in aceleasi conditii producea efectul dorit si, desi nu prea stiu eu mult linux, mi-am inchipuit ca activarea unui script care sa contina acea comanda la o anumita ora de catre crontab e tot aia cu darea acelei comenzi in terminal. Din pacate efectul e acelasi. Daca imi canta playerul si dau clic pe script se aude ca imi zice si espeak ora, dar daca e activat de crontab nu-si face treaba, e mut. Eroarea in log in acest caz ecam tot aia din postarea #8, doar ca in loc sa-mi zica ca a pornit cron-ul espeak-ul, imi zice ca a pornit scriptul dar in rest e la fel, tot povestea cu Device or resource busy mi-o zice. @Kagaroth Acum chiar m-ai blocat. Nu prea înțeleg cum se face chestia aia. Treaba e ca de fapt se pot rula mai multe streamuri audio simultan, ca m-am gandit si la asta și, ca sa verific, am pornit trei playere in acelasi timp si se auzeau toate. Doar cu espeak are problema asta din ce constat eu. |
#15
Posted 26 August 2019 - 00:41
Adica doar cand e comandat de catre cron espeak nu vrea sa-si faca treba ca, asa cum am mai zis de cateva ori, daca dau comanda aia in terminal imi spune cat e ceasu chiar daca canta si playerul.
Concluzie: espek nu vrea sa vorbeasca cand e un player pornit decat daca e comandat din terminal, sau daca e comanda trecuta intr-un script pe care sa da click . Daca comanda e trecuta in cron, sau daca scriptul cu comanda e activat de un cron atunci nu-si mai face treaba decat daca placa audio nu e ocupata cu altceva. Placa audio permite mai multe streamuri audio simultan atat timp cat se pot auzi doua playere pornite in acelasi timp. Concluzia voastra??? ...ca eu nu mai inteleg nimic. De ce din terminal sau cu un click de mouse merge iar cu crontab-ul nu? Care e diferenta? |
|
#16
Posted 26 August 2019 - 13:50
Nu vine nimeni cu vreo concluzie, ca sa inteleg si eu de ce, daca functioneaza un player in timpul ala, comanda aia care instruieste espeak-ul sa-mi spuna ora, e functionala doar daca e data in terminal si nu si daca e activata de un cron?
Cine e de fapt de vina, ca sa pot cauta totusi o solutie, sau cum s-ar putea remedia problema? |
#18
Posted 25 October 2019 - 00:20
Nu se încumetă nimeni cu o explicație si o soluție pentru aceasta stranie ciudățenie?
Între timp am mai încercat și cu saytime și m-am izbit de aceeasi problemă manifestată identic: Dacă în timpul ăla placa audio e ocupată de ceva (un player) comanda dată în terminal sau trecută într-un script activat manual funcționează, dar dacă comanda sau scriptul e activat de un cron binevoiește să-mi dea întotdeauna eroarea Quote [alsa-sink-ALC1150 Analog] alsa-sink.c: Error opening PCM device front:0: Device or resource busy Edited by tekoa, 25 October 2019 - 00:21. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users