Linux知识点笔记

  Linux启动脚本

  rcS文件,rcS文件位于系统根目录下的“/etc/init.d”下。
  rcS文件本质是一个bash shell脚本,因此遵循bash脚本的语法规则。

[1] 文件首行必须为“#! /bin/sh”。
[2] 注释一行用“#”。
[3] 基本的赋值语句,如打印字符串。
[4] 打印特殊符号需加“”。
[5] 逻辑语句、循环语句等。

  启动脚本实现的功能

  启动脚本可以做很多事情,只要我们需要初始化时配置或者执行的功能,几乎都满足,总结几点下来及常用的有如下几种。

[1] 启动某个进程程序,最常用的,如启动串口收发进程。

[2] 加载驱动模块(.ko文件);如驱动编译成模块时,可以在这里增加加载(insmod/modprobe)驱动模块命令。

[3] 启动其他模块启动脚本,如网络服务。

[4] 配置功能,该项功能比较实用,实现期望系统起来后进行某些配置,如:配置环境变量、创建临时文件(夹)、挂在文件到指定文件夹、设置默认IP参数,以及配置系统主机名称等基础配置。

[5] 其他,如增加打印功能,方便在调试终端(串口)查看初始化过程,或者两者执行间进行延时(sleep)等。

  

 

/proc/mtd 各个参数含义 - -linux命令

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00100000 00020000 "uboot"
mtd1: 00800000 00020000 "kernel"
mtd2: 00080000 00020000 "oeminfo"
mtd3: 0280000 00020000 "rootfs"
mtd4: 04e80000 00020000 "data"
# 
size是本mtd分区的最大字节数空间 ,erasesize是本分区的最小擦除字节数空间(块大小,linux的flash是以块为擦除单位的)

  

Linux查看磁盘使用情况
# df -h
Filesystem                Size      Used Available Use% Mounted on
ubi0:rootfs              33.1M     25.2M      8.0M  76% /
devtmpfs                 28.5M         0     28.5M   0% /dev
tmpfs                    28.7M         0     28.7M   0% /tmp
tmpfs                    28.7M         0     28.7M   0% /dev/shm
# 
# 
# df
Filesystem                Size      Used Available Use% Mounted on
ubi0:rootfs              33.1M     25.2M      8.0M  76% /
devtmpfs                 28.5M         0     28.5M   0% /dev
tmpfs                    28.7M         0     28.7M   0% /tmp
tmpfs                    28.7M         0     28.7M   0% /dev/shm
# 

 

计算文件夹大小:

#
# du -sh /bin
852.0K /bin
#
#


还可以这样使用

查看根目录/ 下各文件夹的使用情况:

# pwd
/
#
# du -sh ./*
4.0K ./DirUsrPassWord
0 ./FVDB
20.0K ./Hi_Drv_Test
12.0K ./Info20200404
852.0K ./bin
0 ./dev
3.0M ./etc
1.0M ./firmware
8.8M ./lib
0 ./lib32
8.0K ./libexec
0 ./linuxrc
0 ./media
0 ./mnt
0 ./opt
0 ./proc
8.0K ./root
0 ./run
1.8M ./sbin
4.0K ./showUSRdata.sh
0 ./sound
4.0K ./start.sh
0 ./sys
624.0K ./test_bin
0 ./tmp
12.0K ./touch_app
28.8M ./usr
0 ./var
#

 df -h 和 du -sh 使用的比较多,一个统计整体磁盘情况,一个看单独指定的目录点使用情况 。

 

Tmpfs是什么

tmpfs是Linux/Unix系统上的一种基于内存的虚拟内存文件系统,而不是基于块设备,创建时不需要使用mkfs等初始化。

tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储 暂存的文件。

它最大的特点就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。
有时候,当应用程序使用到Tmpfs时,而在部署的时候如果没有对应用程序占用的内存做足够的评估时, 就有可能把Tmpfs用满,

这个时候就需要调整Tmpfs的大小了,

当然,调整的大小不能大于你机器内存大小, 否则,你只能换机器了,又或是优化你的应用程序。

当要卸载tmpfs文件系统时,意味着你的应用程序使用的共享内存将会被删除, 如果数据较重要,在umount前记得备份。

 

  

devtmpfs概述
devtmpfs可以理解为内核创建设备节点的好助手。
devtmpfs 的功用是在 Linux 核心 启动早期建立一个初步的 /dev,
主要是创建设备节点,让一般启动程序不用等待 udev,缩短 GNU/Linux 的开机时间。

2009年devtmpfs出现之前,
/dev/下面的设备节点应该都是udev-daemon收到内核的事件后用mknod程序或者直接调mknod()系统调用创建出来的; 
现在基本上不走udev了,几乎所有的设备文件(比如/dev/sda1)都是内核直接创建的。

  

 

 

Linux网络

发送接收函数:
send/sendto函数,只是把应用层的数据拷贝到内核发送缓冲区,并不保证数据一定会被发送到对端,真正执行发送及什么时候发送是由系统(协议栈)决定的,
所以send/sendto函数返回成功,只能说明拷贝成功了,如果在还未发送之前网络断开,则发送失败。

recv/recvform函数,,将内核接收缓冲区的数据拷贝到应用层的buffer中,真正执行接收数据也是由系统层决定的。

  一、send/sendto操作   

  @在阻塞模式下send操作将会等待所有数据均被拷贝到发送缓冲区后才会返回:

如果发送缓冲区可用大小为0或比要发送的数据长度要小,则会阻塞,直到发送缓冲区里的数据被系统发送后,可用缓冲区大小比要发送的数据长度大时,send返回成功,否则一直阻塞等待。
 

  @在阻塞模式下sendto操作不会被阻塞:

UDP没有真正意义上的发送缓冲区,它所做的只是把应用层的缓冲区数据拷贝到下层的协议栈,在此过程中加UDP头,IP头,所以不存在阻塞。
 

  @在非阻塞模式下send操作会立即返回:

如果发送缓冲区可用大小为0,则会立即返回EWOULDBLOCK错误,表示无法拷贝任何数据到发送缓冲区;
如果发送缓冲区可用大小不为0,但小于发送数据的长度,则拷贝可用大小的数据到缓冲区; @在非阻塞模式下sendto操作也不会阻塞: 二、recv/recvfrom操作 1.在阻塞模式下,recv/recvfrom会一直阻塞到接收缓冲区里有一个字节或一个完整的UDP数据报为止,然后再返回 recv的原型:int recv(SOCKET sd, char *buffer, int len, int flag),
注意到系统并不会等待buffer被填满了再返回,而是一旦有数据被接收到,就立刻返回,因此不要期望实际一次收到的数据长度就恰好等于len。
2.在非阻塞模式下,recv/recvfrom会立即返回 如果接收缓冲区,有至少一个字节或UDP数据报,则会返回接收到的数据大小,如果没有,则返回错误EWOULDBLOCK。

  

  

Linux下查看动态库中是否包含某个函数
strings libdrv.so | grep BrdReInitAllGMPU

 

 

 

 

 

 

.

/************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/13535570.html