LINUX.ORG.RU

загадка природы: fcron


0

0

fcron не дружит со звуковым устройством. Напр. когда он запускает «xmessage -center hello», то всё работет, а когда «mpg321 /home/paxac/snd.mp3» — нет.

В итоге я вывел команду, которую выполняет fcron в отдельный скрипт ~/runme.sh и поставил две команды вместе:

#!/bin/sh
xmessage -center hello
mpg321 -v /home/paxac/snd.mp3 /home/paxac/tmp/mpg321.log 2>&1

xmessage выводит сообщение, а mpg321 не поёт. Смотрю mpg321.log:

ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
No default libao driver available.

Т.е. получается, когда команды выполняется fcron'ом, то что-то случается со звуковым устройством. А когда я сам запускаю тот скрипт, то всё работает хорошо.

В чем дело может быть?

-------- UPD ------------

sudo aplay ... — работает

sudo -u fcron ... — не работает.

т.е. если запускаеть из под моего пользователя или из под рута, то звук работает. Из под пользователя fcron — нет.


Ответ на: комментарий от AITap

Не помогло.

Вообще, про запуск из другого пользователя — это я зря подумал. «sudo -u fcron xmessage hello» тоже не работает («Error: Can't open display: :0.0»), а когда его запускает fcron (программа, а не пользователь), то xmessage работает.

paxac ()
Ответ на: комментарий от AITap

> Вход в систему через kdm или gdm?

нет.

может быть, попробовать sudo adduser $(whoami) audio?

нет. Я уже числюсь в этой группе. Добавление к audio пользователя fcron не помогло, как я уже писал. ВИдимо не в этом дело. Да и вроде бы fcron (как и обычный cron) запускает задания от имени меня.

paxac ()

Запусти aplay -l и aplay -L от своего имени и от имени fcron. Вывод покажи.

Deleted ()
Ответ на: комментарий от AITap
null
    Discard all samples (playback) or generate zero samples (capture)

а когда я сам запускаю, то

**** List of PLAYBACK Hardware Devices ****
card 0: I82801AAICH [Intel 82801AA-ICH], device 0: Intel ICH [Intel 82801AA-ICH]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
null
    Discard all samples (playback) or generate zero samples (capture)
default:CARD=I82801AAICH
    Intel 82801AA-ICH, Intel 82801AA-ICH
    Default Audio Device
front:CARD=I82801AAICH,DEV=0
    Intel 82801AA-ICH, Intel 82801AA-ICH
    Front speakers
surround40:CARD=I82801AAICH,DEV=0
    Intel 82801AA-ICH, Intel 82801AA-ICH
    4.0 Surround output to Front and Rear speakers
surround41:CARD=I82801AAICH,DEV=0
    Intel 82801AA-ICH, Intel 82801AA-ICH
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=I82801AAICH,DEV=0
    Intel 82801AA-ICH, Intel 82801AA-ICH
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=I82801AAICH,DEV=0
    Intel 82801AA-ICH, Intel 82801AA-ICH
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
iec958:CARD=I82801AAICH,DEV=0
    Intel 82801AA-ICH, Intel 82801AA-ICH
    IEC958 (S/PDIF) Digital Audio Output
(при этом всё работает, звук идет).

Интересно, ведь fcron запускает команды от моего имени. Я даже прописывал whoami>>logfile и там было paxac, тобишь я.

paxac ()
Ответ на: комментарий от paxac

P.S. то, что я нахожусь в группе audio я определяю так:

$ groups
users floppy audio video cdrom
$ id
uid=1000(patkov) gid=100(users) группы=11(floppy),17(audio),18(video),19(cdrom),100(users)
но в /etc/group написано
$ cat /etc/group|grep aud
audio:x:17:root
т.е. какбы только root входит... Хотя я в этом не понимаю ничего.

paxac ()
Ответ на: комментарий от AITap

groups >> somefile?

сначала я:

users floppy audio video cdrom

теперь из под fcron:

users

Но я добавлял fcron в группу audio. Ничего не менялось.

paxac ()
Ответ на: комментарий от paxac

Попробуйте разлогиниться, залогиниться на tty (желательно, другим пользователем) и добавить себя в группу audio при помощи adduser.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

adduser какая-то глупая. Она интерактивная. Я пишу имя пользователя (fcron), а она, что такое уже есть в системе. Поэтому я добавлял так:

$ sudo usermod -G audio fcron

в /etc/groups прописалось

audio:x:17:root,fcron

Но из fcron (программы) выдается `groups` только users.

paxac ()
Ответ на: комментарий от AITap

Ого. Спасибо большое, что помогли разобраться. Добавил — заработало.

Но самое интересное: почему когда я до этого вводил groups или id, то в списке БЫЛА группа audio (см. несколько постов выше).

paxac ()
Ответ на: комментарий от paxac

P.S. Вообще, нет ли где-нибудь нормального мануала (желательно на русском, но и англ. пойдет), где бы объяснялись все эти /etc/{group,passwd,group-,passwd-,shadow-,gshadow}... черт голову словает.

paxac ()
Ответ на: комментарий от paxac

> Но самое интересное: почему когда я до этого вводил groups или id, то в списке БЫЛА группа audio
Не знаю. Возможно, используемый менеджер дисплеев/окружение рабочего стола/менеджер сессий временно добавляют пользователя в нужные группы на время запуска и в пределах одной сессии. У меня так было с GDM (когда я отказался от него в пользу SLiM, у меня неожиданно пропал звук).

Мануалом, по идее, должен быть man 5 group, man 5 passwd и прочее. На деле, правда, это не всегда спасает.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

я выполнял groups и id на терминале (чистом, без исков). Там я тоже числюсь в группе video, audio, cdrom и т.д. Но в /etc/group после последнего двоеточия стоит только root.

paxac ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.