Эта команда изящно выходит из дерева хромированных процессов во всех оконных менеджерах:
pkill --oldest chrome
или, если вы предпочитаете:
/usr/bin/pkill --oldest --signal TERM -f chrome
Подробности:
SIGTERM
-старейший
SIGTERM
такой же, как и сигнал 15
, следовательно -сигнал TERM
, или просто пропустите это, так как SIGTERM
- это сигнал по умолчанию wmctrl
работает с Unity и некоторыми другими, но он работает не со всеми оконными менеджерамиwmctrl -c
закрывает по одному окну за раз, так что чтобы закрыть все хромированные окна, нужно что-то вроде , в то время как wmctrl -c 'Google Chrome'; спать 0. 2; done
(надеюсь) IMPROVED CODE AT BOTTOM
Откройте два подоболочки [113088]$(подстановка команд)[113089], по одной для присвоения значения [113090]$TOPXY[113091] и [113092]$INRES[113093]. [12176] Для [112938]$TOPXY[112939] вы: [12177]Con[113094]cat[113095]enate your [113096]tmp[113097]file with [113098]stdin[113099] and anonymously [113100]|pipe[113101] results to [113102]grep[113103]'s [113104]stdin[113105] who then . ...[12178]oEe[113107] опускает любую строку и любую часть любой строки, которая таким образом не содержит строку: [12179]"[113182]углы:[113183]", за которым следует ...[12178]oEe[113107] ... [12180]на [113184]+[113185] по крайней мере один [113186]\s[113187] символ пробела, затем ...[12181]a [113188]\+[113189] буквенный знак плюс, затем .... [12182] на [113190]+[113191] по крайней мере одна [113192][0-9][113193] цифра ...[12183] другая [113194] \+[113195] буквенный плюс ...[12184] и, наконец, по крайней мере [113196]+[113197] еще одна [113198][0-9][113199] цифра. ...[12185] Результат анонимно [113110] |piped[113111] до другого экземпляра [113112] grep[113113], который впоследствии [113114]-oEe[113115] опускает все до того, как ваш первый захваченный [113116][0-9][113117] разряд, а затем анонимно [113118] |pipe[113119] его результат до . ...[12186]sed[113121], который [113122]tr[113123]ansforms all literal [113124]\+[113125] pluses it gets to [113126],[113127] commas and dumps to his [113128]stdout[113129] which is ... [12187]наконец захвачен и сохранен в [113130]$TOPXY[113131] с помощью [113132]$(команда подставлена)[113133] присвоения переменных подоболочки.[12188]Процесс для [112950]$INRES[112951] кажется во многом таким же, если немного менее сложным. [12189]Наиболее примечательным для меня является то, что весь файл [112952]tmp[112953] является con[112954]cat[112955]enated как минимум [112956]дважды [112957] для каждого вызова, не говоря уже обо всех [112958]|pipes[112959]. Возможно, есть много способов сделать это, но я не могу представить, что это будет одним из лучших из них. После этого вы вызываете [112960]ffmpeg[112961], ссылаясь на две переменные, указанные выше, и на различные другие опции, в том числе и на другие переменные окружения, которые вы также указали: [12191]PROBABLY MORE DIRECT[12192] Что далее включает в себя отсутствие файлов [112964]tmp[112965], единственный [112966]|pipe[112967], вызов только одного вызова [112968]sed[112969] и единственной подоболочки [112970]подстановки команд [112971] для разбора настроек геометрии, и содержится в одной функции. Все переменные окружения определены в [112972]here-документах [112973], переданных в его [112974]stdin[112975] и, следовательно, эффективно локально скопированы. Они также определяются через [112976]-подстановку параметров[112977] и, следовательно, могут быть сконфигурированы. Например, чтобы изменить значение [112978]$FPS[112979] для одного вызова, нужно всего лишь:[12193]Однако, я все же думаю, что [112980]vlc[112981] сделает гораздо лучший вариант. [12194]
Итак, у вас определенно установлен pulseaudio, но вам явно не хватает драйверов эмуляции ALSA pulseaudio. Pulseaudio взаимодействует с клиентскими приложениями по-разному, но наиболее распространенным является то, что приложения обращаются к ALSA, а pulseaudio для перехвата. Alsamixer evern работает таким образом в правильно настроенной системе. Здесь - очень полезная страница для понимания того, как работает pulseaudio. В частности, в module-alsa-stream сказано следующее:
Вам (почти) никогда не придется загружать этот модуль вручную.
Возможно, вас заинтересует модуль, пара строк вверху, модуль-конвейер- {приемник, источник} :
Предоставляет простой тест {приемник, источник}, который {пишет, читает} аудиоданные {в, из} FIFO ...
С этой целью, если у вас есть VLC или вы можете его получить, вы можете попробовать потоковое воспроизведение с ним:
pacmd list-source-outputs
должен содержать выходной адрес примерно такой Я вставил ниже для вашего фиктивного источника:
cvlc pulse://alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor \
--sout '#transcode{acodec=mpga,ab=128,channels=2}:\
standard{access=http,dst=0.0.0.0:8080/pc.mp3}' &
О, и, возможно, вас также интересует pacat , и вы, вероятно, уже получили его. Это единственный исполняемый файл, на который ссылаются как parec , так и paplay .
Еще немного о Pulse / ALSA (хотя документация по этому поводу довольно хороша):
Pulseaudio пытается имитировать ALSA для любого приложения, которое еще не было обновлено для взаимодействия с ним. По сути, теория гласит, что если приложение не оборудовано для работы с dbus с помощью pulse, Pulse все равно будет посредником ALSA через интерфейс плагина module-alsa-stream , о котором я упоминал ранее.Фактически, то же самое верно для OSS и Esound и их соответствующих модулей, если они потребуются.
Но, возможно, вы слишком много думаете об этом - простейшую потоковую передачу звука можно выполнить с помощью mkfifo или даже просто cat, если хотите. В зависимости от требований к пропускной способности и задержке netcat может быть здесь весьма полезен. Вы также можете заглянуть в Sox - он предлагает интерфейс, похожий на pacat.
Какой у вас дистрибутив Linux? Я понимаю, что это в контейнере, но здесь, вероятно, требуется проверка, что вы обновили все соответствующие пакеты, особенно если Pulse не работает. Попробуйте следующее:
pulseaudio --start
Если он запустится, попробуйте это, возможно, лучше намекните на ваш источник:
pacmd list-source-outputs | grep 'source:'