Здесь вы видите ожидаемое поведение systemd. Зависимость Requires=
гарантирует, что mysql.service
запускается всякий раз, когда запускается tomcat.service
, но после запуска два модуля становятся независимыми, и один не будет остановлен, когда другой.
Если вы действительно хотите, чтобы mysql.service
останавливался, когда tomcat.service
останавливается, вы можете использовать директивуPartOf=
, которая связывает блоки при останове и перезапуске.
Для описанного вами примера (с остановкой mysql.service
всякий раз, когда tomcat.service
останавливается ), вам нужно добавить PartOf=tomcat.service
к определению mysql.service
. Обычно лучший способ сделать это — использовать файл переопределения, что вы можете сделать с помощью systemctl edit mysql.service
, который откроет текстовый редактор с пустым файлом, после чего вы сможете добавить в него этот фрагмент:
[Unit]
PartOf=tomcat.service
Это будет сохранено в файле /etc/systemd/system/mysql.service.d/override.conf
, который станет частью mysql.service
, вы можете проверить это с помощью systemctl cat mysql.service
.
После этих изменений и systemctl daemon-reload
,это должно работать так, как вы ожидаете...
Что касается порядка, все должно работать так, как вы ожидаете, с единственным After=mysql.service
, который у вас есть в tomcat.service
, поскольку зависимости соблюдаются в обратном порядке при остановке служб. (Это означает, что в данном случае сначала будет остановлен tomcat.service
, а затем mysql.service
.)
Остановка модулей таким образом может быть не всегда хорошей идеей... Возможно, несколько лучшим подходом является создание отдельного.target
модуля для группировки всех сервисов, которыми вы хотите управлять вместе. Возможно что-то вроде webservices.target
.
Вы должны создать этот блок с таким содержимым, как:
[Unit]
Description=Web Services
Requires=tomcat.service mysql.service
After=tomcat.target mysql.service
[Install]
WantedBy=multi-user.target
А затем задайте tomcat.service
и mysql.service
значение PartOf=webservices.target
с помощью механизма отмены, описанного выше.
Включите целевое устройство с помощью systemctl enable webservices.target
, а затем вы можете запускать и останавливать обе службы вместе с systemctl start webservices.target
или systemctl stop webservices.target
.
У нас была точно такая же проблема с Zoom в Linux (Ubuntu, Lubuntu и Gentoo ). Решение оказалось следующим, и не требует использования PulseAudio Volume Control:
Запустите приложение для воспроизведения аудио или видео. Приостановите аудио/видео, если это необходимо.
Нажмите «Отключить звук» в Zoom, чтобы отключить микрофон (см. ПРИМЕЧАНИЕ ниже ).
Нажмите «Поделиться» в средней нижней части окна Zoom, выберите приложение (или «Рабочий стол» )и либо a )нажмите «Дополнительно», если вы хотите поделиться только аудио, либо b )Нажмите «Поделиться звуком компьютера» и «Оптимизировать совместное использование экрана для видеоклипа», если хотите поделиться видео.
Нажмите синюю кнопку «Поделиться».
Приостановить/запустить воспроизведение аудио/видео в аудио/видео приложении.
ПРИМЕЧАНИЕ. :Мы обнаружили, что качество звука значительно улучшается, если отключить микрофон перед отправкой аудио/видео. После запуска аудио/видеопотока можно включить микрофон.
В инструменте общего доступа Zoom есть флажок «Общий доступ к компьютерному аудио». Это работает, это сильно искаженный звук, который кажется перегруженным на каком-то уровне.
Этот скрипт работает Вам нужно будет установить микрофон в масштабе по умолчанию, а не микрофон, а в pavucontrol установить микрофон на «зум» и vlc или что-то еще на медиа.
(адаптировано с форума Manjaro )вы все равно получите некоторые искажения из-за масштабирования, так называемые -улучшения звука, которые вы не можете отключить в приложении Linux.
#!/bin/bash
pactl load-module module-null-sink sink_name=zoom sink_properties=device.description=zoom
pactl load-module module-loopback sink=zoom
pactl set-default-source zoom.monitor
pactl load-module module-null-sink sink_name=media sink_properties=device.description=media
pactl load-module module-loopback source=media.monitor
pactl load-module module-loopback source=media.monitor sink=zoom
В новой версии PulseAudio 13.99+ вы больше не можете выбрать «Система по умолчанию» в качестве микрофона в Zoom, что было способом заставить Zoom использовать монитор в качестве входа. Вы должны создать виртуальный источник:
pactl load-module module-null-sink sink_name=zoom_input sink_properties=device.description=zoom_input
pactl load-module module-remap-source master=zoom_input.monitor source_name=zoom_mic source_properties=device.description="zoom_mic"
При этом «зум-микрофон _» будет отображаться как устройство ввода в Zoom.
Используя pavucontrol, перенаправьте звук с вашего медиаплеера на вход «увеличение _», и он будет воспроизводиться в Zoom.
См. также это расширенное руководство по подключениям PulseAudio :https://github.com/toadjaune/pulseaudio-config
У меня были проблемы, аналогичные txneo999 (сильно искаженный звук ), когда я копался в настройках, предполагая, что уровень громкости превышает -управляющий сигналом, я наткнулся на "sample spec :" в pacmd list -sources -Это было на частоте 44100 Гц для зум-устройства.
В моей системе (UbuntuStudio 18.04 )была установлена частота 96 000 Гц, когда я установил ее на уровень Zoom, равный 44 100 Гц, искажения исчезли.