Linux复习--基础知识

Linux复习--基础知识


 

1.Linux  基础

      目录结构  文件类型   文件权限   命令

 1)/etc     /boot   /bin   /home   /lib    /proc     /usr    /dev   mnt

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

3)权限   chmod , r:4   w:2   x:1  文字设定法  数字设定法

  u 属   g 组    o 其他

命令:ls  -l(显示权限)

命令:chmod  u+x  a.c (给文件a.c的属加x权限)

4)文件:cd,touch,mkdir,cp,rm,mv,cat,more,less,tail,head,find,grep,tar

   进程:ps  -ef,  top  ,& (放后台),jobs,  

  vi/vim   用户管理  su

 

2.gcc /g++   gdb  调试   makefile

main.c

预编译   编译   汇编  链接   

gcc   -E  main.c   -o   main.i

gcc   -S  main.i   -o   main.s

gcc   -c  main.s   -o   main.o

gcc   -o  main  main.o

 

四句合一:gcc   -c  main.c    main.o

 

3.makefile/Makefile  管理工程  make

vi makefile(代码如下)

all:main

 

main:main.o add.c max.o

(tab键)gcc -o main main.o add.o max.o

 

main.o:main.c

(tab键)gcc -c main.c

 

add.o:add.c

gcc -c add.c

 

max.o:max.c

gcc -c max.c

 

clean:

rm -rf *.o main

 

4. gdb调试  多线程  多进程,编译加上 -g  包含调试信息

调试的是可执行文件(gdb main)

命令:gcc -o mian mian.c -g ,gdb main

      l(显示十行代码)

      l 2(保证显示第2行的代码)

      l add.c:1(去add.c的第1行)

      b 3(给刚才显示的代码中第3行加断点)

      b max(给max.c的文件中加断点)

      r(运行)

      p(打印)

      n(下一行)

      bt(现在运行到哪里,函数调用栈关系)

      s(进入函数)

      finish(退出方法)

      q(退出)

      threads

      thread id(多线程调试)

 

5.库文件 :存放的是预先编译好的方法集合   头文件 (.h):  /usr/include/   

   可执行程序: /bin  /usr/bin     库文件:/lib    /usr/lib

   静态库:libxx.a    复制过来

   共享库:libxx.so   标记一下,不复制  ldd查看可执行程序用到了哪些共享库

   

   静态库:命令:   ar crv libxxx.a add.o max.o *.o

                           【crv:c创建库,r把方法添加到库里,v显示信息】

   库的使用编译命令:gcc -o main mian.c -L/home/stu/mydir0228 -lfoo

                             (-L后加路径,链接的时候到这个路径下找,-l后加静态库库名)

 

 

 

生成共享库命令:gcc -shared -fPIC -o libxxx.so *.o

【-fPIC:与代码位置无关】

库的使用编译命令:gcc -o main mian.c -L/home/stu/mydir0228 -lfoo

 (-L后加路径,链接的时候到这个路径下找,编译的时候找不到,-l后加静态库库名)

 

命令: ldd main 查看可执行程序用到了哪些共享库

 

一般应该把库放在标准路径下,不在的话用命令拷贝到/usr/lib下。

用管理员身份拷贝命令:mv libfoo.so /usr/lib

 

 

6.进程3个基本状态:就绪  运行  阻塞

   main.c存放在磁盘中,运行的时候,将io中磁盘上拷贝到内存上,然后执行命令,正在运行的命令,就是进程。

   操作系统

   进程   并发(同段时间,交替进行)  并行(同时进行,多个处理器)

 

7.复制进程 fork  替换进程 exec   僵死进程  信号  kill()   signal()  

  (q) 15    (强制结束) 9     (复制) 2 sigint      (子进程结束给父进程发送)17sigchld

输入命令查看信号意义:vi /usr/include/bits/signum.h

 

fork + exec  新进程

文件描述符   open  write  read  clone    父进程打开的文件,子进程也可以共享访问。

 

8.进程间通信:管道  共享内存  消息队列   套接字 信号量(多个进程)

     管道:有名和无名管道的区别,写入的数据在内存中,半双工

 

9.线程: 同步方法:信号量(一个进程中的多个线程用的)( 二值信号量  计数信号量)

                    互斥锁  条件变量  读写锁

          线程安全:同步  可重入函数  strtok   strtok_r

                   Ps -eLF  【L显示出线程信息】

 

10.网络:分层 :应用层 传输层 网络层 数据链路层

ip  MAC  端口号   网络协议:http(应用)   tcp(传输)  ip(网络) arp(数据链路)

Tcp/udp编程流程  

 

Tcp  :面向连接的,可靠的,流式服务

(面向连接:三次握手,四次挥手)

(可靠:应答确认,超时重传,滑动窗口,流量控制)

(流式服务:多个send(),可能一起发送,会发生粘包)

Udp :无连接的,不可靠的,数据报

 

状态转移图 TIME_WAIT  存在的意义:

1.可靠的终止TCP连接

2.迟来的报文能被识别并被丢弃。

 

客户端的connect()时候发生三次握手

listen(sockfd,5)   linux:已完成三次握手的长度

                Unix:已完成+未完成的长度

多线程  多进程  处理并发

http协议    www.baidu.com

                             端口号ip:80

长连接:1次连接,多次请求

200:成功

500:服务器错误

400:客户端错误  403   404

 

11.Select

2 = select()  (2代表总共有两个描述符)

n == -1失败

n ==0 超时

n > 0 有n个描述符有事件

 

select过程:

本文是自己学习的笔记,都是重点,但是没有特别详细,可根据本文继续学习,一起加油。

猜你喜欢

转载自blog.csdn.net/qq_41103495/article/details/108377500