Linux常用命令

ubuntu

文件压缩与解压

tar.gz

//解压tar.gz到指定目录
tar -xzf <archive-file>.tar.gz -C <target-directory>
//解压到当前目录
tar -zxvf src_name.tar.gz
//压缩:
tar -zcvf dir_name.tar.gz dir_name

文件系统挂载

mount -t nfs -o nolock 192.168.1.6:/home/kknight/nfsdir /mnt/nfsdir

参数含义
-t nfs选择挂载nfs文件系统
-o nolocknolock
192.168.1.6:/home/kknight/nfsdir源ip地址及路劲
/mnt/nfsdir本机路劲

开启NFS服务

  1. vi /etc/exports打开配置文件
  2. /home/kknight/work/IMX6UL/rootfs 192.168.0.102/24(rw,sync,no_subtree_check)添加至文件末尾
  3. sudo exportfs -a导出NFS共享目录
  4. sudo systemctl restart nfs-kernel-server重启NFS服务

字符搜寻

//在当前目录下(递归),查找所有文件,是否包含关键字
find ./ -type f |xargs grep "var"
//在当前目录下(递归),是否包含关键字命名的文件
find . -type f -name "vexpress_defconfig"
root@ubuntu:/home/kknight/qemu/filesystem# cat test.txt 
123
Hello3zz
//xargs 将文本内容转换为输入字符流,同时将'\n'转换为' '
root@ubuntu:/home/kknight/qemu/filesystem# xargs -a test.txt  > t.txt
root@ubuntu:/home/kknight/qemu/filesystem# hexdump t.txt 
0000000 3231 2033 6548 6c6c 336f 7a7a 000a     
000000d
root@ubuntu:/home/kknight/qemu/filesystem# cat t.txt 
123 Hello3zz
root@ubuntu:/home/kknight/qemu/filesystem# 


echo "file1 file2 file3" | xargs ls -l
等效于 ls -l file1 file2 file3
即xargs作为后级输入

查找目录下所有文件,包含关键词的内容。

信号SIGNAL相关

 // 使 udhcpc 重新获取IP
kill -USE1 {udhcpc pid}
 //使 udhcpc 释放IP	
kill -USE2 {udhcpc pid}

查看当前路由表

route -n

查看二进制文件

//单字节+ascii码的形式输出
hexdump -C xxx.bin
//16进制形式输出
hexdump  xxx.bin
// -n 指定输出长度
hexdump -n 5 file.txt

查看KO中待解析符号

如printk等内核中的函数

nm -u psmodule.ko

查看&设置内核信息输出等级

/proc/sys/kernel/printk是一个特殊的文件路径,它允许您在运行时控制内核消息的打印级别。该文件包含四个整数值,分别表示内核打印消息的四个级别

console_loglevel:控制台日志级别。该级别用于决定在控制台上输出哪些内核消息。只有具有比该级别高的消息才会在控制台上显示。

default_message_loglevel:默认消息日志级别。该级别用于决定哪些内核消息将被默认输出到系统日志文件(如/var/log/messages)中。

minimum_console_loglevel:最小控制台日志级别。该级别用于决定哪些内核消息可以在控制台上输出。只有具有比该级别高的消息才会显示在控制台上。

default_console_loglevel:默认控制台日志级别。该级别用于决定哪些内核消息将默认显示在控制台上。

这些级别的取值范围是从0到7,具体含义如下:

0:表示不显示任何内核消息。
1:表示显示致命错误(例如内核崩溃)。
2:表示显示关键错误(例如硬件错误)。
3:表示显示一般错误。
4:表示显示警告信息。
5:表示显示一般调试信息。
6:表示显示详细调试信息。
7:表示显示最详细的调试信息

cat /proc/sys/kernel/printk

//显示消息等级
cat /proc/sys/kernel/printk
7       4       1       7
//修改消息打印等级,实测修改第一项,在串口terminal看不到调试信息了
echo "5 4 1 7" >  /proc/sys/kernel/printk

查看字符设备&块设备设备号

cat /proc/devices

//查看设备号命令
cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
	...
Block devices:
  1 ramdisk
259 blkext
  7 loop
  8 sd
 31 mtdblock
 65 sd
	...

创建设备节点(mknod)

mknod /dev/chrdevbase c 200 0

#      设备节点名  字符设备 主设备号 次设备号
mknod /dev/chrdevbase c     200      0

<1>.创建字符设备
# mknod -m 660 /dev/console2 c 100 2
# ls -al /dev/console2
crw-rw----    1 root    root      100,   2 Oct 10 07:08 /dev/console2
注释:
-m:表示设备权限
注意:如果不指定-m权限,则是默认的644
c:字符设备
100:主设备号
2:次设备号

目标文件反汇编

arm-linux-gnueabihf-objdump -D asm-led.elf > asm-led.dis
arm-linux-gnueabihf-objdump -S -D asm-led.elf > asm-led.dis -S:输出文件c代码与汇编对应
arm-linux-gnueabihf-objdump -h asm-led.elf > asm-led.dis.section -h:输出文件段信息
将目标文件反汇编,包括elf,ko文件

查看CPU中断信息

cat /proc/interrupts
cat /proc/stat

服务or进程管理

//格式
service SCRIPT-Name COMMAND
//重启tftpd-hpa服务
service tftpd-hpa restart

直接读写物理地址

读取内存

devmem 0x80000000          # 读取32位
devmem 0x80000000 w       # 读取16位
devmem 0x80000000 b       # 读取8

写入内存

devmem 0x80000000 w 0x1234    # 写入16位值
devmem 0x80000000 32 0x12345678  # 写入32位值

echo

//朝 sample_fifo写入 0x1234abcd  -e 16进制 -n 不输入\n
echo -ne "\xCD\xAB\x34\x12" > sample_fifo 

grep查找包含关键词进程

//使用ps+ grep筛选
ps -aux | grep main

alinx      2237  0.1  2.1 11871776 87252 ?      Sl   Dec02   4:21 /home/alinx/.vscode-server/cli/servers/Stable-e8653663e8840adaf45af01eab5c627a5af81807/server/node /home/alinx/.vscode-server/cli/servers/Stable-e8653663e8840adaf45af01eab5c627a5af81807/server/out/server-main.js --connection-token=remotessh --accept-server-license-terms --start-server --enable-remote-auto-shutdown --socket-path=/tmp/code-fe56c42d-33b7-4626-8221-8ed790885df6
alinx     90867  0.0  0.0   4516   864 pts/6    S+   23:50   0:00 ./main
alinx     90900  0.0  0.0  14432  1156 pts/7    R+   23:53   0:00 grep --color=auto main

pmap查看进程内存资源情况

//使用ps+ grep筛选
pmap 90867
90867:   ./main
000056253a271000      4K r-x-- main
000056253a471000      4K r---- main
000056253a472000      4K rw--- main
000056253a5b7000    132K rw---   [ anon ]
00007fdb53662000   1948K r-x-- libc-2.27.so
00007fdb53849000   2048K ----- libc-2.27.so
00007fdb53a49000     16K r---- libc-2.27.so
00007fdb53a4d000      8K rw--- libc-2.27.so
00007fdb53a4f000     16K rw---   [ anon ]
00007fdb53a53000    164K r-x-- ld-2.27.so
00007fdb53c62000      8K rw---   [ anon ]
00007fdb53c7c000      4K r---- ld-2.27.so
00007fdb53c7d000      4K rw--- ld-2.27.so
00007fdb53c7e000      4K rw---   [ anon ]
00007ffc12e4d000    132K rw---   [ stack ]
00007ffc12ebd000     12K r----   [ anon ]
00007ffc12ec0000      8K r-x--   [ anon ]
ffffffffff600000      4K --x--   [ anon ]
 total             4520K


ps 查看进程信息

内核线程通常在 ps 输出中会显示在方括号内,例如 [kthreadd][rcu_sched] 等,它们是由内核调度和管理的任务,虽然运行在内核态,但在进程表中都有对应的记录。

NFS共享服务配置

sudo vi /etc/exports
# 文件尾行添加
/mnt/nfs_share 192.168.0.104/24(rw,sync,no_subtree_check)

sudo exportfs -a

sudo systemctl restart nfs-kernel-server

配置行解析:

/mnt/hgfs/ubuntu16_share
这是你要共享(导出)的目录。NFS 服务器会将这个目录及其内容提供给指定的客户端挂载使用。

192.168.0.104/24
这是客户端的地址说明。一般来说,用“IP地址/前缀长度”的格式来指定一个网络范围,例如“192.168.0.0/24”表示整个 192.168.0.x 网络。

  • 在这里“192.168.0.104/24”看起来有点不寻常,因为通常网络号的低位部分(例如 .0)才是标准写法。实际上,/24 表示网络掩码 255.255.255.0,因此所有 IP 地址的前 24 位必须匹配。如果按严格意义讲,“192.168.0.104/24”与“192.168.0.0/24”在逻辑上是等价的,因为掩码会使得网络部分为 192.168.0,而主机部分可以是任意值。不过,书写时建议使用网络基地址,以免引起歧义。

(rw,sync,no_subtree_check)
这部分为导出选项,解释如下:

  • rw:允许客户端对该目录进行读写操作(read-write)。
  • sync:写操作同步执行,即 NFS 服务器在完成写操作前会将数据同步写入磁盘,从而保证数据一致性,但可能牺牲一定性能。
  • no_subtree_check:当导出的是一个大文件系统中的子目录时,启用此选项可以避免服务器检查客户端请求的文件是否还在导出子目录内。这样做可以减少因为子目录移动或重命名引起的问题,同时提高性能,但在某些场景下可能带来安全风险。

编译&工具链接

不链接未使用变量

编译cflag中添加-ffunction-sections -fdata-sections,不链接未使用变量到bin烧写文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值