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),注销,事件循环