1、Linux下一切皆文件
-普通文件
d目录文件
p管道文件
c.b设备文件
L链接文件
S套接字文件
2、文件名颜色对应的文件类型
绿色 —— 可执行文件
黑色 —— 普通文件
蓝色 —— 目录
红色 —— 压缩文件
黄色 —— 设备文件
灰色 —— 其他文件
浅蓝色 ——链接文件
红色闪烁——链接文件有问题
3、文件访问权限有3组(每组3位)
4、系统运行级别(0~6)
0 关机
1 单用户模式
2 不带网络的多用户模式
3 完整的多用户模式,优先进入文本字符界面
4 保留,用户可以自定义
5 图形界面多用户
6 重启系统
ps:切换系统级别用init命令,runlevel 查看当前系统运行级别
5、文件编译链接过程命令
gcc -c main.c //编译main.c文件为main.o
gcc -o main main.o //链接main.o为main
./main //运行main程序
gcc -o main main.c //一步完成编译链接过程
(在bin目录下的ls ps pwd等命令也是程序,且不用加绝对路径,直接运行。
如果把main拷贝到bin目录下,效果等同)
6、makefile的使用
all:main
main:max.o add.o main.o
gcc -o main.o max.o add.o
main.o:main.c
gcc -c main.c
max.o:max.c
gcc -c max.c
add.o:add.c
gcc -c add.c
clean:
rm -rf *.o main
每次的空格需要按“Tab”键,而不是“Space”
7、GDB调试
Linux下默认为release版本,不带调试信息
所以需要程序员自己加入调试信息
gcc -o main main.c **-g**
gdb main //调试mian
L //显示代码
b+行号 //下断点
info break //显示断点
r //运行程序
p a //跟踪变量a
s //进入下一个函数
n //下一步,单步执行
finish //跳出函数
q //退出
bt //查看函数调用堆栈
delete 1 //删除断点
c //继续操作(下一个断点处停止)
8、写时拷贝
说到写时拷贝,不得不提fork( )函数
pid_t fork(void)
fork()被调用一次,返回值为两次,父进程返回的是子进程的pid,子进程的返回值为0,子进程是父进程的副本,子进程获得父进程数据空间、堆和栈的副本。子进程也拥有自己的存储空间,父子进程不共享存储空间
写时拷贝:fork并不执行父进程的数据段、栈和堆的完全复制,这些区域由父子进程共享,内核将他们的访问权限改变成只读,如果父子进程中的任一个视图修改这些区域,内核只修改区域的那块内存制作一个副本,再更新页表。
9、ping命令用的什么协议
ICMP(Internet Control Message Protocol)网际控制报文协议,是TCP/IP协议族中的一个子协议
10、常用的熟知端口号
FTP TELNET SMTP DNS TFTP HTTP SNMP
21 23 25 53 69 80 161