• 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

     

     

     

     

     

     

    .

    /************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
  • 相关阅读:
    [转]计算机视觉之跟踪算法——相关滤波器Correlation Filter
    [转]CNN 中千奇百怪的卷积方式大汇总
    [转]边框回归(Bounding Box Regression)详解
    [转]CNN目标检测(一):Faster RCNN详解
    史上最全的机器学习工具手册!
    同样是玩Python,怎么能玩出新花样?
    2019阿里巴巴面试题集锦(有答案哦),收藏!
    10个Python图像处理工具,干货整理!
    网页数据如何实现实时刷新?
    数据结构与算法之链表学习方法攻略
  • 原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/13535570.html
Copyright © 2020-2023  润新知