LINUX.ORG.RU

rc.local не может вызвать alsactl

 , , , ,


1

2

У меня есть нужда вызывать команду «/usr/sbin/alsactl –file /home/rainbow/bin/asound.state restore» при запуске системы. Я ее добавил в /etc/rc.local . На моем ноуте при перезапуске сбрасываются настройки alsa. Их можно восстановить в alsamixer или сохранить нужные настройки в файл и загружать их с помощью alsactl. Я хочу загружать настройки alsa при загрузке системы. В консоли этот вызов успешен, но rc.local не вызывает его(не обновляются настройки). Почему?
Вот мой rc.local:

#!/bin/sh -e

/usr/sbin/alsactl –file /home/rainbow/bin/asound.state restore

exit 0



Последнее исправление: Dmitro (всего исправлений: 6)

#!/bin/sh -e

а если -e убрать?

teod0r ★★★★★
()

Скорее всего юнит сисямд rc-local не включен.

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

Что там удваивать. Из вопроса понятно, что либу убунта, либо арч, либо кали.

anonymous
()

для проверки работоспособности твоего rc.local советую попытаться вызвать его из консоли. Просто пишешь в терминале /etc/rc.local и смотришь выхлоп. В выхлопе ты увидишь что идет не так. Если ошибок нет, но проверь включен ли юнит rc-local

r0ck3r ★★★★★
()

Это вообще не надо в эрцэлокал пихать, потому что есть юнит alsa-restore.

imul ★★★★★
()
Ответ на: Ubuntu от Dmitro

Точнее

Точнее Lubuntu и Ubuntu

Dmitro
() автор топика
Ответ на: xinitrc от Dmitro

В лхде есть настройки автозаруска пропиши туда. А rc с приходом системд устарел

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

rc.local работает

выхлопа нет. Проверял еще так: #!/bin/sh -e

touch /state1

/usr/sbin/alsactl -f /home/rainbow/bin/asound.state restore

touch /state2

exit 0

все два файла создались(state1 и state2)

В последнем предложении ты про это? : sudo systemctl status rc-local. Вот что она выдает

Drop-In: /lib/systemd/system/rc-local.service.d └─debian.conf

Active: active (exited) since Вс 2020-01-12 12:46:32 MSK; 4h 6min ago

Process: 1540 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)

янв 12 12:46:31 rainbow-MS-B10611 systemd[1]: Starting /etc/rc.local Compatibility…

янв 12 12:46:32 rainbow-MS-B10611 sudo[1564]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/alsactl restore

янв 12 12:46:32 rainbow-MS-B10611 sudo[1564]: pam_unix(sudo:session): session opened for user root by (uid=0)

янв 12 12:46:32 rainbow-MS-B10611 sudo[1564]: pam_unix(sudo:session): session closed for user root

янв 12 12:46:32 rainbow-MS-B10611 systemd[1]: Started /etc/rc.local Compatibility.

Dmitro
() автор топика
Ответ на: ок от Dmitro

Не надо тебе лезть в системные настройки и системд. Есть простые настройки автозапуска в ДЕ добавь команду туда и не еб…мозг

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

Спасибо

Заработало. Мм, странно, почему с rc.local не работало? По команде systemctl status alsa-restore.service я получил:

● alsa-restore.service - Save/Restore Sound Card State

Loaded: loaded (/lib/systemd/system/alsa-restore.service; static; vendor preset: enabled)

Active: active (exited) since Вс 2020-01-12 17:22:53 MSK; 1min 51s ago

Process: 1066 ExecStart=/usr/sbin/alsactl -E HOME=/run/alsa restore (code=exited, status=0/SUCCESS)

Process: 1001 ExecStartPre=/bin/mkdir -p /run/alsa (code=exited, status=0/SUCCESS)

Main PID: 1066 (code=exited, status=0/SUCCESS)

CGroup: /system.slice/alsa-restore.service Возможно ли такое, что где-то в системд вызывается alsactl restore после rc.local, но перед DE автозагрузки?

Dmitro
() автор топика
Ответ на: Спасибо от Dmitro

Да,заработало после того, как я добавил в автозапуск в ДЕ

п

Dmitro
() автор топика
Ответ на: комментарий от anonymous

Не работает

Нет, нифига. На Ubuntu работает с радостью(мне нужен этот скрипт на Lubuntu). На Lubuntu не работает.

Dmitro
() автор топика
Ответ на: Спасибо от Dmitro

Мм, странно, почему с rc.local не работало?

Systemd по дефолту плевать на rc.local.

По команде systemctl status alsa-restore.service я получил:

Судя по выводу, состояние карты таки возвращается нормально, но я не помню (alsa-state вроде) какой сервис отвечает за сохранение при выключении, его бы тоже глянуть, скорее всего там косяк.

Возможно ли такое, что где-то в системд вызывается alsactl restore после rc.local, но перед DE автозагрузки?

У тебя rc.local не вызывается вообще, смотри выше. И если так уж надо пройди по ссылке с инструкцией и включи.

На Ubuntu работает с радостью(мне нужен этот скрипт на Lubuntu).

Думаю автозапуск у них в разных местах.

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

И это, pulseaduio стоит? Если да то это она, по пульсе не помогу, не пользуюсь.

anonymous
()

sysemd не помог

Sysemd тоже не помог. Вот файл .service:

[Unit]
 Description=/etc/rc.local Compatibility
 After=alsa-restore.service
[Service]
 Type=forking
 ExecStart=/home/rainbow/bin/alsaProp.sh start
 TimeoutSec=0 
 StandardOutput=tty
 RemainAfterExit=yes
 
[Install]
 WantedBy=multi-user.target
Вот файл ExecStart=/home/rainbow/bin/alsaProp.sh:
#!/bin/sh
/usr/sbin/alsactl restore -f /home/rainbow/bin/asound.state
touch /home/rainbow/bin/moneymoney.verify
Все нормально запускается, вот вывод:
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset:
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Вс 2020-01-12 21:50:10 MSK; 13min ago

янв 12 21:50:09 rainbow-MS-B10611 systemd[1]: Starting /etc/rc.local Compatibili
янв 12 21:50:10 rainbow-MS-B10611 systemd[1]: Started /etc/rc.local Compatibilit
янв 12 22:03:57 rainbow-MS-B10611 systemd[1]: [/etc/systemd/system/rc-local.serv
но это все равно не помогает! Ручной вызов /home/rainbow/bin/alsaProp.sh все делает классно. Вообщем, я думаю, какая то фигня вызывает очистку alsa после вызова моего .service. Ведь, когда я через Ubuntu «Автоматически загружаемые приложения» указывал скрипт, то все работало нормально(но мне нужно на Lubuntu, а там через графическую не помогло). Единственный шанс init.d с его графическим уравнем.

Dmitro
() автор топика
Ответ на: sysemd не помог от Dmitro

На лхде или лхкьюте нормально автозапуск работает. Что то не то ты делаешь покажи какую команду и куда добавил в настройках ДЕ

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

Решение

Все я настраивал нормально. И все мои сомнения подтвердились. Вообщем, какой-то процесс очень поздно очищал alsa настройки. Но мой .service запускался намного раньше очистки, т.е. все что я применял к alsa очищалось(т.к. какой-то процесс вызывает очистку всех настроек позже моего). Я этот процесс вычислить так и не смог(он у какого-то демона в зависимостях). Я просто поставил sleep 10, в итоге после 10 секунд, у меня настраивался должным образом alsa. То есть все работает должным образом. Теперь вопрос: как вычислять такие процессы? Как понять, кто и где вызывает очистку определенную программу? (мне чисто из любопытства. Т.к. все таки бывает нужна точность)

Dmitro
() автор топика
Ответ на: Решение от Dmitro

Пакет алса утилс содержит два сервиса сохранения настроек запускается при выключении и восстановления при включении

usr/lib/systemd/system/alsa-restore.service

usr/lib/systemd/system/alsa-state.service

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