LINUX.ORG.RU
решено ФорумAdmin

Странная ошибка при попытке запустить фоновый процесс

 , ,


0

2

Запускаю вот такой скрипт (в максимально упрощённом виде):

#!/bin/bash

#ping ya.ru &
fluidsynth -a pulseaudio -r 44100 -z 1024 -c 8 -s /usr/share/sounds/sf2/FluidR3_GM.sf2 &> /dev/null &
PID=$!
echo $PID
sleep 5
kill $PID

На выходе получается:

23334
./fff.sh: line 8: kill: (23334) - Нет такого процесса

С ping такой проблемы нет. Если стартовать fluidsynth отдельно, он работает без нареканий. Что ему тут вдруг не нравится?

★★★★★

Чего тут странного? Самодемонизируется он.

Ну или просто завершается, но это, я надеюсь, вы догадались исключить.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Не самодемонизируется и не завершается, в том-то и дело. Если отдельно его запустить, он пишет много всего в стдин и стдерр, потом становится виден как миди-выход в музыкальных приложениях. При запуске из скрипта он не видим и не убивается kill-ом.

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

Если отдельно его запустить, он пишет много всего в стдин и стдерр, потом становится виден как миди-выход в музыкальных приложениях. При запуске из скрипта он не видим и не убивается kill-ом.

Проверяет, откуда запущен(из интерактивного шелла или из скрипта) и меняет поведение, не?

В исходники не смотрел, пишу в порядке бреда

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

Вот что-то такое, видимо, там и зарыто, потому что вот такое в скрипте работает:

screen -d -m fluidsynth -a pulseaudio -r 44100 -z 1024 -c 8 --server --no-shell /usr/share/sounds/sf2/FluidR3_GM.sf2

Всё это очень странно.

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

С правами все ли на месте? Вот это вам ничего не даст?

«Note that you can't use root to restart the fluidsynth service, if you're using the pulseaudio driver. Pulseaudio won't allow root to connect, since the pulseaudio server is usually started by the user (and not root). You can solve it by creating a systemd/User service (replacing multi-user.target with default.target in the copied fluidsynth.service).»

Ну и заодно

https://bugs.archlinux.org/task/50122

vaddd ★☆
()
Последнее исправление: vaddd (всего исправлений: 1)
Ответ на: комментарий от vaddd

Да, в итоге у меня заработало, если подавить вывод fluidsynth. Странно, что они до сих пор не сделали его демонизируемым по нормальному, такие вопросы, как у меня в ОП, им в багтрекере ещё в 2004 задавали.

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