Linux知识点

常用命令:

cd /path/    # 移动到指定目录
cd -         # 返回上一次目录
cd ..        # 返回上一层目录
pwd          # 显示当前目录

touch /file_path    # 创建文件
mkdir /path         # 创建目录
rm /file_path       # 删除文件、目录要-r

mv /source_path /target_path    # 移动文件、目录
cp /source_path /target_path    # 复制文件、目录要-r

ln -s /source_file_path /target_file_path    # 软链接 硬链接等于重起一个名字,不需要-s

ls -lah      # 查看目录下文件
tree         # 查看目录下文件(树状图)
lsusb        # 查看USB设备

top                         # 查看所有任务
ps -ef | grep "app_name"    # 查看指定任务
ps -fp PID                  # 查看指定PID的是执行的什么
dmesg -w | grep "xxx"       # 持续监测端口信息,如USB

cat /file_path        # 常用于查看端口值、log文件 -s压缩空行 -n显示行号
tail -n 10 /file_path    # 显示文件后面内容,-n指定行数 -f实时显示
find /path -name "config.yml" 2>/dev/null    # 查找文件
diff /file1_path /file2_path    # 查看文件差异,三文件用diff3

scp -l 50000 /local_path /remote_path    # 远程传输,传目录用 -r, 限速用-l(小写L) <xxxx>

chmod +x /file_path             # 修改文件权限,1执行2写4读, 递归修改-R
chown user:group /file_path     # 修改文件的所有人和组, 可只改一个 :group

df -h    # 常用于查看整体系统的内存占用 
du -ah /path    # 显示目录及递归的文件占用内存

tar -zcvf file.tar.gz directory        # 压缩文件,排除指定文件 --exclude='*.log'
tar -zxvf file.tar.gz -C directory     # 解压文件,解压到指定目录 -C
zip -r file.zip directory              # 压缩文件,排除指定文件 -x '*.log',加密-e
unzip file.zip -d directory            # 解压文件,解压到指定目录 -d

apt update && apt upgrade    # 更新软件库
apt install -y package_name  # 安装软件包
apt install --fix-broken     # 修复软件包
apt remote package_name      # 删除软件包

arp-scan -q --localnet       # 查看所有存在子网ip

service服务:

  • 存放路径:
/etc/systemd/system/
  • 服务控制命令:
systemctl start/stop/restart/status/enable/disable myapp
systemctl daemon-reload
  • 服务内容:
[Unit]

Description=my_app                 # 描述
Documentation=www.baidu.com        # 文档链接

# 依赖关系
Requires=network.target            # 强依赖
Wants=syslog.target                # 弱依赖(会尝试拉起该服务,失败也正常运行)
BandsTo=dev-sda.service            # 绑定依赖(依赖停止,服务也会停止)
Conflicts=shutdown.target          # 冲突,不能共存

# 启动顺序
After=network-online.target                # 在列出的依赖后运行
Before=mysql.service multi-user.target     # 在列出的依赖前运行

# 条件
ConditionPathExists=/etc/my_app/config.yml    # 判断文件是否存在
ConditionPathIsDirectory=/etc/my_app/image    # 判断是不是目录

# 断言
AssertPathExists=/etc/my_app/model.bin        # 文件是否存在
AssertFileIsExecutable=/opt/my_app/run        # 文件是否为可执行文件
  • 查看服务日志:
# 常用
journalctl -u myapp -f

-x 查看错误日志
-e 调到最新的end
-u 指定服务日志
-f 阻塞并刷新实时日志
-n 指定多少行
--vacuum-size=500M 清理到500M

-b 按照启动的次数过滤 如 journalctl -b 1 上一次启动的日志 -b 不带数字代表当前启动的日志

-since 按照时间筛选 如--since "2025-09-01 10:00:00" --until "2025-09-01 11:00:00"

-p 优先级过滤   0: emerg(紧急)1: alert(警报)2: crit(严重)3: err(错误)
               4: warning(警告)5: notice(注意)6: info(信息)7: debug(调试)

制作设备镜像:

  • 系统瘦身(镜像更小)
# 清理APT缓存
sudo apt autoremove --purge # 确认软件包是否需要留下
# 将重要包标记为手动安装(这样就不会被autoremove删除)
sudo apt-mark manual package1 package2
sudo apt clean
sudo rm -rf /var/cache/apt/archives/*
sudo rm -rf /var/lib/apt/lists/*
# 日志文件清空,文件不删除
sudo find /var/log -type f -exec truncate -s 0 {} \;
# 清理用户缓存
rm -rf ~/.cache/*
sudo rm -rf /root/.cache/*
sudo rm -rf /home/*/.cache/*
# 删除压缩包
find / -type f \( -name "*.tar" -o -name "*.tar.gz" -o -name "*.tgz" -o -name "*.zip" -o -name "*.rar" -o -name "*.7z" \) -size +10M 2>/dev/null -exec rm -f {} \;
# 空闲空间填零
sudo dd if=/dev/zero of=/zero.fill bs=1M status=progress
sudo rm -f /zero.fill
sync
  • 制作镜像
# 制作初步镜像
dd if=/dev/sda of=arm4_backup.img conv=sync status=progress bs=1M
# 下载压缩脚本
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
# 压缩镜像
chmod +x ./pishrink.sh && ./pishrink.sh -z arm4_backup.img
  • 下载到SD卡

https://www.balena.io/etcher/

git使用:

C++代码调试:

# 小工具
ldd /share_library    # 查看共享库依赖
md5sum /file_path     # 查看文件的一致性,以防文件损坏
file /file_path       # 查看文件属性,如可执行文件、共享库等
  • gdb的调试

https://xas-sunny.blog.csdn.net/article/details/134399664?fromshare=blogdetail&sharetype=blogdetail&sharerId=134399664&sharerefer=PC&sharesource=weixin_67948248&sharefrom=from_linkhttps://xas-sunny.blog.csdn.net/article/details/134399664?fromshare=blogdetail&sharetype=blogdetail&sharerId=134399664&sharerefer=PC&sharesource=weixin_67948248&sharefrom=from_link

Python代码调试:

# 创建虚拟环境
sudo apt install python3-venv python3-full -y    # 下载所需工具
python3 -m venv /env_path        # 创建环境文件
source /env_path/bin/activate    # 加载虚拟环境
pip3 install package_name    # 单独下载 安装最新包-U 指定包的版本如 package_name=1.3.2
pip3 install -r requirements.txt    # 批量下载所需的包,虚拟环境下载的包都手动备份到此文件

ROS2常用命令:

# 查看存在列表 节点/话题/服务/参数/动作 
ros2 node/topic/service/param/action list

# 查看信息
ros2 node info <node_name>
ros2 topic info <topic_name>
ros2 service info <service_name>
ros2 action info <action_name>

ros2 interface show <type_name>

# 直接启动节点
ros2 run <package_name> <node_executable>
# 重映射启动节点, 可更改节点名称、命名空间、话题名称、服务名称、动作名称
ros2 run <package_name> <node_executable> --ros-args --remap <old_name>:=<new_name>

# 配置文件启动节点
ros2 launch <package_name> <launch_file>

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐