Почему служба systemd, успешно работающая в CentOS 7, не работает в CentOS 8?

Думаю, проблема в сетевом менеджере. У меня было что-то подобное, вы можете проверить мой профиль, это мой единственный вопрос.

Я выполнил iwconfig

$ sudo iwlist scan wlan0

и карта была там, но не работала (сканирование iwlist не удалось)

поэтому я запускаю эти команды, чтобы вызвать его вручную:

sudo ifconfig wlan0 up
service network-manager restart

Если это не работает, вы можете попробовать исправить это очень простым шагом, а именно изменить /etc/network/interfaces, удалив (или закомментировав #)следующие две строки:

auto wlan0
iface wlan0 inet dhcp

И, наконец, если вы подключены к Интернету, вы можете попробовать нажать «Система»> «Администрирование»> «Дополнительные драйверы». (Это вызовет неоткрытые -драйверы )

.
1
02.01.2021, 22:50
2 ответа

Я вижу, ты первый делаешь cd /home/mytt1. Это не часть вашего ExecStart=. Вы можете попробовать добавить WorkingDirectory=/home/mytt1, чтобы получить такое же поведение.

Далее подразумевается User=root, Group=root. Когда вы это через ssh, вы были root? Рассмотрите возможность изменения пользователя/группы на mytt1.

Помимо этого, я вижу код выхода 203. Это способ systemdсказать, что он не может запустить двоичный файл. Это часто означает, что двоичный файл отсутствует, не является исполняемым или, возможно, это ошибка компоновщика, из-за которой он не может найти зависимость. Поскольку это CentOS 7 против 8, я бы поставил на ошибку компоновщика. Что это за приложение? У вас есть какой-то конкретный набор RPATH, который можно было бы исправить с помощью WorkingDirectory=? или, возможно, специальный ldconfigна вашем компьютере с CentOS 7?

Предполагая, что это ошибка библиотеки, вы сможете узнать, какая библиотека отсутствует, из StandardError. Однако для StandardOutput=и StandardError=установлено значение syslog. Это не поддерживаемое значение в последних версиях systemd. Возможно, поэтому вы не видите, что такое ошибка компоновщика. Попробуйте установить для этого параметра значение journal, и вы можете получить лучшее сообщение об ошибке, говорящее вам, какая библиотека не найдена.

Тот факт, что вы можете запустить это с терминала,но не из systemd предполагает, что среда отличается. Я предполагаю, что $LD_LIBRARY_PATHустановлен в вашем .bashrcи ваша программа зависит от чего-то в $LD_LIBRARY_PATH. Проверьте с помощью echo $LD_LIBRARY_PATH. Если это так, то systemd не сможет найти библиотеки в этом каталоге. Вы можете использоватьldconfigдля добавления некоторых библиотек в систему -, чтобы она работала, или вы можете добавить Environment=LD_LIBRARY_PATH=...в свой служебный файл.

Вы также можете запустить ldd /home/mytt1/tt5srv, чтобы посмотреть, какие библиотеки связаны, и посмотреть, есть ли что-то в нестандартном расположении -. Это должно дать вам подсказку о том, чего не хватает в вашей среде.

1
18.03.2021, 22:39

Извините, мне не удалось исправить это с помощью pure systemd . В моем случае мне пришлось создать файл start.sh.

Я поместил файл в основное расположение службы (/home/mytt1):).

Всё:

# start server shell

/home/mytt1/tt5srv -nd -c /home/mytt1/tt5srv.xml -l /var/log/teamtalk/tt5srv.log

В учетной записи root (или учетной записи пользователя службы):

chmod +x start.sh

И служебный файл:

# mytt server

[Unit]
Description=My TeamTalk5 server
After=syslog.target network-online.target
Wants=network-online.target

[Service]
Environment="LD_LIBRARY_PATH=/usr/lib64 /usr/lib"
WorkingDirectory=/home/mytt1
ExecStart=/bin/bash /home/mytt1/start.sh
Type=simple
User=root
Group=root
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Что может сделать Bash, кроме не systemd ? Это интересно. Подробных логов в журнале не было. Так и не смог узнать подробности. Я надеюсь, что кто-то может найти более приятное решение.

0
18.03.2021, 22:39

Теги

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