LINUX.ORG.RU

Запуск (перезапуск) mpd при старте системы

 ,


0

2

Очевидно, что можно делать через cron или /etc/rc.local Но, mpd управляется через systemctl. А проблема в том, что cron и rc.local - это не я, а другой пользователь (система). А мне нужно запускать именно от пользователя (почему, это другой разговор, но нужно именно так). Обычно перезапускаю так systemctl –user restart mpd Пробовал делать задание для крон с задержкой: сначала mpd –kill, потом перезапуск. Но он удаляется, но не запускается. Была версия, что не понимает команду, и писал полный путь /usr/bin/systemctl –user restart mpd. Не выполняет. И даже –system не запускает.

С rc.local тоже пришлось помучиться. «/usr/bin/systemctl –user restart mpd» или даже через «sudo -u my_username /usr/bin/systemctl –user restart mpd» появляется ошибка Failed to connect to bus: No such file or directory

Получилось только так. /usr/bin/systemctl –system restart mpd, запускается нормально, но от имени системы. Мне это не нужно. Причина в том, что звук хуже!!! Не знаю, почему и зачем, и не хочу доказывать. Просто прошу помочь.

Как мне перезапустить mpd при старте системы? Может быть, есть еще способы? Есть еще альтернативные крон anacron - может быть он поможет? Честно, пока не представляю, зачем он нужен, если есть старый добрый cron. Только сейчас вспомнил о нем, и может именно для таких ситуаций он создан? Помогите.

Ответ на: комментарий от vbcnthfkmnth123

Не, это тяжёлый случай аудиофилии, возможно даже клинический. Другие его темы посмотри, если есть желание развлечься.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
$ systemctl --user cat emacs.service        
# /home/user/.config/systemd/user/emacs.service     
[Unit]
Description=Emacs: the extensible, self-documenting text editor

[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Restart=always

[Install]
WantedBy=default.target


Я Emacs так запускаю. Не вижу причин, чтобы не запускать MPD так же. Соответственно тебе нужно:
1. systemctl disable mpd
2. Закинуть service-файл в ~/.config/systemd/user
3. systemctl --user enable mpd

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

и как мне это должно помочь? Там просто как запустить. У меня он запускается и перепускается, а rc.local не может это делать через systemctl –user, а только systemclt –system.

honestvova
() автор топика

А почему, когда делаешь через sudo, возникает ошибка?

music@music:~$ sudo /usr/bin/systemctl --user restart mpd
[sudo] пароль для music:
Failed to connect to bus: Нет такого файла или каталога

Я думаю, если с этим разобраться, то это решит мою проблему. Ведь можно sudo -u music сделать. Но пока это не фурычит.

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

Я тут дорос до сценариев init.d Может быть, хоть там получится? Нужно было при выключении кой-чего делать, а тут оказывается можно и при включении настроить.

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

Я так и не понял, какие проблемы у тебя с systemd. Тебе тут уже неоднократно все объяснили.

А почему, когда делаешь через sudo, возникает ошибка?

Да потому что, при запуске через sudo пользователь уже root.

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

Ничего мне не объяснили. Просто дали ссылки не на то, что мне надо. Мне надо перезапускать плеер от моего имени, но чтобы это делала система. Так не получается из-за ошибки, которую я написал в предыдущем сообщении. Система может только сама от себя перезапускать, а это не подходящий вариант.

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

«ручками через тот же systemd» - если б я так хотел, я бы тут не спрашивал. Мне надо автоматом. Уже 100 раз проверено, что от имени системы плеер звучит хуже. Намного, в моем конкретном случае. В вашем - ну наверное нет разницы, потому что и так, и эдак плохо будет. Я уже все настроил на свой вкус и слух, разница очень большая! Но надо именно от пользователя запускать. добавил в init.d эту команду, всё выполняет при старте, а плеер именно не хочет перезапускать от пользователя. Ошибка та же самая, что и была для rc.local Придумайте мне способ!!!! СУКИ

honestvova
() автор топика

я понял, почему он звучит по-другому под –system. Как минимум, потому что .asoundrc в каталоге пользователя. А где он у root должон быть хрен знает. Но это как минимум! А так может еще каких конфигов не хватает.

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

реал! Поменял asound.conf (не было его) - стало гораздо лучше, даже наверное лучше чем под –user стало (но это не точно). Но точно лучше! Короче, всех «с новым годом, пошел нафиг»

honestvova
() автор топика

Рассказываю, чем все закончилось, и как я справился с задачей. В итоге, отключил автозапуск от юзера, и стал запускать через inid.d от системы. Звук, несомненно, отличается! Если вы не придирчивы к звуку, то можно себя убедить, что играют одинаково, но это совсем не так. Как минимум, у юзера ~/.asoundrc а у системы /etc/asound.conf. При этом (важно) ~/.asoundrc нужно удалить, так как он портит звук! И в целом, все закономерности для –system другие. Если от –user звук был лучше на .asoundrc на pcm 0 ctl HDMI, то от –system лучше pcm PCH и ctl HDMI. При этом, звук мне больше понравился! Что еще итересно, что от юзера GRUB_CMDLINE_LINUX_DEFAULT=«quiet clocksource=hpet threadirqs» звучало хуже, а от системы просто сносит башню! В общем и целом, мне удалось поднять звук на еще один новый уровень! Хотя, на первый взгляд, от системы звучал плеер хуже, но на самом деле, просто нужны уже совершенно другие настройки. Поэтому вывод - лучше запускать MPD от –system, а не от –user. И звук лучше (при тщательном подходе), и проблем с systemctl нет.

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

Все-таки, со временем оказалось, что от system звук сильно уступает. Хотел разобраться, но в итоге смог сделать рабочую команду, которая перезапускает от юзера.

printenv XDG_RUNTIME_DIR
#выдаст путь, который нужен ниже (в моем случае /run/user/1000)
sudo -u your_username XDG_RUNTIME_DIR=/run/user/1000 bash -c '/usr/bin/systemctl --user restart mpd'
#здесь вместо your_username нужно вставить своего пользователя
honestvova
() автор топика