Не удается запланировать изменение громкости звука с помощью Cron (Попытка напрямую выполнить cron, python и т. д.)

Для ошибки :вам нужен буквальный (символ новой строки )без обратной косой черты после текста команды i. В GNU sed вам может сойти с рук

seq 3 | sed -n -e '/2/{iline1\nline2' -e 'P}'

точно так же, как вам сошло с рук \nдля новой строки.

В противном случае:

seq 3 | sed -n '/2/{i\
line1\
line2
P;}'

Что касается ваших утверждений :, команда i"вставляет" в выходной файл, а не в пространство шаблонов. В исправленном примере пространство шаблона будет равно 2, что Pбудет напечатано полностью, так как оно не содержит новой строки.

Как правило, справочная страница GNU sed представляет собой беспорядок, и к ней следует обращаться только в отношении расширений GNU. Я рекомендую стандартную спецификацию , которая гораздо более удобочитаема :

.

[1addr]i\
text
       Write text to standard output.
[2addr]P
       Write the pattern space, up to the first , to standard
       output.

2
11.10.2021, 17:01
2 ответа

После всей помощи, которую я получил, я в конце концов смог найти решение. Это не то решение, которое я действительно хотел, и оно не очень чистое, но оно работает, поэтому я публикую его здесь.

Проблема в моем понимании

Суть проблемы, по-видимому, заключается в том, что запуск Amixer в качестве общего пользователя повышает права доступа Sudo независимо от того, что я делаю, а создание другого пользователя только для запуска аудио Cronjobs не сработало.

Это привело к тому, что каждая команда amixer, отправляемая вручную через терминал, регулировала громкость до максимального значения 65536, а каждая команда, отправляемая через Cron, доводилась до 88. Это огромное несоответствие приводило к эффективному отключению звука независимо от того, что я делал.

Благодаря большой помощи двух людей здесь я пришел к выводу, что это, вероятно, потому, что один пытается запустить bash, а другой запускает sh. Но заставить этих двоих примириться, кажется, невозможно.

В конце концов я сдался и полностью изменил то, как я управляю всеми физическими компонентами вместе...

Итак, вот мое решение:

После перехода на адаптер HDMI-AGP я подключил простой 3,5-мм штыревой аудиоразъем -к -от NUC к телевизору. Телевизор, который я использую, поддерживает видео с AGP и звук с 3,5 мм, так что теперь у меня есть видео на телевизоре, но аудио нужно было переключить на Stereo Outputна NUC, чтобы заставить его работать.

После этого я пробежал amixer scontentsи sudo amixer scontentsи просмотрел информацию. Masterотобразил два отдельных значения, как я и ожидал, но PCMтеперь показывал 255, чего раньше не было.

Имея это в виду, я переключил свое внимание с Master на PCM и обновил Crontab следующим:

40 06 * * 1-5 amixer sset 'PCM' 191 2> /tmp/cronVolumeLog

25 07 * * 1-5 amixer sset 'PCM' 64 2> /tmp/cronVolumeLog

40 14 * * 1-5 amixer sset 'PCM' 128 2> /tmp/cronVolumeLog

Теперь все работает так, как я ожидал, хотя и с небольшим потрескиванием и другими незначительными проблемами, которые появляются при использовании аудиоразъема, но мне придется с ними разобраться.

Я знаю, что это не самый честный ответ на вопрос,но это единственное, что я нашел, которое сработало для меня после (буквально )дней поиска и работы со всеми, кто готов мне помочь.

Я надеюсь, что кто-нибудь когда-нибудь увидит этот пост, продвинется немного дальше меня и найдет решение. Или быстро сдаться и жить дальше своей жизнью и радоваться дурацкому аудиоразъему.

Но я многому научился, так что это кое-что.

1
14.10.2021, 15:37

Запуск amixer через cron выполняется от имени пользователя sudo в соответствии с расширением OP. Я обнаружил, что вместо «Master» у вас будет «Headphone» или аналогичный, который управляет выходом AV. Вместо того, чтобы возиться с необработанными значениями уровня громкости, просто используйте процент, чтобы установить громкость на желаемый уровень. то есть

15 09 * * * /usr/bin/amixer set Master 100\%

Примечание. :В приведенном выше примере знак процента экранирован.

1
01.12.2021, 19:57

Теги

Похожие вопросы