CentOS 7からCentOS 8にサーバーを更新しました。
UDPおよびTCPプロトコルを使用するストリーミングサーバーがあります。私は港を許可します。一言で言えばすごいシステム制御。
- サービス名:mytt.service
CentOS 7で実行される設定:
# mytt server
[Unit]
Description=My TeamTalk5 server
After=network.target
[Service]
Environment=LD_LIBRARY_PATH=/usr/lib64
WorkingDirectory=/home/mytt1
ExecStart=/home/mytt1/tt5srv -nd -c /home/mytt1/tt5srv.xml -l /var/log/teamtalk/tt5srv.log
Type=simple
User=root
Group=root
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
SSHを使用して接続し、正常にExecStartと入力すると、サーバーは正常に実行されます。
だから:
cd /home/mytt1
./tt5srv -nd -c /home/mytt1/tt5srv.xml -l /var/log/teamtalk/tt5srv.log
systemctl status mytt
出力は次のとおりです。
systemctl status mytt
● mytt.service - My TeamTalk5 server
Loaded: loaded (/etc/systemd/system/mytt.service; disabled; vendor preset: d>
Active: failed (Result: exit-code) since Sat 2021-01-02 04:42:35 EST; 6s ago
Process: 1831 ExecStart=/home/mytt1/tt5srv -nd -c /home/mytt1/tt5srv.xml -l />
Main PID: 1831 (code=exited, status=203/EXEC)
Jan 02 04:42:35 centos systemd[1]: Started My TeamTalk5 server.
Jan 02 04:42:35 centos systemd[1]: mytt.service: Main process exited, code=exit>
Jan 02 04:42:35 centos systemd[1]: mytt.service: Failed with result 'exit-code'.
lines 1-9/9 (END)
接続エラーがあるようです。 ldd出力:
[root@centos mytt1]# cd mytt1/
[root@centos mytt1]# ldd tt5srv
linux-vdso.so.1 (0x00007ffd86bb3000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0bbe8ed000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f0bbe6e9000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007f0bbe47a000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f0bbe017000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f0bbdc82000)
libm.so.6 => /lib64/libm.so.6 (0x00007f0bbd900000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f0bbd6e8000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0bbd325000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0bbeb0d000)
libz.so.1 => /lib64/libz.so.1 (0x00007f0bbd10e000)
私はCentOSバージョン7からバージョン8に何が変わったのかわかりません。
私は何が間違っていましたか?
ベストアンサー1
あなたがこのことをするのを初めて見ました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
あなたはそれを使用することができますldconfig
システム全体にいくつかのライブラリを追加して機能させるか、Environment=LD_LIBRARY_PATH=...
サービスファイルに追加できます。
実行して、ldd /home/mytt1/tt5srv
どのライブラリがリンクされているかを確認し、非標準の場所にあるものを確認することもできます。これは、ユーザーエクスペリエンスに何が欠けているかについてのヒントを提供します。