Environment-Variables
gammu 1.42,gammu-smsd 服務錯誤,找不到 LD_LIBRARY_PATH
我正在嘗試安裝 Gammu 1.42 以在 Centos 8 上為我的 SMS 網關提供服務。
製作,製作測試,製作安裝工作正常。
LD_LIBRARY_PATH 在 /etc/profile 中配置為:
...... LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:.:/usr/local/lib64 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL LD_LIBRARY_PATH ......
我通過 printenv 列印 env,找到了 LD_LIBRARY_PATH。/etc/gammu-smsdrc 配置為:
...... [gammu] device = /dev/ttyUSB0 model = E3131 connection = at115200 [smsd] service = sql driver = native_pgsql logFIle = /var/log/gammu/smsd.log logFormat = errorsdate Host = xx.0.1.xx:xxxx user = xxxx password = xxxxx database = xxxxx debuglevel = 2 StatusFrequency = 60 LoopSleep = 60 DeliveryReport = sms PhoneID = ozssc-smsd SMSC = +614xxxxxxxx BackendRetries = 60
我嘗試在終端中啟動 gammu 命令行,它工作正常。但是當我嘗試使用 systemctl 啟動系統服務時,它失敗了。
錯誤查詢結果為:
[root@Centos8Gateway etc]# systemctl status gammu-smsd.service ● gammu-smsd.service - SMS daemon for Gammu Loaded: loaded (/usr/lib/systemd/system/gammu-smsd.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Sun 2020-10-25 12:13:42 AEDT; 19s ago Docs: man:gammu-smsd(1) Process: 23247 ExecStopPost=/bin/rm -f /var/run/gammu-smsd.pid (code=exited, status=0/SUCCESS) Process: 23245 ExecStart=/usr/local/bin/gammu-smsd --pid=/var/run/gammu-smsd.pid --daemon (code=exited, status=127) Oct 25 12:13:42 Centos8Gateway systemd[1]: Starting SMS daemon for Gammu... Oct 25 12:13:42 Centos8Gateway gammu-smsd[23245]: /usr/local/bin/gammu-smsd: error while loading shared libraries: libgsmsd.so.8: cannot open shared object file: No such file or directory Oct 25 12:13:42 Centos8Gateway systemd[1]: gammu-smsd.service: Control process exited, code=exited status=127 Oct 25 12:13:42 Centos8Gateway systemd[1]: gammu-smsd.service: Failed with result 'exit-code'. Oct 25 12:13:42 Centos8Gateway systemd[1]: Failed to start SMS daemon for Gammu. [root@Centos8Gateway etc]#
我試圖找出為什麼 Centos 8 系統服務載入器不使用配置的系統環境變數?並且不提供命令行 LD lib 路徑參數。
我錯過了什麼?請指教!
還有另一種解決此問題的方法:
- 在 /etc/ld.so.conf.d 下添加一個新文件為 gammu-smsd-1.42.0-x86_64.conf ,其中只有一行:
/usr/local/lib64 2. 然後由 root 使用者執行 ldconfig。
重試從 systemctl 啟動 gammu-smsd 完成。
/etc/profile
被 bash 等 shell 使用;它不用於為 systemd 服務設置環境。要為 systemd 服務提供環境變數,請在 systemd 單元文件中使用Environment= `,例如:
Environment="LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64"
請注意,我已省略
$LD_LIBRARY_PATH
並.
與您的內容進行了比較/etc/profile
:
- 預設情況下,該變數通常為空,並且為了清晰和明確的期望,systemd 單元文件中對這樣一個重要變數的任何定義都應該是完全明確的。
.
有點不尋常;在 systemd 單元的上下文中,它將是您已經知道/應該知道的WorkingDirectory的值,在這種情況下,您可以再次明確地擴展它,以便清楚和明確的期望。