Linux基础部分总结-----基础命令部分

一. 基础命令部分

1. 基础命令

(1) ps:显示正在运行的进程;

(2) mpstat:实时监测多处理器系统上的每个CPU使用情况;

(3) vmstat:实时输出系统各个资源的使用情况;

(4) tcpdump:用于过滤数据包或制定打开格式;

(5) lsof:列出当前系统打开的文件描述符;

(6) ipcs:查看信号量;

(7) ipcsm:查看已经销毁的信号量;

(8) poweroff:立即关机;

(9) reboot:立即重启;

(10)locate:查找包含指定字符串的文件或目录;(locate + 字符串);

(11)more:分屏显示文件内容;

(12)nl:可以显示文件内容和行号;

(13)eject:将光盘驱动中的光盘弹出和收回

(14)fdisk:列出系统中所有的储存设备;

具体归纳:

(1)操作文件的命令:tail:默认在屏幕上显示指定文件的最后10行;

                                            more:以全屏方式按页显示文本文件的内容;

                                           vi:编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令;

                                            find:在给定目录下查找符合给定条件的文件;

                                           grep:筛选过滤文本文件的行。(1.在test.txt文件中,筛选包括mother的行:grep mother test.txt;2.在test.txt文件中,筛选不包含mother的行:grep -v mother test.txt;3.查找以特定字符串结尾的行:grep "\.$" test.txt[这里\表示转义,这里查找以.结尾的行]);

                                             awk:在文件或者字符串中基于指定浏览和抽取信息;(工作流程:读入有“\n”换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0表示所有域;$1表示第一个域,$n表示第n个域。默认域分割符是“空白键”或【tab】键);

(2)与进程相关的:ps:显示正在运行的进程;

                                       kill:用来删除执行中的程序或者工作

                                       top:用来监控linux的系统状况,比如cpu、内存的使用情况

                                       jobs:用于显示linux中任务列表以及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号

(3)系统用户管理类:useradd:用来建立用户账户号和创建用户的起始目录,使用权限是超级用户

                                          passwd:用来更改使用者的密码

(4)网络方面:netstat:用于显示各种网络相关信息,如网络连接,路由表,接口状态等;

                               lsof:列出当前系统打开的文件描述符

                                tcpdump:根据使用者的定义对网络上的数据包进行截获的包分析工具。可以将网络中 传送的数据包的“头”完全截获下来提供分析;

2. gdb调试命令

(1) 调试多进程

gdb set follow-fork-mode mode

*mode 可以选择为parent 或者 child

(2)调试多线程

a.利用info threads查看线程信息;

b.thread id 调试目标id指定的线程;

c.set scheduler-locking off | on | step

*“off”表示不锁定任何线程;

 “on”只有当前被调试的线程继续运行;

 “step”在单步执行的时候,只有当前线程会执行;

(3)普通调试

-l:显示代码;

-r:运行;

-p:打印;

-s:进入到函数

-b:加上断点

-bt:查看函数执行到那块

-n:单步执行;

-c:程序继续向下一个执行

3.makefile文件

(1)功能:实现自动化编译整个工程;

(2)简单的编写步骤:

现在有5个文件,分别为:main.c    my1.h my2.h my1.c my2.c

现在编写makefile文件,名称为makefile.过程如下:

a. main: main.o  my1.o  my2.o

gcc –o main main.o my1.o my2.o

main.o:main.c my1.h my2.h

gcc –c main.c

my1.o:my1.c my1.h

gcc –c my1.c

my2.o:my2.c my2.h

gcc –c my2.c

clean:

rm –f *.o main

b.执行命令:make  就可以生成可执行文件main.如果要删除可执行文件以及所有的中间目标文件,只需要执行下 make clean .

**clean不是一个文件,它只是一个动作的名字。

(3)文件说明

在上面的makefile文件当中,目标文件包括:执行文件main 和中间目标文件(*.o),依赖文件(就是冒号后面的那些文件)。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件main的依赖文件。依赖关系的实质上就是说明了目标文件是由那些文件生成的。

(4)make的工作原理

当我们输入make时:

a. make首先会在当前目录下寻找makefile文件

b. 如果找到,它会找到文件中的第一个目标文件main,并把这个文件作为最终的目标文件。

c. 如果main文件不存在或者是main所依赖的后面的 .o 文件的修改时间要比main这个文件新,那么,他就会执行后面所定义的命令来生成main这个文件。

d. 如果main所依赖的 .o 文件也存在,那么make会在当前文件中找目标为 .o 文件的依赖性,如果找到则再根据那一个规则生成 .o 文件。

e. 由于我的c文件和h文件都是存在的,所以make会生成 .o 文件,然后再用 .o 文件声明make的最终文件,也就是执行文件main.

(5)make和makefile的联系

make是一个命令,makefile是一个文件,当makefile 文件写好后,只需要一个make命令就可以将makefile文件运行起来。

4.库

(1)库是什么?

预先编译好的方法的集合。

(2) 分类

a. 静态库

I 特点:程序在链接的过程当中,连接器从库文件中取得所需代码,复制到生成的可执行文件当中。因此,静态库

是在程序的链接阶段被复制到程序当中,和程序的执行过程没有关系。

II 创建

Eg:有两个源文件:main.c  max.c

a) gcc –c main.c max.c  (得到main.o 和max.o)

b) 使用ar将目标文件归档

ar crv libxxx.a main.o max.o

**libxxx.a即为我们创建的静态库。

a. 动态库

I 特点:动态库在链接阶段并没有被加载到程序当中,而程序在运行时被系统动态加载到内存当中供程序使用

II 创建

Eg:有一个源文件 max.c

a) gcc –fPIC –shared –o libxx.so max.c

上行代码等价与:gcc –c –fPIC max.c

 gcc –shared –o libxx.so max.o

(3) 区别

静态库的可执行文件当中包含了库代码的一份完整的拷贝,因此,当它被多次使用时就会有多份没用的拷贝在内存当中,所以它比较占内存;而动态库系统只需载入一次动态库,不同的程序可以得到内存当中相同的动态库的副本,因此会节省很多内存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章