1.debian系统root权限下如何修改ip地址?
识别网络接口名称
bash
ip a
# 或者使用
ls /sys/class/net
bash
root@A16272:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 32:e5:54:ed:22:41 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 24:4e:7b:6c:80:1c brd ff:ff:ff:ff:ff:ff
altname end0
inet 192.168.10.1/24 brd 192.168.10.255 scope global eth0:0
valid_lft forever preferred_lft forever
inet 192.168.137.2/24 brd 192.168.137.255 scope global eth0:1
valid_lft forever preferred_lft forever
inet6 fe80::264e:7bff:fe6c:801c/64 scope link
valid_lft forever preferred_lft forever
4: canfd1: <NOARP> mtu 16 qdisc noop state DOWN group default qlen 10
link/can
5: canfd2: <NOARP> mtu 16 qdisc noop state DOWN group default qlen 10
link/can
bash
方法一:永久修改(编辑 /etc/network/interfaces)
```bash
cp /etc/network/interfaces /etc/network/interfaces.bak
在 root 下执行以下命令,看看哪些网络服务是激活的:
bash
bash
# 查看 ifupdown (传统方式) 是否在运行
systemctl status networking
# 查看 NetworkManager 是否在运行
systemctl status NetworkManager
# 查看 systemd-networkd 是否在运行
systemctl status systemd-networkd
bash
备份当前配置(好习惯)
bash
cp /etc/systemd/network/00-eth0.network /etc/systemd/network/00-eth0.network.bak
2️⃣ 编辑配置文件
bash
nano /etc/systemd/network/00-eth0.network
3️⃣ 替换为以下内容
ini
[Match]
Name=eth0
[Network]
# 禁用 DHCP
DHCP=no
# 新网关(请确认你的网络中网关确实是 192.168.1.1)
Gateway=192.168.1.1
# DNS 保持不变,也可自行修改
DNS=223.5.5.5
DNS=223.6.6.6
[Address]
# 只保留一个 IP
Address=192.168.1.103/24
bash
重启 systemd-networkd
bash
systemctl restart systemd-networkd
6️⃣ 验证新 IP
bash
ip a show eth0
你应该只看到 192.168.1.103,之前的两个旧 IP 消失
2.我想运行这个文件夹/data/DrillJumboControl-V3.0/bin/下的go_build_DrillJumboControl_V3_0_main程序,在本debian系统上电后自动运行,告诉我如何做
```bash
第一步:准备工作
首先,检查一下你的程序是否具有可执行权限。如果 ls -l 的输出中没有 x,就用下面的命令加上。
bash
# 查看文件权限
ls -l /data/DrillJumboControl-V3.0/bin/go_build_DrillJumboControl_V3_0_main
# 如果没有权限,执行下面的命令添加可执行权限
chmod +x /data/DrillJumboControl-V3.0/bin/go_build_DrillJumboControl_V3_0_main
⚙️ 第二步:创建 Systemd 服务
我们来创建一个专属的服务配置文件。
创建并编辑服务文件
使用 nano 编辑器创建一个名为 drill-jumbo-control.service 的新文件。
bash
nano /etc/systemd/system/drill-jumbo-control.service
编写服务配置
用你的实际情况替换 your_username 后,把下面的内容粘贴进去。
conf
[Unit]
Description=Drill Jumbo Control Service # 服务描述
After=network.target # 确保在网络服务启动后再启动
StartLimitIntervalSec=0 # 禁用启动频率限制
[Service]
Type=simple # 服务类型为前台进程
User=root # 以 root 用户运行
Group=root # 以 root 用户组运行
WorkingDirectory=/data/DrillJumboControl-V3.0/ # 关键!请设置为程序所在目录
ExecStart=/data/DrillJumboControl-V3.0/bin/go_build_DrillJumboControl_V3_0_main
Restart=always # 总是自动重启(非常稳健)
RestartSec=5 # 崩溃后等待5秒再重启
# 日志输出重定向(可选)
StandardOutput=journal # 输出到 systemd 日志
StandardError=journal # 错误也写入 systemd 日志
[Install]
WantedBy=multi-user.target # 多用户模式下启动(常规场景)
bash
第三步:启动并启用服务
保存文件(在 nano 中按 Ctrl+X,然后按 Y,最后按 Enter)后,依次执行以下命令。
bash
# 1. 重新加载 systemd,让它识别我们的新服务
systemctl daemon-reload
# 2. 立即启动服务
systemctl start drill-jumbo-control
# 3. 将服务设置为开机自动启动
systemctl enable drill-jumbo-control
bash
第四步:验证与日志查看
检查服务状态
bash
systemctl status drill-jumbo-control
如果一切正常,你会看到状态是 active (running),并且输出中不会有错误信息。
查看实时日志
如果状态不对,可以通过日志来排查问题:
bash
journalctl -u drill-jumbo-control -f
bash
重载并启用服务
bash
# 重新加载 systemd 配置
systemctl daemon-reload
# 立即启动服务
systemctl start drill-jumbo-control
# 设置开机自启
systemctl enable drill-jumbo-control
✅ 验证服务状态
bash
systemctl status drill-jumbo-control
如果显示 active (running),说明已成功运行。
📋 查看实时日志(可选)
bash
journalctl -u drill-jumbo-control -f
按 Ctrl+C 退出日志查看。
3.修复.so路径缺失
bash
添加库路径到 systemd 服务
执行以下命令编辑服务文件:
bash
systemctl edit --full drill-jumbo-control
找到 [Service] 段,添加一行 Environment,指定库路径为 /data/DrillJumboControl-V3.0/bin(因为库在 bin 下)。修改后的完整内容示例:
ini
[Unit]
Description=Drill Jumbo Control Service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/data/DrillJumboControl-V3.0/
Environment="LD_LIBRARY_PATH=/data/DrillJumboControl-V3.0/bin"
ExecStart=/data/DrillJumboControl-V3.0/bin/go_build_DrillJumboControl_V3_0_main
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
保存(nano:Ctrl+O,回车,Ctrl+X)。
🔄 重载并重启服务
bash
systemctl daemon-reload
systemctl restart drill-jumbo-control
✅ 检查状态
bash
systemctl status drill-jumbo-control
如果显示 active (running),则问题解决。
📋 查看日志确认无报错
bash
journalctl -u drill-jumbo-control -n 20


程序已经正常发送can数据了