• 入职一个月考核学习


    1、目录命令的学习

    1.1、ifconfig

    ifconfig  // 查看网卡等 信息

    ifconfig eth0 + IP  // 设置网卡 IP

    ifconfig eth0 down/up 网卡开关

    1.2、mount/umount

       实现 nfs 网络文件系统的挂载,一般的格式是:

    mount –t type –o optlist  dev dir

    -t : 指定挂接文件系统的类型,比如 nfs

    -o: 指定挂接可选的命令,当多个的命令的时候,还是使用一个 -o,但是命令之间使用逗号进行隔开,这个逗号可不是中文的哦,图 tcp

    dev: 挂接的设备

    dir : 指定挂接的位置,这里的挂接的位置,必须是已经存在的目录,如果多个文件需要进行挂载的话,可以在 mnt 目录下,新建多个目录,进行区分

        当实现挂接一个 Linux 的文件当板子目录上,在板子的串口操作 secureCRT中:

    mount –t nfs –o nolock,tcp 10.100.10.249:/home/carlos/nfs/3516c /mnt

    可见,-t 指定为 nfs,而 –o 指定了 nolock 和 tcp,dev 是通过 IP 指定的路径,dir 是板子上的 mnt 目录

    umount :

        实现挂接文件的卸载,一般是:

    mount –a // 将所有挂接的文件都卸载

    mount  DIR // 将挂接的位置,进行释放

     

    1.3、ps

        一般是拿来查看进程,

    ps –e // 实现全部进程的查看,第一个是进程号

    ps –ajx // 查看进程 PID、PPID 等信息

    ps –aux //查看所有进程消耗的 CPU MEM 等信息

     

    1.4、kill/killall

    kill 一般是通过 –9 的方式,加进程号,直接 kill 掉一个进程

    kill –9  + 进程号

        killall 是通过进程名的方式,kill 一个进程

    kill –p + 进程名

    1.5、make

        编译、生成升级包?

     

    1.6、reboot

        实现系统的重启,一般的设置有,

    reboot 或者 reboot + 命令

    -f : 强制进行关机

    -i :关闭网络之后再关机

    -n: 保存数据之后再关机

    1.7、ping

    ping + IP

     

    1.8、vim

    VIM

     

    1.9、gcc

        gcc 编译,一般是通过 指定,控制生成的文件

    -o  + 文件名: 生成可执行的 obj 文件,默认的是 a.out

    -S : 将源码编译为 汇编未见, gcc hello.c –S –o nhello.asm

    -E : 预处理,这个不生成文件,需要自己重定位到文本文件 gcc hello.c –E > yuchuli.txt

    2.0、tcpdump 和 tcptraceroute

    2.1、Makefile

        Makefile 的规矩:

    目标 : 依赖

        TAB+命令   // 这里必须是  TAB,不能是空格,否则报错

    a) 编写Makefile,自动把c文件,编译出可执行文件

        hello : hello.o

                gcc hello.c –o hello

        hello.o : hello.c

                gcc hello.c –o hello.o

    b) 修改c文件,调用第三方库文件的api

    hello : hello.o file1.o

            gcc hello.o file1.o –o hello

    hello.o : hello.c

            gcc hello.c –o hello.o

    file1.o : file1.c

            gcc file.c –o file.o

    clean :

       rm –rf hello.o file.o

    常用的通配符:

        $@: 代表了目标

        $^ : 代表所有的依赖的对象

        $< :  表示第一个依赖的对象

        所以上面的可以修改为:   // 目标是 $@ → hello ,所有的依赖是 hello.0 file.0

    hello : hello.o file1.o

            gcc $^–o $@

    hello.o : hello.c

            gcc $< –o $@

    file.o : file.c

            gcc $< –o $@

    // 需要自己去学习,《跟我一起学习Makefile》

     

    2.2、学习 shell

    a) 了解变量

         变量都是以字符串、变量名都是以大写的形式(和系统的变量进行区分,可以通过 set 查看)

        ABC=XXXX,等号的左右两边不能存在空格。

    当以命令的形式获得变量:

       ABC=$(date)   

    变量的使用:

        echo ${ABC},   echo $ABC 两种都是可以的,

    b) 了解条件语句

    if [ 条件 ]; then

        XXXXXX

    fi

    或者:

    if [ 条件 ]; then    // 这里有分号,不要忘记了

        XXXXXX

    else

        XXXX

    fi

    c) 了解循环语句

    for i in {数字,数字以逗号进行隔开}

    do

          XXXXXXX

    done

    for file in 字符(’ls ’)

    do

        XXXX

    done

    while 循环体:

    while [ 条件 ]    // 没有分号

    do

        xxxxx

    done

    d) 编写一个脚步文件,循环处理:1、读取/proc/meminfo的内容;2、分析MemFree和Cached的大小;3、如果两者相加,小于5Mbyte,提示内存泄漏,退出循环。

    (1)通过 while 循环体 ,一直实现检测,但是浪费了 CPU 资源

    while [ 1 ]
    do
            for i in {2,3}
            do
                    if [ ${i} = 2 ];then
                    memfree=$(cat /proc/meminfo | sed '2 p' -n | awk '{print $2}')
                    echo "memfree = ${memfree}"
                    fi

                    if [ ${i} = 3 ];then
                    cache=$(cat /proc/meminfo | sed '4 p' -n | awk '{print $2}')
                    echo "cache = ${cache}"
                    fi
            done


            addnum=$(expr ${memfree} + ${cache} )
            echo "addnum = ${addnum}"

            mm=$(expr ${addnum} / 1024)
            echo "mm = ${mm}"

            if [ ${mm} -le 5 ];then
                    echo "warning"
            else
                    echo "OK"
            fi
    done

    (2)通过定时器执行的方法进行执行:

    for i in {2,3}
    do

            if [ ${i} = 2 ];then
                    memfree=$(cat /proc/meminfo | sed '2 p' -n | awk '{print $2}')
                    echo "memfree = ${memfree}"
            fi

            if [ ${i} = 3 ];then
                    cache=$(cat /proc/meminfo | sed '4 p' -n | awk '{print $2}')
                    echo "cache = ${cache}"
            fi
    done


            addnum=$(expr ${memfree} + ${cache} )
            echo "addnum = ${addnum}"

            mm=$(expr ${addnum} / 1024)
            echo "mm = ${mm}"

            if [ ${mm} -le 5 ];then
                    echo -e "33[31;43m warning 33[0m" > /dev/pts/4       // 终端,以不同的颜色进行打印,
            else
                     echo -e "33[31;43m OK33[0m" > /dev/pts/4   // 中断
            fi

    定时执行:
        crontab –e

         */1    *    *    *   *   /XXX/XXX/XX/1.sh

       每分钟都会运行脚本文件,

        因为打印输出的话,是通过控制台进行输出的,所以打印控制台的话: /dev/pts/4,如果不知道的话,可以通过 tty 命令进行确定,因为不同的控制台都是不一样的,要根据实际的控制台进行更换。

    2.3、dd

        实现文件之间的拷贝,拷贝的同时支持格式的转换

    if : 输入文件

    of : 输出文件

    bs: ibs + obs ,既强制数据的输入和输出都是,以指定数据块的大小

    count : 写入的时候,指定写入的块,

    从 A 设备拷贝到 B 设备

    dd if=/XXX/X/A of=/XXX/XX/B bs=8k       // 实现数据的拷贝,每一次拷贝的大小为 8K,没有指定 count 也就是全部拷贝过来

    测试磁盘写入能力:

    time dd if=/dev/zero of=/XXX/XX/设备名 bs=8K count=30000

    /dev/zero : 是产生 ASCII 0 的设备,就是一直产生零,将这些零,每一 8K ,一共 30000 次,写入指定的设备,并将整个过程的时间 time 出来。

    测试磁盘的读出能力:

    time dd if=/dv/设备名 of=/dev/null bs=8K

    /dev/null 是空文件,是黑洞,所以设备的数据,每次 8k 拷贝过来,最后将这个过程时间打印出来,

     

    2.4、diff

    对比两个文件,一般是用于制作补丁包

    格式:

        diff  选项  file1  file 2

    将 file1 和 file 2 做比较。在制作补丁包的时候,file1 是源文件、file2 则是最新的目的文件,

    -r : 支持递归,

    -N : 确保文件的创建,

    -u : 以统一的格式,

    生成补丁文件:

        diff  -urN  老的文件   目的文件 > xxxxxx.path

    使用补丁文件: 借助 patch 命令

         patch –p[0-N] < xxxx.patch   // 里面的信息包含了比对的文件的路径,文件的名字等等信息

    -p 后面数值是,忽略路径,

    2.5、ln

        创建链接,连接分为软链接和硬连接,不管是软的还是硬的,文件都是保持同步,只要源文件改变了,连接文件也是会跟着改变。

    创建软链接:

    ln –s 源文件或者目录  目的文件,  生成的软链接大小很小,类似 window 的图标,4KB

    创建硬链接:

    ln  源文件  目的文件    // 创建的目的文件和源文件的大小是一模一样

    2.6、top

    top 命令,查看系统使用 CPU 、内存、等信息

    top - 14:41:28 up 497 days,  4:21,    // 到现在位置系统启动时间

    13 users, // 用户数量

    load average: 0.21, 0.19, 0.24  // 系统负载,记载的是1分钟,5分钟,15分钟,到现在的平均值
    Tasks: 209 total,   2 running, 207 sleeping,   0 stopped,   0 zombie  // 总任务数、正在运行、睡眠、停止、僵尸进行的数目
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 95.8%id,  4.1%wa,  0.0%hi,  0.0%si,  0.1%st   // 用户空间、内核空间占据 CPU 使用量
    Mem:   7901184k total,  4514476k used,  3386708k free,   332896k buffers  //
    Swap:  4088532k total,    49312k used,  4039220k free,  3735268k cached

    2.7、free

    查看内存等使用状况

    2.8、tar

        用于打包或者是解压

    格式:

        tar 命令  输出文件 输入文件     // 解压的时候就没有输出文件了

    命令:

    -v : 显示细节,都可以

    -f : 跟文件,都可以使用

    -c : 打包,打包的时候使用

    x : 解压缩

    j : bzip2

    z : zip / gzip

    打包:

    tar –cvf   1.sh.tar  1.sh     // 将 1.sh 进行打包 , c 是小写

    解包:

    tar xvf 1.sh.tar    // 因为没有涉及到解压的格式,就不用使用 j 或者 z

    解压缩指定的格式:

    tar -jxvf xxxx.tar.bz2   // 解压缩 bz2 格式,所以使用 j

       tar –zxvf xxxx.tar.zip/gzip    // 解压缩 zip 格式,所以使用 z

    2.9、zip/unzip

    zip : 实现 zip 压缩

    zip 命令 压缩生成文件   被压缩的文件

    压缩解压文件:

            zip 1.sh.zip 1.sh

            unzip 1.sh.zip

    压缩目录解压目录:

            zip –r  XXXX.zip    目录

            unzip   xxxx.zip  -d  路径 // –d 可以指定 解压路径

    3、自己编写的第一个脚本

    #!/bin/sh -v
    cd /flashapp/wifi/driver && ./load_wifi_driver.sh

    if [ !$? ];
    then
            cd /flashapp/wifi/tools && ./wifi_connect.sh
    eles
            echo "fail = cd /flashapp/wifi/driver && ./load_wifi_driver.sh"
    fi

    if [ !$? ];
    then
            udhcpc -iwlan0
    else
            echo "fail = cd /flashapp/wifi/tools && ./wifi_connect.sh"
    fi

    mount -t nfs -o nolock,tcp 10.100.20.249:/home/carlos/nfs/3516c /mnt

    if [ !$? ];
    then
            echo -e "33[31;43m everything is OK 33[0m"
    fi

    cd /mnt && ls -l

  • 相关阅读:
    算法的时间复杂度与空间复杂度
    递归八皇后问题(回溯算法)
    vue之插件
    递归之打印、阶乘、九九乘法表、迷宫问题
    选择排序
    归并排序
    sql 字符保留汉字处理
    JAVA filter map groupingBy Collectors
    2021最新版IDEA激活
    WPF 程序退出,进程依然存在
  • 原文地址:https://www.cnblogs.com/qxj511/p/5474761.html
Copyright © 2020-2023  润新知