当前位置: 首页 > news >正文

嵌入式碎片知识总结(二)

1.repo的一个问题:

repo init -u ssh://shchen@gerrit.bouffalolab.com:29418/bouffalo/manifest/bouffalo_sdk -b master -m allchips-internal.xml
/usr/bin/repo:681: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).now = datetime.datetime.utcnow()
Downloading Repo source from https://gerrit.googlesource.com/git-repo
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [Errno 110] Connection timed out
fatal: double check your --repo-rev setting.
fatal: cloning the git-repo repository failed, will remove '.repo/repo'

可以看到是网络连接失败导致的,可是为什么repo init 民令回去google上进行下载东西呢?
原因:

我们 sudo apt install 下载的repo 其实就是一个引导器,真正的repo只有你init才会下载

说回到问题,这里错误是因为默认的链接是 google 的,配置一个国内镜像就能解决。

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

2.refspec 与 ref

ref 展开来说是 git 的reference,默认情况下 refs/heads/master 可以简称为master

1)本地分支的Reference格式:refs/heads/<local_branch_name>
如refs/heads/master,在保证唯一的情况下可以简写为master
2)远程追踪分支的Reference格式:refs/remotes/<remote_repository>/<remote_branch_name>
如refs/remotes/origin/master,在保证唯一的情况下可以简写为origin/master

而refspec 是一个 git 的规则,该规则正是表示了本地和远端的 refs 的关系的。当你 fetch push 相关操作的时候会有一个默认的规则,指定远端的仓库的哪个分支拉取到本地的哪个仓库哪个分支。

+refs/heads/*:refs/remotes/origin/*#默认的命名空间 git 只认head还有remote,如果你放在一个非规定的命名空间里,则git branch -all 都不会显示。比如:
git fetch origin/refs/heads/mater:refs/mynamespace/mybranch就会生成一个不再规则显示内的分支

可以看到无法直接过去,但是可以 --detach强制分离指针然后跳转,tig 可以看到当前分支情况:

3.Linux设置服务器:

在 /etc/systemd/system/ 目录下添加一个 xxx.service文件

然后在文件中按照下面的类似框架去写:

[Unit]
Description=My Custom Application Server  # 服务的描述,便于识别
Documentation=https://github.com/yourusername/yourapp  # 可选:项目文档地址
After=network.target  # 指定在网络就绪后再启动本服务[Service]
Type=simple  # 这是最常用的类型,假设您的服务是前台运行的
User=www-data  # 强烈建议:以非 root 用户运行服务,提高安全性。可以是 www-data, nobody 或您创建的用户
Group=www-data # 用户所属的组
WorkingDirectory=/opt/myapp  # 服务启动时的工作目录
ExecStart=/opt/myapp/server-linux-amd64  # 最重要的指令:启动服务的完整命令
Restart=always  # 服务意外退出时自动重启
RestartSec=5  # 重启前等待的秒数
Environment="PORT=8080"  # 可选:设置环境变量,您的应用可以读取它
# EnvironmentFile=/etc/default/myapp  # 可选:也可以从一个文件加载多个环境变量# 安全相关设置(可选但推荐)
NoNewPrivileges=yes
PrivateTmp=yes[Install]
WantedBy=multi-user.target  # 指定在系统进入“多用户”模式时启用此服务

完成后执行:sudo systemctl daemon-reload

然后就可以通过 systemctl 相关命令进行控制了。

4.SSH通信

SSH通信本质是 CS通信, 本地生成一对密钥也就是公钥和私钥,然后把公钥配置在服务器Server上,下面把公钥叫做pub,私钥叫做pri。

pub是一把锁,只有pri能解开。你把pub放在服务器上,通信的时候,服务器就会把一段明文使用pub来进行加密发给你,验证方法就是你使用pri把加密信息解开发回去,服务器验证发现明文一致那么就判断可以进行通信。

5.awk tr test 命令

awk:

awk options 'pattern {action}' file

其中最常见的使用 option 是-f 就是分割符号,action是打印行为,默认打印全行。
eg:
awk -F "=" '{print $2}' a.txt   就是以=分割打印每行的第二个。

tr:

用于替换,比如:

perf_content=$(tr '\r\n' ' ' < iperf_result.txt)  就是替换iperf文件里所有的 /r/n 为空格

test:

-n 测试是否为空 -e 测试是否存在,会这两个就够用了基本。

http://www.dtcms.com/a/360808.html

相关文章:

  • Shell编程(二):正则表达式
  • 至真科技西安分公司正式成立,赋能点金石业务增长新篇章!
  • 基于Spring Authorization Server的OAuth2与OpenID Connect统一认证授权框架深度解析
  • Linux -- 进程间通信【System V共享内存】
  • 基于llama.cpp在CPU环境部署Qwen3
  • JimuReport 积木报表 v2.1.3 版本发布,免费开源的可视化报表和大屏
  • 【Linux手册】Unix/Linux 信号:原理、触发与响应机制实战
  • 开源 C# .net mvc 开发(九)websocket--服务器与客户端的实时通信
  • Unity:XML笔记
  • 【基础】Three.js中如何添加阴影(附案例代码)
  • 基于SpringBoot的运动服装销售系统【2026最新】
  • 大型语言模型微调 内容预告(69)
  • 剧本杀小程序系统开发:重塑社交娱乐新生态
  • Trae x MCP:一键打造品牌专属高质量SVG封面
  • apipost 8.x 脚本循环调用接口
  • 9月1日
  • WhatsApp 漏洞与 Apple 零日漏洞一起被利用于间谍软件攻击
  • LangChain VectorStores核心:多向量数据库统一交互层与RAG存储中枢
  • 深度学习——速问速答
  • Java视觉跟踪入门:使用OpenCV实现实时对象追踪
  • Vue2存量项目国际化改造踩坑
  • pyside6小项目:进制转换器
  • 《架构师手记:SpringCloud整合Nacos实战·一》
  • 2.MySQL库的操作
  • Spark实现推荐系统中的相似度算法
  • 【LeetCode】19、删除链表的倒数第N个结点
  • P1803 凌乱的yyy / 线段覆盖
  • 802.11 和 802.1X
  • 计算机毕设选题:基于Python+Django的健康饮食管理系统设计【源码+文档+调试】
  • 网络原理——TCP/UDP/IP