ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

嵌入式Linux开发必备:从入门到精通的命令行实战指南

嵌入式Linux开发必备:从入门到精通的命令行实战指南 在嵌入式开发中Linux 系统是绕不开的核心平台。无论是进行交叉编译、驱动调试、系统裁剪还是远程登录设备、分析日志、管理进程熟练使用 Linux 命令都是提升开发效率、快速定位问题的关键能力。很多新手开发者面对黑乎乎的终端窗口常常感到无从下手或者只记得几个基础命令遇到复杂场景就束手无策。本文旨在为嵌入式开发者梳理一份从入门到进阶的 Linux 命令实战指南。我们不追求面面俱到的命令大全而是聚焦于嵌入式开发中最常用、最核心的命令组合与应用场景。通过系统性的讲解和大量可复现的示例帮助你构建起命令行操作的肌肉记忆让你在开发板、服务器或虚拟机的终端前更加游刃有余。1. 为什么嵌入式开发者必须精通 Linux 命令在深入具体命令之前我们首先要理解命令行对于嵌入式开发不可替代的价值。1.1 环境与资源的限制嵌入式设备往往资源有限CPU、内存、存储无法运行图形化桌面环境。通过串口、SSH 等方式登录后命令行是唯一的高效交互界面。即使是在性能强大的开发主机上进行交叉编译在构建系统如 Buildroot, Yocto、版本控制Git、文件传输和远程调试中命令行工具也是绝对的主力。1.2 自动化与脚本化嵌入式开发涉及大量重复性工作代码编译、固件打包、烧录测试、日志收集等。通过 Shell 脚本将一系列命令组合起来可以实现全流程自动化极大提升开发效率和一致性减少人为错误。1.3 强大的问题诊断能力当程序崩溃、系统卡顿、驱动异常或网络不通时图形化工具往往无能为力。命令行工具提供了从系统内核、进程、内存、网络到文件系统的全方位深度观测和操控能力。掌握这些命令就等于拥有了直接与系统内核对话的“手术刀”。1.4 跨平台与一致性无论是 x86 的开发机、ARM 的开发板还是 MIPS 的路由器只要运行 Linux其核心命令集和行为基本一致。这份技能具有极强的可移植性。接下来我们将命令分为几个核心模块每个模块都围绕嵌入式开发中的典型任务展开。2. 环境准备与基础认知在开始练习命令前你需要一个 Linux 环境。对于嵌入式开发者常见的环境有物理开发板通过串口使用minicom,screen,picocom或网络SSH登录。虚拟机在 Windows/macOS 上安装 VMware/VirtualBox运行 Ubuntu 等发行版。Windows Subsystem for Linux (WSL)在 Windows 上获得接近原生的 Linux 体验。Docker 容器快速创建一个干净、隔离的 Linux 环境特别适合构建环境。本文示例基于 Ubuntu 22.04 LTS但绝大多数命令适用于任何主流 Linux 发行版。请打开你的终端跟随操作。首先认识一下终端和 Shell。我们输入命令的地方叫终端模拟器Terminal解释并执行命令的程序叫 Shell如 bash, zsh。默认的提示符通常像这样userhostname:~$其中~代表当前用户的家目录/home/username。3. 文件与目录操作开发的基石嵌入式开发中你需要频繁地在主机和目标板之间、在不同源码目录之间穿梭和管理文件。3.1 导航与查看pwd,cd,ls# 1. 显示当前工作目录的绝对路径 pwd # 输出示例/home/developer/embedded_project # 2. 切换目录 cd /usr/local # 切换到绝对路径 cd .. # 切换到上级目录 cd ~ # 切换到当前用户的家目录 cd - # 切换到上一个所在的目录非常实用 cd ../sibling_dir # 切换到兄弟目录 # 3. 列出目录内容 ls # 简单列出 ls -l # 长格式列出显示权限、所有者、大小、时间等最常用 ls -la # 长格式并显示所有文件包括以.开头的隐藏文件 ls -lh # 长格式并以人类可读方式显示文件大小K, M, G ls -ltr # 按时间倒序排列最新的在最后方便查看最新文件 ls /etc/ # 列出指定目录的内容嵌入式场景在构建根文件系统时经常需要ls -l查看交叉编译生成的库文件权限是否正确使用ls -ltr在编译输出目录中快速找到最新生成的可执行文件或镜像。3.2 文件操作cp,mv,rm,touch,mkdir,rmdir# 1. 复制文件或目录 cp source.c dest.c # 复制文件 cp -r source_dir/ dest_dir/ # 递归复制整个目录 cp -v *.ko /lib/modules/$(uname -r)/ # 复制所有.ko文件到模块目录并显示过程 # 2. 移动或重命名文件/目录 mv old_name.c new_name.c # 重命名 mv file.c ../src/ # 移动到上级目录的src文件夹 mv dir/ /target/rootfs/usr/bin/ # 移动整个目录 # 3. 删除文件或目录 (⚠️危险操作谨慎使用) rm file.o # 删除文件 rm -f file.o # 强制删除不提示 rm -rf build/ # 递归强制删除整个build目录及其内容 # 警告rm -rf / 或 rm -rf * 在错误目录下执行会毁灭性删除数据 # 4. 创建空文件或更新文件时间戳 touch new_file.txt # 创建空文件 touch existing.c # 更新文件访问和修改时间为当前时间 # 5. 创建目录 mkdir new_dir mkdir -p project/{src,include,lib,bin} # 一次性创建多级目录和子目录结构清晰 # 创建后的目录结构 # project/ # ├── bin # ├── include # ├── lib # └── src # 6. 删除空目录 rmdir empty_dir/嵌入式场景cp -r用于部署根文件系统rm -rf用于清理庞大的编译中间文件mkdir -p在编写安装脚本或构建系统时用于创建标准的目录结构。3.3 查看与编辑文件cat,less,head,tail,vim/nano# 1. 连接并显示整个文件内容适合小文件 cat /proc/cpuinfo # 查看CPU信息 cat device_tree.dts new.dts # 将内容输出到新文件重定向 # 2. 分页查看文件内容适合大文件可上下翻页、搜索 less /var/log/syslog # 按q退出/搜索n下一个匹配项 # 在less中按ShiftG直接跳到文件末尾查看最新日志非常方便。 # 3. 查看文件开头部分 head -n 20 kernel_config.txt # 查看文件前20行 # 4. 查看文件末尾部分⚠️嵌入式日志分析核心命令 tail -n 50 /var/log/kern.log # 查看最后50行 tail -f /var/log/app.log # 实时追踪文件末尾新增内容Follow mode # 组合使用实时追踪并高亮错误 tail -f app.log | grep -i --coloralways error # 5. 文本编辑器 vim config.txt # 使用vim编辑功能强大但学习曲线陡峭 nano config.txt # 使用nano编辑简单易用适合新手嵌入式场景tail -f是调试利器实时观察应用程序或内核的打印信息。cat /proc/version查看内核版本cat /proc/meminfo查看内存使用情况。less查看长的编译脚本或配置文件。4. 权限与用户管理安全与协作的基础嵌入式系统可能涉及多用户访问或需要特定权限运行服务。4.1 理解权限ls -l的输出执行ls -l后第一列如-rwxr-xr--第1位-表示普通文件d表示目录l表示链接。2-4位文件所有者的读(r)、写(w)、执行(x)权限。5-7位文件所属用户组的权限。8-10位其他用户的权限。4.2 修改权限chmod权限可以用数字八进制或符号表示。r读 4w写 2x执行 1# 数字模式最常用 chmod 755 my_app # rwxr-xr-x所有者可读可写可执行组和其他可读可执行 chmod 644 config.conf # rw-r--r--所有者可读可写组和其他只读 chmod x build.sh # 符号模式为所有用户添加执行权限 chmod ux,go-w script.sh # 符号模式给所有者加执行去掉组和其他人的写权限4.3 修改所有者和组chown,chgrp# 改变文件所有者 sudo chown developer app.bin # 将app.bin的所有者改为developer用户 sudo chown developer:developers app.bin # 同时改变所有者和所属组 # 改变文件所属组 sudo chgrp developers app.bin嵌入式场景交叉编译出的可执行文件可能需要chmod x才能运行。将设备节点如/dev/ttyUSB0的权限改为666(chmod 666 /dev/ttyUSB0) 可以让普通用户访问串口而无需每次都使用sudo。在制作根文件系统时需要为/etc/shadow等关键文件设置严格的权限如600。5. 进程管理掌控系统运行状态嵌入式设备上跑着各种守护进程、应用程序如何查看和控制它们至关重要。5.1 查看进程ps,top,htop# 1. ps - 查看进程快照 ps # 显示当前终端下的进程 ps aux # 显示所有用户的详细进程信息最常用组合 ps aux | grep my_app # 查找名为“my_app”的进程 ps -ef # 以完整格式列表显示所有进程 ps -o pid,ppid,cmd,%cpu,%mem --sort-%cpu | head -10 # 自定义输出列按CPU排序前10 # 2. top - 动态实时查看进程和系统资源 top # 进入交互式视图按q退出 # 在top中按P按CPU排序按M按内存排序按1显示所有CPU核心。 # 3. htop (需要安装) - top的增强版更直观 sudo apt install htop htop5.2 控制进程kill,killall,pkill,jobs,fg,bg# 1. 发送信号给进程 ps aux | grep endless_loop # 先找到进程PID例如 12345 kill 12345 # 发送默认的TERM(15)信号请求进程终止 kill -9 12345 # 发送KILL(9)信号强制杀死进程万不得已时使用 kill -SIGTERM 12345 # 同上使用信号名 # 2. 通过进程名操作 killall my_app # 杀死所有名为my_app的进程 pkill -f “python script.py” # 通过完整命令行匹配来杀死进程 # 3. 作业控制在同一个终端内管理前后台任务 ./long_running_task # 在后台启动任务 jobs # 查看当前终端的后台作业列表如[1] Running ... fg %1 # 将后台作业1切换到前台运行 # 如果前台任务在运行按 CtrlZ 可以将其暂停并放到后台。 bg %1 # 让后台被暂停的作业1继续运行嵌入式场景ps aux | grep是定位某个守护进程是否存活、查看其 PID 和资源占用的标准操作。当应用程序无响应时使用kill -9是最后手段。在调试时可以将一个前台程序挂起(CtrlZ)然后用gdb附加调试。6. 网络诊断与配置打通设备与世界的桥梁无论是开发板通过 NFS 挂载还是通过 SSH 远程登录网络命令都是必备技能。6.1 查看与配置ifconfig/ip,ping,netstat/ss# 1. 查看和配置网络接口旧命令ifconfig新命令ip ifconfig # 查看所有网络接口信息可能需安装net-tools ip addr show # 查看IP地址推荐功能更强大 ip link show # 查看链路状态 sudo ip addr add 192.168.1.100/24 dev eth0 # 为eth0添加IP sudo ip link set eth0 up # 启用eth0网卡 # 2. 测试网络连通性 ping 192.168.1.1 # 测试到网关的通畅性按CtrlC停止 ping -c 4 google.com # 发送4个包后停止 ping -I eth1 8.8.8.8 # 指定从eth1网卡发出ping包 # 3. 查看网络连接、路由、接口统计旧命令netstat新命令ss netstat -tulnp # 查看所有监听端口及对应进程需sudo看全部 ss -tulnp # ss是netstat的现代替代更快更高效推荐 netstat -r # 查看路由表 ip route show # 查看路由表推荐6.2 文件传输scp,sftp,wget/curl# 1. 安全复制主机与开发板之间 # 从本地复制到远程 scp app.bin developer192.168.1.10:/home/developer/ # 从远程复制到本地 scp developer192.168.1.10:/var/log/kern.log ./ # 递归复制整个目录 scp -r rootfs/ developer192.168.1.10:/opt/ # 2. 安全文件传输交互式 sftp developer192.168.1.10 # sftp put local_file.txt # sftp get remote_file.txt # sftp ls # sftp quit # 3. 从网络下载 wget https://example.com/toolchain.tar.gz # 下载文件 wget -c https://example.com/large_file.iso # 断点续传 curl -O https://example.com/file.txt # 下载文件 curl -I https://example.com # 仅获取HTTP头部信息嵌入式场景scp是向开发板部署程序或从开发板抓取日志的最常用方式。ping是检查开发板与主机网络是否联通的第一步。ss -tulnp可以查看自己开发的服务是否在预期端口上成功监听。7. 系统信息与性能监控了解设备的资源使用情况是性能分析和优化的前提。7.1 资源查看free,df,du,uname# 1. 查看内存使用情况 free -h # 以人类可读格式显示内存和交换分区使用量 cat /proc/meminfo # 更详细的内存信息 # 2. 查看磁盘空间使用情况 df -h # 查看所有已挂载文件系统的磁盘使用情况人类可读 df -h . # 查看当前目录所在分区的使用情况 # 3. 查看文件或目录的磁盘使用量 du -sh project/ # 汇总显示project目录的总大小 du -sh * # 显示当前目录下所有文件和目录的大小 du -h --max-depth1 /home # 查看/home下第一级子目录的大小 # 4. 查看系统信息 uname -a # 打印所有系统信息内核名称、主机名、内核版本、硬件架构等 uname -r # 只打印内核版本在配置内核模块时非常有用 cat /proc/version # 查看内核版本和编译器信息 cat /etc/os-release # 查看发行版信息7.2 性能分析工具vmstat,iostat,sar(需要安装sysstat)# 1. vmstat - 报告虚拟内存统计、进程、CPU活动 vmstat 1 5 # 每隔1秒采样一次共采样5次 # 输出字段procs(进程)、memory(内存)、swap(交换区)、io(磁盘)、system(系统)、cpu(CPU) # 2. iostat - 报告CPU统计和输入/输出统计 iostat -dx 1 # 显示设备扩展统计每秒刷新一次 # 3. sar - 系统活动报告器功能强大 sar -u 1 3 # 查看CPU使用率每秒1次共3次 sar -r 1 3 # 查看内存使用情况 sar -n DEV 1 3 # 查看网络接口流量嵌入式场景free -h和df -h是检查嵌入式设备内存和存储是否耗尽的第一反应。uname -r在编译内核模块时必须使用以确保模块与当前运行的内核版本匹配。du -sh用于分析根文件系统中哪个目录或应用占用了过多空间。8. 文本处理三剑客grep,awk,sed这是命令行中最强大的文本处理工具组合使用可以解决大部分日志分析和数据提取问题。8.1grep强大的文本搜索# 基本搜索 grep “error” /var/log/syslog # 在文件中搜索包含“error”的行 grep -i “warning” app.log # 忽略大小写搜索“warning” grep -r “main” ./src/ # 递归搜索当前src目录下所有文件 # 高级用法 grep -v “debug” log.txt # 输出不包含“debug”的行反向选择 grep -E “[0-9]\.[0-9]\.[0-9]\.[0-9]” log.txt # 使用扩展正则匹配IP地址 grep -c “timeout” log.txt # 统计匹配到的行数 grep -n “segmentation” log.txt # 显示匹配行及其行号 ps aux | grep -v grep | grep my_app # 在进程列表中精确查找排除grep进程本身8.2awk文本分析和报告生成工具awk将文件视为由字段组成的行非常适合处理表格化的数据。# 打印文件的第1列和第3列默认以空格或制表符分隔 awk ‘{print $1, $3}’ data.txt # 打印登录shell为/bin/bash的用户名来自/etc/passwd awk -F: ‘$7 “/bin/bash” {print $1}’ /etc/passwd # 计算文件第一列数字的总和 awk ‘{sum $1} END {print sum}’ numbers.txt # 结合ps命令找出CPU使用率超过5%的进程 ps aux | awk ‘$3 5.0 {print $11, $3}’ # 分析日志统计每种HTTP状态码出现的次数 awk ‘{print $9}’ access.log | sort | uniq -c | sort -rn8.3sed流编辑器用于文本替换、删除、插入# 将文件中所有的“foo”替换为“bar”只输出到屏幕 sed ‘s/foo/bar/g’ input.txt # 直接修改文件-i选项 sed -i ‘s/old_ip/new_ip/g’ config.yaml # 删除包含“debug”的行 sed ‘/debug/d’ log.txt # 删除文件第10行 sed -i ‘10d’ file.c # 在匹配行“server {”之后插入一行配置 sed -i ‘/server {/a \ listen 8080;’ nginx.conf嵌入式场景grep从海量内核日志 (dmesg) 或应用日志中快速过滤出错误 (ERROR)、警告 (WARN) 或特定模块的打印信息。awk分析/proc/net/dev获取精确的网络流量统计解析ps aux输出计算所有进程的总内存占用。sed在批量修改构建脚本中的路径、配置文件中的IP地址时效率远高于手动编辑。9. 压缩与归档节省空间与方便传输嵌入式系统的存储空间宝贵源码和固件也常以压缩包形式分发。# 1. tar - 打包和解包不压缩 tar -cvf project.tar ./project/ # 创建归档文件c:创建v:详细f:指定文件 tar -xvf project.tar # 解包归档文件x:提取 tar -tvf project.tar # 查看归档文件内容列表t:列表 # 2. tar gzip (最常用组合 .tar.gz 或 .tgz) tar -czvf project.tar.gz ./project/ # 打包并用gzip压缩 tar -xzvf project.tar.gz # 解压gzip压缩的tar包 # 3. tar bzip2 (压缩率更高但更慢 .tar.bz2) tar -cjvf project.tar.bz2 ./project/ tar -xjvf project.tar.bz2 # 4. tar xz (压缩率非常高常用于发行版 .tar.xz) tar -cJvf project.tar.xz ./project/ tar -xJvf project.tar.xz # 5. zip/unzip (跨平台常用) zip -r project.zip ./project/ # 递归压缩目录 unzip project.zip # 解压zip文件 # 6. gzip/gunzip, bzip2/bunzip2 (仅压缩单个文件) gzip large_file.log # 压缩生成 large_file.log.gz gunzip large_file.log.gz # 解压 bzip2 large_file.log # 压缩生成 large_file.log.bz2 bunzip2 large_file.log.bz2 # 解压嵌入式场景从官网下载的工具链如gcc-arm-linux-gnueabihf.tar.xz需要用tar -xJvf解压。将编译好的根文件系统目录打包成rootfs.tar.gz用于烧录或传输。使用gzip压缩旧的日志文件以节省空间。10. 查找与定位find,which,whereis,locate在庞大的源码树或系统中快速找到文件。# 1. find - 最强大、最常用的查找命令 find . -name “*.c” # 在当前目录及子目录查找所有.c文件 find /home -user developer # 查找/home下所有者为developer的文件 find /var/log -type f -mtime -7 # 查找/var/log下7天内修改过的普通文件 find . -size 10M # 查找当前目录下大于10MB的文件 find . -name “*.o” -delete # 查找并删除所有.o文件⚠️先不加-delete测试 find . -perm 755 # 查找权限为755的文件 # 组合操作找到.c文件并统计行数 find ./src -name “*.c” -exec wc -l {} \; # 2. which - 查找可执行文件的路径 which gcc # 输出/usr/bin/gcc which ls # 3. whereis - 查找二进制文件、源码和手册页的位置 whereis ls # 输出ls: /bin/ls /usr/share/man/man1/ls.1.gz whereis -b ls # 只查找二进制文件 # 4. locate (需要安装mlocate) - 基于数据库快速查找但结果可能不是实时 sudo updatedb # 首先更新数据库需要sudo权限 locate stdio.h # 快速查找所有包含stdio.h路径的文件嵌入式场景在 Buildroot 或 Yocto 构建的输出目录中用find -name “*.ko”查找所有编译好的内核模块。用which arm-linux-gnueabihf-gcc确认交叉编译器是否在 PATH 中。用find . -type f -name “*.log” -size 100M找出占用巨大空间的老日志文件以便清理。11. 综合实战一个嵌入式开发调试场景假设你通过 SSH 登录到一台远程嵌入式设备应用程序my_daemon疑似内存泄漏你需要进行诊断。# 1. 首先确认进程是否存在并获取其PID ps aux | grep my_daemon | grep -v grep # 输出可能为root 1234 0.5 8.2 24576 82000 ? Sl 10:00 12:34 /usr/bin/my_daemon # 2. 实时查看该进程的资源占用CPU、内存 top -p 1234 # 或者使用更直观的htop然后在里面过滤该PID。 # 3. 查看该进程打开的文件和网络连接 lsof -p 1234 # 列出进程打开的所有文件描述符 ss -tunap | grep 1234 # 查看该进程相关的网络连接 # 4. 追踪系统调用和信号需要sudo或root权限 strace -p 1234 # 跟踪进程的系统调用看是否卡在某个调用上 # 按 CtrlC 停止 strace。 # 5. 查看该进程的内存映射 pmap 1234 # 显示进程的内存映射 cat /proc/1234/maps # 另一种查看内存映射的方式 cat /proc/1234/status # 查看进程详细状态信息包括VmRSS实际物理内存 # 6. 持续监控内存增长写一个简单循环 while true; do ps -p 1234 -o pid,ppid,%cpu,%mem,rss,vsz,cmd sleep 2 done # 观察 RSS (Resident Set Size) 是否持续增长。 # 7. 如果怀疑是某个库函数调用频繁可以使用 ltrace ltrace -p 1234 -c # 统计库函数调用次数可能需要安装 # 8. 收集日志进行分析 tail -f /var/log/my_daemon.log | grep -E “(error|fail|leak)” --colorauto # 或者将一段时间内的日志保存下来 cp /var/log/my_daemon.log /tmp/daemon_$(date %Y%m%d_%H%M%S).log # 9. 如果问题复现生成核心转储core dump供后续分析 # 首先确保系统允许生成core dump ulimit -c unlimited # 然后发送特定信号如 SIGABRT给进程或在代码中触发abort kill -SIGABRT 1234 # core dump 通常会生成在当前目录或指定目录名为 core 或 core.pid这个流程几乎涵盖了从初步检查到深度分析的所有常用命令组合。掌握它们你就能独立应对大部分线上调试问题。12. 常见问题与排查思路问题现象可能原因排查命令与思路命令找不到(command not found)1. 命令未安装。2. 命令路径不在$PATH环境变量中。which command_name检查路径。echo $PATH查看 PATH。find / -name “command_name” 2/dev/null全盘查找。权限被拒绝(Permission denied)1. 当前用户对文件/目录没有相应权限。2. 尝试执行一个非可执行文件。3. SELinux/AppArmor 安全模块限制。ls -l查看文件权限和所有者。groups查看当前用户所属组。尝试使用sudo如有权限。磁盘空间不足(No space left on device)1. 分区确实已满。2. inode 耗尽小文件过多。df -h查看各分区使用情况。df -i查看 inode 使用情况。du -sh * | sort -rh | head -10找出占用空间最大的前10个目录。进程无法杀死(kill -9无效)1. 进程处于D状态不可中断睡眠通常由 I/O 问题导致。2. 进程是僵尸进程 (Z)。ps aux | grep pid查看进程状态。对于D状态尝试排查底层存储或驱动问题。对于僵尸进程需要其父进程回收可尝试杀死父进程。网络连接失败1. 网络接口未启动或配置错误。2. 防火墙规则阻止。3. 服务未监听。ip addr show或ifconfig查看接口和IP。ping gateway测试网关连通性。ss -tulnp | grep port检查服务监听状态。sudo iptables -L -n查看防火墙规则。文件被占用无法删除1. 有进程正在使用该文件。lsof | grep file_name查找是哪个进程打开了文件。停止该进程或使用kill -9 pid强制停止。Shell脚本执行错误(syntax error,unexpected token)1. 脚本格式问题如Windows换行符。2. 解释器路径错误。cat -A script.sh查看是否包含^MWindows回车符。使用dos2unix转换。检查脚本首行 shebang (#!/bin/bash) 是否正确。13. 最佳实践与工程建议善用命令历史与补全按CtrlR可以反向搜索历史命令。使用history查看所有历史命令并用!编号快速执行。在输入命令或路径时多按Tab键自动补全能有效避免拼写错误。理解命令原理善用man和--help遇到新命令或不熟悉的参数第一时间man command或command --help。man手册是权威文档。组合命令构建管道Linux 哲学是“一个命令做好一件事”。通过管道|将多个命令组合可以完成复杂任务。例如ps aux | grep python | awk ‘{print $2}’ | xargs kill -9。操作前先确认危险操作三思对于rm -rf、dd、chmod -R 777 /等危险命令执行前务必双重检查路径。可以先使用echo或ls预览将要操作的文件。例如rm -rf ./build/前先ls -la ./build/确认。编写可复用的脚本将常用的复杂命令序列保存为 Shell 脚本 (*.sh)并添加执行权限 (chmod x)。在脚本开头使用set -e使得脚本在遇到错误时立即退出避免雪崩。添加清晰的注释和日志输出。管理好环境变量交叉编译器的路径 (PATH)、架构变量 (ARCH,CROSS_COMPILE) 通常通过环境变量设置。建议在~/.bashrc或项目专用的setup_env.sh脚本中设置避免每次手动输入。日志是生命线为你的嵌入式应用程序配置合理的日志级别INFO, WARN, ERROR。使用logger命令或 syslog 将日志写入系统日志设施便于用journalctl或查看/var/log/统一管理。定期使用logrotate等工具归档和清理旧日志防止占满存储。掌握这些命令和最佳实践你就能在嵌入式 Linux 的世界里高效地开发、调试和维护。真正的熟练来自于持续的实践建议你在自己的开发环境中反复练习这些命令并尝试解决实际遇到的问题。当你能够不假思索地运用它们时命令行将不再是障碍而是你手中最得力的工具。
返回列表