入职一个月考核学习

 

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 "\033[31;43m warning \033[0m" > /dev/pts/4       // 终端,以不同的颜色进行打印,
        else
                 echo -e "\033[31;43m OK\033[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 "\033[31;43m everything is OK \033[0m"
fi

cd /mnt && ls -l

posted @ 2016-05-09 17:29  qxj511  阅读(304)  评论(0编辑  收藏  举报