文章目录
引言
本文记录linux环境下开发常用到的命令。
不定时更新。
挂载命令
nfs挂载命令:
mount -o nolock -t nfs 192.168.18.200:/mcuzone/nfsroot/ /mnt/
mount -o nolock -t nfs 192.168.18.129:/work/nfs_root/ /mnt/
Q1:在使用kernel(版本号:2.6.22.6)时,开发板通过nfs挂载服务器的nfs文件夹时,在开发板上一拷贝或执行该文件夹下的文件,就会卡死。
W1: 原因是:server机和目标机网卡传输速率冲突,目标机网卡速率不够大。必须使用以下命令:
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.18.129:/work/nfs_root /mnt
文件内容处理
补丁
对于开源代码,一般通过补丁的形式对其维护。
自动打补丁时,例如buildroot中的package打补丁,补丁文件顺序按照0001开始,依次排序,平时命名patch文件时,也按该方式命名,养成良好习惯。
制作补丁
单个文件的补丁:
diff -uN 文件1 文件2 > 000x_说明.patch
文件夹下所有文件的补丁:
diff -uNr 文件夹1 文件夹2 > 000x_说明.patch
参数说明:
-r 递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。
-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
打补丁
命令格式:
pathc -pX < x.patch
-pX参数如何使用,需要看patch文件:
实例:
--- old/modules/pcitable Mon Sep 27 11:03:56 1999
+++ new/modules/pcitable Tue Dec 19 20:05:41 2000
如果使用参数-p0,那就表示从当前目录找一个叫做old的文件夹,在它下面寻找modules下的pcitable文件来执行patch操作。
如果使用参数-p1, 那就表示忽略第一层目录(即不管old),从当前目录寻找modules的文件夹,在它下面找pcitable。这样的前提是当前目 录必须为modules所在的目录。而diff补丁文件则可以在任意位置,只要指明了diff补丁文件的路径就可以了。当然,可以用相对路径,也可以用绝 对路径。不过我一般习惯用相对路径。
内容输出
od
格式:od [OPTION] [FILE]
说明:把文件中每个字节按指定格式显示出来,默认为8进制。通常用于查看特殊格式文件的内容
参数:
-A:指定地址显示的格式
d:十进制
o:八进制
x:十六进制
-t:指定文件中每个字节显示的格式
c: ASCII字符
d: 有符号十进制数
x: 十六进制数
hexdump
读取文件、falsh内容,并打印出指定格式的数据
例:
hexdump -C /dev/mtdx
-C:输出16进制和ascii码
清空文件内容
cat /dev/null > test.txt
替换文件内容
sed
用于处理文本
参数说明:
p:打印行
d:delete
=:打印匹配行的行号
-n 取消默认的完整输出,只要需要的
-e 允许多项编辑
-i 修改文件内容
-r 不需要转义
用法:
1. 将文件夹中的所有文件,dos换行符转换为unix换行符
sed -i 's/\r$//g'
或
sed -i 's/^M$//g'
查询文件中的字符串
grep
grep -rn --include="*.cpp" key dir:指定待查询的文件类型
grep -rn key dir
示例1:
grep -rn --include="*.sh" 81 ./application >/root/t.txt
上述命令的含义:
在dir目录下递归查找所有.cpp文件中的关键字key
在application目录下递归查找所有.sh文件中的关键字 81,显示所属行并将查找到的结果覆盖写入/root/t.txt中
参数:
-i :不查找二进制文件
查找文件或内容
locate命令
查找文件
文件属性
umask -S命令
查看系统默认的新文件权限位
文件大小
查看文件夹所有文件大小
1.ls -lh
2.du -sh ./*
单位为kb
3.du -m ./*
单位为mb
计算文件夹下特定文件的大小总和
du -sh ./*.so | awk ‘{sum += $1}; END{print sum}’
单位为kb。
解、压缩
tar.gz
tar -zcvf dirname.tar.gz dirname
tar -zxvf dirname.tar.gz
zip
zip -r dirname.zip dirname
unzip dirname.zip -d 路径
tar/tar.xz
解压:
tar.xz:
xz -d name.tar.xz
tar xvf name.tar
或:
tar -Jxvf name.tar.xz
压缩:
tar -Jcvf test.tar.xz test
tar.bz2
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2
链接文件
ln命令
说明:创建链接文件或文件夹。创建软链接情况较多。软链接相当于一个快捷方式。
格式:ln [option] sourceFile distFile
参数:
-s :建立软链接
不加参数:建立硬链接
例:ln -s abc def,创建abc的软链接def
编译
gcc
编译工具,注意架构,版本
格式:gcc [OPTION]
参数:
-o:指定生成文件的文件名。
-c:生成.o文件
-L:指定库路径
-l:-l加库名,指定链接库的名字
常见链接库:
-lpthread:线程库
-lm:数学库
用户
以root身份执行上一条命令
例如:chmod +x *.sh
sudo !!
输入密码
man命令
例:man x func
x: 2 系统核心可呼叫的函数与工具
3 一些常用函数与函数库
有时man查不到函数功能,例如pthread_mutex_t,这是因为系统没有安装相应的信息包工具
进程
查看进程信息
ps
1、ps -aux
可以查看CPU占有率,记忆体使用情况,运行状态等
显示的内容中:
%CPU:占用的CPU使用率
RSS:占用的固定的内存量
%MEM:占用的物理内存百分比
STAT:该进程的状态,有下一个板块的几个状态,D,R,S,T,Z是ps指令标识进程的5种状态
TIME:进程已消耗的CPU时间
2、ps -ef
显示所有的进程。包括显示创建进程的用户标识uid, 进程标识pid, 父进程标识ppid, 创建时间等。
后台运行进程
- 可执行文件后添加&
在所运行终端存在时,进程正常运行,而当终端关闭时,进程被杀死。
示例:
./test & - 使用linux自带的nohup工具
nohup ./test
后台程序log
后台运行时:
./test & > 1 //将test程序输出至标准输出的信息,输出至1(标准输出)
./test & >& 1
查看log
dmesg
查看系统log,通过printk打印的log
tail
进程的log一般存放在/var/log/memssage中,通过以下两种方式查看:
- cat /var/log/memssage:查看所有log
- tail -f /tmp/memssage:查看最新输出的log
log跑在前台
有时,tail -f /tmp/memssage会卡死,此时,可以使log打印至前台:
killall syslogd;syslogd -n -O -
烧写
dd
例1:
烧写boot flash分区:
dd if=/mnt/sdcard/manu_test/bin/BOOT.bin of=/dev/mtdblock1 bs=384K count=1
例2:
清空某一flash分区:
dd if=/dev/zero of=/dev/mtdblock8 bs=64k count=1
定时器crontab
#语法格式:crontab [参数]
#作用: 任务调度
# 示例:
# crontab -l 查看当前计划任务
# crontab -e 创建计划任务,打开后,需要以按照如下格式编辑
#备注
#设置格式如下:
minute(分) hour(小时) day(天) month(月) week(周) command(命令)
# 设置范围:
minute 是从0到59之间的任何整数
hour 是从0到23之间的任何整数
day 是从1到31之间的任何整数
month 是从1到12之间的任何整数
week 是从0到7之间的任何整数,其中0或7代表星期日
command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
若某列没有设置,则使用*代替 。
# 举例:
* * 1 * * tar -czvf bk.tar.gz /log_bakup # 每天进行一次归档备份
拷贝
跨服务器拷贝
scp
语法:
scp 文件 目标地址
示例:
将本机的c310_soc_ota.bin文件拷贝到-》sunshuai@192.168.1.35主机上。
scp ./out/c310/soc/c310_soc_ota.bin sunshuai@192.168.1.35:/home/http_server/sunshuai/
wget
示例:
wget http://192.168.1.35/file/sunshuai/c310_soc_ota.bin
网络相关
netstat
查看设备使用的所有网络端口
netstat -lanp
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-n : 不进行DNS轮询,显示IP(可以加速操作)
-a:显示所有协议
挂载
首先判断kernel支不支持sdcard。
1、插入sdcard,有显示信息
2、cat /proc/partitions查看有没有mmcblk0p1
3、fdisk -l,看信息。
4、内核是否支持sd,查看:device deivers-》mmc/sd card support
开始挂载:
mount /dev/mmcblk0p1 /mnt/you_path
LOG输出
将log输出到指定位置
不输出log:progress > /dev/null 2> &1 &
log导入文件中:progress > filename &
关机
halt/shutdown/init 0
自定义文件系统
修改主机名
目的:
book@www.100ask.org ==> book@suns
解决:
vi /etc/profile; //将名字更改
source /etc/profile
库相关
nm
查看库中包含的接口:
nm 库文件