在 CENTOS 7 中启动 REDHAWK Domain Mgr、Device Mgr 和 Waveform
At Boot launch of REDHAWK Domain Mgr, Device Mgr, and Waveform in CENTOS 7
我正在尝试使用 REDHAWK 2.0.7 在 CENTOS7 OS 上启动时自动启动域管理器、设备管理器和波形。
首先我创建了一个python脚本-rwxrwxrwx. 1 root root 1518 /usr/local/sbin/rx.py
我通过调用 python /usr/local/sbin/rx.py
并检查 REDHAWK IDE 验证脚本在 运行 时按预期工作。它 100% 按预期工作。
接下来我创建了一个systemd服务-rwxrwxrwx. 1 root root 188 /etc/systemd/system/rx.service
[Unit]
Description=REDHAWK Service
Requires=omniEvents.service
[Service]
Type=idle
ExecStart=/usr/bin/python /usr/local/sbin/rx.py
User=redhawk
[Install]
WantedBy=multi-user.target
最后,我通过以下步骤启动了这项服务:
sudo systemctl daemon-reload
sudo systemctl enable rx.service
sudo systemctl start rx.service
然后我通过 systemctl status rx.service
检查了状态,发现由于以下原因失败了:
File "/usr/local/redhawk/core/lib/python/ossie/utils/popen.py", line 59, in Popen
return subprocess.Popen(*args, **kwargs)
File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1327 in _execute_child
raise child_exception
TypeError: execv() arg 2 must contain only strings
我已将有问题的线路隔离到
domain = rh.kickDomain(domain_name="REDHAWK_DEV", kick_device_managers=True, device_managers=['/nodes/NUC1Node/DeviceManager.dcd.xml'])
在以下导入之后出现
import sys
import os
from time import sleep
sys.path.append(os.path.abspath("/usr/local/redhawk/core/lib64/python"))
sys.path.append(os.path.abspath("/usr/local/redhawk/core/lib/python"))
from ossie.utils import redhawk as rh
我尝试封装在 try except 块中以获取更多信息,但上面的错误是我发现的最有用的信息,它似乎仍然没有突出显示我缺少的内容。正如我所说,此脚本 运行 在手动 运行 时非常完美;它只是作为 systemd 服务而失败,这让我相信 systemd 进程还需要其他东西才能 运行 正确地做到这一点。
有谁知道我可以如何解决在引导时启动 REDHAWK 域管理器的过程,或者我可以采用和实施不同的工作方法?
我重复了您的设置,但系统源是一个脚本 (runRx.sh
) 而不是 运行 直接 python 命令。当我没有获取 /etc/profile.d/redhawk-sdrroot.sh
文件时,我得到了同样的错误。
工作 runRx.sh
文件包含:
#!/bin/bash
source /etc/profile.d/redhawk.sh
source /etc/profile.d/redhawk-sdrroot.sh
/usr/bin/python /usr/local/sbin/rx.py
REDHAWK 2.1.3 包含一个新的 redhawk-adminservice rpm,旨在协助在 CentOS 6 和 CentOS 7 上自动启动域、节点和波形。请参阅 https://redhawksdr.github.io/2.1.3/manual/appendices/adminservice/ 了解更多信息。
我正在尝试使用 REDHAWK 2.0.7 在 CENTOS7 OS 上启动时自动启动域管理器、设备管理器和波形。
首先我创建了一个python脚本-rwxrwxrwx. 1 root root 1518 /usr/local/sbin/rx.py
我通过调用 python /usr/local/sbin/rx.py
并检查 REDHAWK IDE 验证脚本在 运行 时按预期工作。它 100% 按预期工作。
接下来我创建了一个systemd服务-rwxrwxrwx. 1 root root 188 /etc/systemd/system/rx.service
[Unit]
Description=REDHAWK Service
Requires=omniEvents.service
[Service]
Type=idle
ExecStart=/usr/bin/python /usr/local/sbin/rx.py
User=redhawk
[Install]
WantedBy=multi-user.target
最后,我通过以下步骤启动了这项服务:
sudo systemctl daemon-reload
sudo systemctl enable rx.service
sudo systemctl start rx.service
然后我通过 systemctl status rx.service
检查了状态,发现由于以下原因失败了:
File "/usr/local/redhawk/core/lib/python/ossie/utils/popen.py", line 59, in Popen
return subprocess.Popen(*args, **kwargs)
File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1327 in _execute_child
raise child_exception
TypeError: execv() arg 2 must contain only strings
我已将有问题的线路隔离到
domain = rh.kickDomain(domain_name="REDHAWK_DEV", kick_device_managers=True, device_managers=['/nodes/NUC1Node/DeviceManager.dcd.xml'])
在以下导入之后出现
import sys
import os
from time import sleep
sys.path.append(os.path.abspath("/usr/local/redhawk/core/lib64/python"))
sys.path.append(os.path.abspath("/usr/local/redhawk/core/lib/python"))
from ossie.utils import redhawk as rh
我尝试封装在 try except 块中以获取更多信息,但上面的错误是我发现的最有用的信息,它似乎仍然没有突出显示我缺少的内容。正如我所说,此脚本 运行 在手动 运行 时非常完美;它只是作为 systemd 服务而失败,这让我相信 systemd 进程还需要其他东西才能 运行 正确地做到这一点。
有谁知道我可以如何解决在引导时启动 REDHAWK 域管理器的过程,或者我可以采用和实施不同的工作方法?
我重复了您的设置,但系统源是一个脚本 (runRx.sh
) 而不是 运行 直接 python 命令。当我没有获取 /etc/profile.d/redhawk-sdrroot.sh
文件时,我得到了同样的错误。
工作 runRx.sh
文件包含:
#!/bin/bash
source /etc/profile.d/redhawk.sh
source /etc/profile.d/redhawk-sdrroot.sh
/usr/bin/python /usr/local/sbin/rx.py
REDHAWK 2.1.3 包含一个新的 redhawk-adminservice rpm,旨在协助在 CentOS 6 和 CentOS 7 上自动启动域、节点和波形。请参阅 https://redhawksdr.github.io/2.1.3/manual/appendices/adminservice/ 了解更多信息。