Думаю, проблема в сетевом менеджере. У меня было что-то подобное, вы можете проверить мой профиль, это мой единственный вопрос.
Я выполнил iwconfig
$ sudo iwlist scan wlan0
и карта была там, но не работала (сканирование iwlist не удалось)
поэтому я запускаю эти команды, чтобы вызвать его вручную:
sudo ifconfig wlan0 up
service network-manager restart
Если это не работает, вы можете попробовать исправить это очень простым шагом, а именно изменить /etc/network/interfaces, удалив (или закомментировав #)следующие две строки:
auto wlan0
iface wlan0 inet dhcp
И, наконец, если вы подключены к Интернету, вы можете попробовать нажать «Система»> «Администрирование»> «Дополнительные драйверы». (Это вызовет неоткрытые -драйверы )
.Я вижу, ты первый делаешь 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
, чтобы посмотреть, какие библиотеки связаны, и посмотреть, есть ли что-то в нестандартном расположении -. Это должно дать вам подсказку о том, чего не хватает в вашей среде.
Извините, мне не удалось исправить это с помощью 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 ? Это интересно. Подробных логов в журнале не было. Так и не смог узнать подробности. Я надеюсь, что кто-то может найти более приятное решение.