Linux复习知识点(一)

Linux 复习

1.Linux基本操作        多用户   命令进行交互      目录结构

 1)目录结构/文件系统

/bin  命令  可执行程序

/lib   库文件

/etc   系统的配置文件

/boot  内核,与启动有关的文件

/dev   设备文件

/home  普通用户的家目录

/mnt    临时挂载点

/proc   内存中进程的信息

/usr  运行过程中不常改变的

/var  运行过程中常改变的文件

 2)文件类型

   -普通文件 d-目录文件 p-管道文件 I-链接文件 c,b 设备文件 s 套接字文件

 3)文件访问权限

读 r 写 w 执行 x  s,t   

改变权限:  chmod  文字设定法  数字设定法

File -> chmod u+x file   chmod 766 file

 4)bash 命令解释器  命令

a.文件操作 :cd ,touch, mkdir, cp, rm, mv, cat, more, head, less

         grep awk(处理文本文件的语言) sed(利用script来处理文本文件) find      wc(统计个数)tail(查看文件) vi/vim

b.进程有关:ps,top,kill,pkill,jobs(查看后台运行的进程),

c.网络有关:iptables(防火墙),selinux(安全),ifconfig(查看ip)

            netstat(查看tcp状态,查看端口,发送缓冲区和接受缓冲区待发送和待接收的字节数,pid/name)

            lsof –p pid(查看打开的文件/可以查看指定进程所打开的文件描述符)

            tcpdump(抓包工具)   ifstat(网络流量检测工具)

d.调试程序:gdb 调试程序 –g(多线程调试,多进程调试(follow-fork-mode))    

strace(跟踪系统调用)

          ltrace(跟踪程序执行的库函数)

core(文件调试,程序崩溃)gdb  main  core.pid     bt(显示在哪)

    e.系统管理:useradd 增加用户  shutdown 关机/重启  

ulimit 查看系统资源限制   free(查看内存使用情况)  

ipcs(查看共享内存,信号量,消息队列)

              who(查看那些用户在登录) w(显示当前登录的用户信息)

              

f.打包   压缩/解压   tar  zxf  filename

   5)程序的编译和执行

       main.c ->编译  mian.o ->链接 ->main      

                    main.obj       main.exe

       

gcc –E mian.c  -o main.i  预编译

  gcc –S main.i  -o mian.s 编译

  gcc –c main.s  -o main.o 汇编

  gcc –o main main.o 链接

  gcc/g++  ->gdb

  makefile 管理工程

  c.库文件:预先编译好的方法的集合

   静态库:libxx.a  ar crv libxx.a add.o max.o ... xxx.o

   共享库:libxx.so  gcc –shared –fPIC –o libxx.so add.o max.o ... xxx.o

   不同点?区别? 指定动态链接的库可以改环境变量  LD_LIBRARY_PATH

   /usr/bin  命令    /usr/lib 库    /usr/include 头文件

   /bin             /lib

  -L指定库的路径   gcc –o main main.c –L路径 –l名字

  -l 指定库名       gcc –o main main.c –L/home/stu –lfoo ,例如库名 libfoo.so

                   gcc

2.进程    

进程概念:一个正在运行的程序

  pid:唯一标识一个进程/pcb:进程控制块,描述一个进程的属性信息的结构体

   进程状态

僵死进程:子进程先结束,父进程没有调用wait获取子进程的状态信息

Fork复制进程  

写实拷贝(以页为单位):一个页中的数据发生改变,整个页要重新拷贝

Exec系列  替换进程

文件描述符:每打开一个文件,就得到一个文件描述符

Open read write close

系统调用/库函数比较

信号:signal() kill()发送信号

SIGCHID :子进程结束发送给父进程

SIGINT:终端中断

每个位代表一种类型的信号,某个位置为1,则说明收到信号

3.进程间通信

管道:有名管道:任意两个进程之间mkfifo  无名管道:父子进程之间pipe  数据在内存中,半双工

共享内存

消息队列 

信号量:p,v操作 p操作,原子减一,获取资源  v操作,原子加一,释放资源

套接字

4.线程:进程内部的一条执行路径(序列)

Pthread.h头文件  -lpthread 库

 

并发运行:

线程同步:信号量,互斥锁,条件变量,读写锁

线程实现:用户级  内核级  组合模型

          Linux 进程的方式实现线程,共享很多资源

          Pthread_create ->clone() ->do_fork()

线程的调试:

线程安全:1.使用线程安全的方法 如:strtok 和 strtok_r 2.进行了同步 

多线程  执行fork->

5.网络编程

1)网络模型 7层,4层

2)Tcp /udp 区别? 面向连接的 可靠的  流式服务(粘包)

                无连接 不可靠  数据报

   3)tcp 编程流程

      三次握手/四次挥手   

应答 tcp的状态   

TIME_WAIT存在的意义:1. 2.

      http协议,请求方法(9种) GET POST ,应答状态码 200 OK

      慢启动/快速恢复/快速重传

      Ping命令过程 

      http  ftp   tcp  udp  arp  rarp   icmp....

      io复用方法   select/poll/epoll之间的区别         

ET/LT模式   

libevent库:注册(event base),注销,事件循环

你可能感兴趣的:(Linux复习知识点(一))