面试复习—Linux知识点

(1)gcc编译  gcc [options][filenames]

options:

-c  编译,不链接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件

-o output_filename确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out

-ggdb调试用

-O对程序进行优化编译、链接

对于test.c :

gcc test.c将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out

gcc test.c -o test 将test.c预处理、汇编、编译并链接形成可执行文件test

对于两个源文件为test.c和testfun.c

1. 多个文件一起编译用法:#gcc testfun.c test.c -o test作用:将testfun.c和test.c分别编译后链接成test可执行文件。

2. 分别编译各个源文件,之后对编译后输出的目标文件链接

用法:#gcc -c testfun.c //将testfun.c编译成testfun.o

#gcc -c test.c //将test.c编译成test.o

#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

对于test.cpp:

g++ test.cpp -o test

其实也是分三步:

-E  让GCC在预处理结束后停止编译  g++ -E hello.cpp  -o  hello.i

-c  将hello.i编译成目标代码 g++  -c  hello.i  -o  hello.o

将目标文件连接成可执行文件   g++ hell.o   -o   hello

(2)gdb调试

有一个test.c

编译: gcc -g test.c -o test

gdb test

出现一堆版本...信息以(gdb)结束,输入help可以看命令类别 ;help 类别 可以看一类中有哪些命令

list命令: list(或l) 列出源代码,接着上次的位置往下列,每次列10行
list 行号 列出从第几行开始的源代码
list 函数名 列出某个函数的源代码

quit(或q) 退出gdb调试环境

start 开始执行程序,停在main函数第一行语句前面等待命令

step(或s) 执行下一行语句,如果有函数调用则进入到函数中

next(或n) 执行下一行语句(在提示符下直接敲回车表示重复上一条命令,故而可以直接回车表示逐条执行)

backtrace(或bt) 查看各级函数调用及参数

info(或i) locals 查看当前栈帧局部变量的值

print(或p) 打印表达式的值,通过表达式可以修改变量的值或者调用函数

finish 连续运行到当前函数返回为止,然后停下来等待命令

set var 修改变量的值(在找到某个赋值出错后,可以先改正确继续运行,看还有没有其他的错误)

(3)netstat命令:显示网络状态

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项(-at所有与tcp相关

-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l(小写L)仅列出有在 Listen (监听) 的服務状态(-lt ,-lu结合使用)

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

(4)chmod的两种使用方式:

chmod 777(或者其他数字,三个权限一组)文件或目录名(目录的话可以前面加-R表递归)

chmod u(g,o,a)+(-,=)r(w,x)文件或目录

u:文件拥有者,g同组用户,o:other用户,a:all用户;

+:加入权限,-:除去权限,=:设置权限


(5)关于数据流重定向

ll / > ~/rootfile 和 ll / >> ~/rootfile的区别:

前者将根目录内容列表写入~/rootfile,写的方式是文件不存在则创建,存在则先清空再写;

后者与上类似,只不过写的方式变成不存在则创建,存在则在文件最下方累加;


执行find /home -name .bashrc时,屏幕上会有一些输出,有的是无权限的错误输出,有的是正常输出,此时如果要进行数据重定向就需要使用> 和 2>分别重定向正确输出和错误输出,标准格式如下:

find /home -name .bashrc > list_right 2> list_error


(6)

Ctrl+C终止目前命令

Ctrl+Z暂停目前命令

Ctrl+D输入结束,有的时候,输入有多行内容,最后一行之后接Ctrl+D表示输入结束

Ctrl+S暂停屏幕输出

Ctrl+Q恢复屏幕输出


(7)grep -n[可选参数] '正则表达式'文本名

可选参数:

-v:反向选择,选出没有正则表达式的那一行

-i:忽略大小写


(8)sed [-nefr][动作]

-n:安静模式

-e:直接在命令行模式进行sed

-f filename 执行filename里面的 sed动作

-i 直接修改读取文件的内容,而不是由屏幕输出

动作:[n1[,n2]]function

n1和n2表示进行sed操作的行数,有的时候并不存在

function:

a:新增,a后面接字符串,在新的一行出现,目前行的下一行

c:替换,c后面的内容替换n1,n2之间的行

d:删除某两行之间的内容

i:插入,后面的 内容插在目前行的上一行

p:打印

s:替换,可以搭配正则表达式使用

一般都是接在管道后面,例:cat /etc/passwd | sed '2,5d' 删除2到5行之间的内容

(9)top命令

top命令经常用来监控linux的系统状况,比如cpu、内存的使用


可用内存计算:free+buffer+swap中的cache

空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少。

其他的一些与性能有关的命令

uptime 系统已经运行的时间

free 内存相关


(10)lsof命令

列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。


(11)文件夹和文件大小df、du

df查看一级文件夹大小,使用比例,却不能查看文件

du查询文件或者文件夹的磁盘使用空间

du -h --max-depth=  可以指定深入的层数

你可能感兴趣的:(Linux操作系统)