文档库 最新最全的文档下载
当前位置:文档库 › linux知识点

linux知识点

linux知识点
linux知识点

标识的编程可以读程序写结果或编写程序形式出现,编程题涉及的结构体成员会事先给出,编程题不需要写头文件。其他相关函数掌握函数名和对应的功能。

选择10—1-----10 填空10---1-----10 简答5-----8------40 编程4-----10----40

第1章

UNIX/Linux版本——UNIX 版本流派System V和 BSD,Linux版本两种说法内核版本发行版本

UNIX体系结构图

系统调用——库函数和系统调用的区别(文字及图示)

?系统调用

?操作系统提供给外部程序的接口。

?库函数

?C语言库函数提供给C语言编程需要的功能,有的库函数需要调用系统调用接口。

?从用户角度观察

?都以常见的C语言函数形式出现,调用方法一致。

?从实现者角度观察

?调用库函数有的需要内核的服务,有的不需要,需要内核服务的库函数是要调用系统调用的。

------用户态

?调用系统调用后执行内核程序。------核心态

man——man命令常用格式

man 数字查看的主题

第2章

Vim(Vi)——三种工作模式

插入模式命令模式底行模式

GCC——四个步骤及常用格式(生成可执行文件,调试,警告)

调试——程序调试方法

GDB调试,加-g选项

库——静态库与共享库区别

?静态库

?一般以.a结尾,libtest.a

?编译时:库函数被合并在可执行文件中

?执行时:提供可执行文件即可

?可执行文件会变大,适合于小程序调用

?共享库

?一般以.so或.so.x结尾,x代表版本,如libtest.so.1

?编译时:库文件不被合并入可执行文件

?执行时:提供可执行文件和库文件才能执行

?可执行文件会比较小,并且几个可执行文件可以共享库,适合于大型项目。

第3章

程序/进程结构——Linux可执行文件结构,进程结构

可执行文件结构

?1代码区text

?存放机器指令,立即数,只读,共享

?2数据区data

?已经初始化非0的全局变量、静态变量,常量。

?3未初始化数据区bss

?未初始化的全局变量、静态变量

?程序开始执行之前被内核初始化为0或空指针NULL

进程结构

?代码区text——加载可执行文件代码段

?数据区data——加载可执行文件数据段

?未初始化数据区bss——加载可执行文件BSS段

?堆——用于动态内存分配,程序员进行分配和释放

?栈——存放函数的参数值、返回值、局部变量等,系统自动分配释放。

命令行参数——意义,何时使用

由于程序都从main函数开始执行,所以命令行输入的信息将被main函数接收,也称为命令行参数。

命令行参数——编程:命令行参数

?编程(arg.c):输出用户输入的命令行参数及个数。

?main函数第二个参数类型是字符串指针数组。

?编程(arg2.c):如果用户

?输入一个参数,则打印"no args"

?输入两个参数,并且第二个命令行参数是

?-a,则打印“I will deal with -a”

?-l,则打印“I will deal with -l”

环境变量——增删改查(命令方式,函数方式),命令方式时永久修改对应的两个文件。

?设置环境变量命令方式

?在shell中设置,仅在当前shell中有效,重启无效

?查看变量

?set

?echo $varname

?增加或修改

?export varname=value

?删除:

?unset varname

?函数方式

?在程序运行过程中设置,仅在进程过程中有效。

?查看变量

?char *getenv(const char *var);

?var代表变量名,成功返回变量值,否则返回NULL。

?如:char *val=getenv(“PATH”);

?删除

?void unsetenv(cosnt char *var);

?var代表变量名

?如unsetenv(“AGE”);

?增加或修改

?int putenv( const char *string );

?参数格式:“变量名=变量值”。

?如putenv(“AGE=20”);

?int setenv(const char *var,const char *val,int overwrite);

?var变量名,val变量值,overwrite(非0覆盖已存在的变量)

?如setenv(“AGE”,”20”,1);

?返回值:成功返回0,否则返回-1。

?永久有效(在文件中修改)

?所有用户识别:/etc/profile

?某一用户识别:~/.bash_profile

?重启系统或使用“. 文件名”使配置立即生效

时间管理——三种表示方法及意义,转换图,time,localtime,ctime

?time_t

?从(UTC)1970年1月1日午夜开始计数的秒数值。

?与系统直接进行交互的类型

?结构体struct tm(见下页)

?将UTC时间根据当前设置的时区进行分解

?年、月、月日、时、分、秒、周日、年日等。

?字符串

?例如 Tue Jul 23 09:44:17 2002

错误处理——errno和perror作用

?在调用库函数或系统调用函数后,绝大多数情况下:

?如果执行成功将返回0或者正确值;

?如果执行失败,返回-1或null,并把系统全局变量errno赋值,以指示具体的错误情况。

?perror:将你输入的一些信息和现在的errno所对应的错误一起输出

第4章

Vfs 概念,作用

VFS是虚拟文件系统的简称,是建立在各种具体文件系统上的一个抽象层,VFS的目的是为了使用户可以以统一的方

式访问不同的文件系统

文件,i节点,文件名,目录之间的联系

每个存在磁盘上的文件都由i节点和数据块两部分组成,i节点和文件一一对应,一个i节点可以对应多个文件名,文件名和i节点的对应关系叫做文件的硬链接,文件名和i节点的对应关系保存在目录文件中。

文件类型

共七类:常规文件、目录文件、字符设备文件、块设备文件、管道文件、链接文件、套接字文件

文件访问权限---权限形式之间的转换

?用户分为三类:owner,group,other

?每类用户都有基本的访问权限r,w,x,无权限为-

?S_IRUSR|S_IWUSR|S_IXUSR 对应文件主人的rwx

?S_IRGRP|S_IWGRP|S_IXGRP 对应用户组的rwx

?S_IROTH|S_IWOTH|S_IXOTH 对应其他用户的rwx

文件描述符——概念,分配原则,3个标准文件描述符,文件描述符与打开文件表及内存i节点关系。

?任何打开的文件都被分配一个唯一的非负整数,标识该打开文件,即文件描述符。

?文件描述符即用户打开文件描述符表中各表项的索引即下标

?文件成功打开时,系统将该文件在表中的索引返回给用户,用来访问和关闭文件

?012代表三个标准的文件描述符,分别为标准输入、标准输出、标准错误输出

?一个i节点可以有0个或多个文件描述符。多个文件描述符可以对应一个i节点。

open参数选项

?int open( const char *path, int flags, mode_t perms);

?参数

?path:文件名,其他目录需要写明路径

?flags:打开文件的方式

?以下三个必须选择其一

?O_RDONLY:只读

?O_WRONLY:只写

?O_RDWR:读写

?其他可选参数(使用 | 运算)

?O_CREAT:创建文件时使用,须设置perms。

?O_TRUNC:若以“写”方式打开文件,长度截为0

?O_APPEND:每次写操作将在文件末尾追加

?perms:文件权限,仅创建时需要,使用数字或符号常量形式。

?此处可以使用数字(8进制)或符号常量形式表示

?注意:此处设定的mode的值并不是文件最终的权限,文件最终的权限是按照mode &

~umask得到的。

?默认的umask是0022

lseek参数选项

#include

off_t lseek(int fd, off_t pos, int whence);

?参数

?fd:文件描述符

?whence:取下面其中一个值

?SEEK_SET:代表文件开始,即设为pos

?SEEK_CUR:代表当前位置,即设为当前值+pos

?SEEK_END:代表文件结尾,即设为文件长度+pos

?pos:可正、负、0,代表相对whence的偏移值。

umask值与新建文件和目录的权限计算

?使用shell命令umask查看和修改的是当前shell进程的文件模式掩码,此时使用touch、mkdir 等命令新建文件和目录的权限将以此掩码为标准

?touch新建文件权限=0666& ~umask

?mkdir新建目录权限=0777& ~umask

?在用户进程中可以使用umask函数查看和修改当前进程的文件模式掩码,此时使用函数创建的

?新文件和目录权限=权限参数 &~umask

sync、fsync、fdatasync区别

#include

?void sync( void );

?将缓存所有数据排入输出队列,不等写入磁盘结束立即返回。

?int fsync(int fd);

?对内核缓存中fd指定文件进行刷新,等待写入结束才返回。

?成功返回0,否则返回-1

?int fdatasync(int fd);

?对内核缓存中fd文件的数据部分进行刷新,不包括文件属性,等待写入结束才返回。

?成功返回0,否则返回-1

编程:open,read,write,close,lseek(结合命令行参数)

?int open( const char *path, int flags, mode_t perms);

?参数

?path:文件名,其他目录需要写明路径

?flags:打开文件的方式,用或运算

?perms:文件权限,仅创建时需要,使用数字或符号常量形式。

?返回值

?成功返回最小可用的文件描述符,即访问当前文件所用的文件描述符。

?失败返回-1(置errno)

?#include

ssize_t read(int fd, void *buf, size_t nbytes );

?功能:

?从一打开的文件fd中,读取nbytes字节的数据放入buf中。

?从当前文件偏移量处开始读数据,读完后,当前文件偏移也将改变成功读出的字节个数。

?参数:

?fd:文件描述符

?buf:保存读取数据的缓冲区

?nbytes:要读取数据的字节数

?返回值:成功返回已读取字符数,失败返回-1(置errno)

?#include ssize_t相当于int

ssize_t write( int fd, const void *buf, size_t nbytes ) ;

?功能:

?将buf所指缓冲区中的nbytes个字节写入fd所指示的打开文件中。

?写操作从当前文件偏移量处开始执行,写完后,当前文件偏移也将改变成功写入的字节数。

?参数:

?fd:文件描述符

?buf:要写入文件的数据区首地址

?nbytes:要写入文件的数据字节个数

?返回值:成功返回已写字节数,失败返回-1(置errno)

?#include

?int close(int fd );

?功能:关闭文件,释放文件描述符,使之可再利用。

?参数:fd,文件描述符

?返回值:成功返回0,否则返回-1(置errno)

?#include

?off_t lseek(int fd, off_t pos, int whence);

?参数

?fd:文件描述符

?whence:取下面其中一个值

?SEEK_SET:代表文件开始,即设为pos

?SEEK_CUR:代表当前位置,即设为当前值+pos

?SEEK_END:代表文件结尾,即设为文件长度+pos

?pos:可正、负、0,代表相对whence的偏移值。

?返回值

?成功返回设置后的当前文件偏移量,off_t相当于long。

?失败返回-1(置errno)

第5章文件属性管理

stat/lstat/fstat作用和区别

?获得文件属性。 #include

int lstat(cosnt char *path, struct stat *buf); 重点

int stat(const char *path, struct stat *buf);

int fstat(int fd, struct stat *buf);

?功能:获取文件属性

?stat:通过文件路径获取

?fstat:通过文件描述符获取

?lstat:通过文件路径获取,若查询符号链接文件,仅查其本身属性而不是所链接文件属性。

?参数:

?path:文件路径

?fd:文件描述符

?buf:返回的文件属性(结构体)

?返回值:成功返回0,否则返回-1(置errno)

?获取指定文件的属性并放入struct stat的buf中

struct stat作用

?struct stat

{

dev_t st_dev; //文件所在的设备ID

ino_t st_ino; //i节点号

mode_t st_mode; //类型权限

nlink_t st_nlink; //硬链接个数

uid_t st_uid; //uid

gid_t st_gid; //gid

dev_t st_rdev; //若是特殊文件,设备ID

off_t st_size; //文件大小(字节数)

time_t st_atime; //上次访问时间

time_t st_mtime; //上次修改内容时间

time_t st_ctime; //上次文件信息修改时间

blksize_t st_blksize; //块大小(字节)

blkcnt_t st_blocks; //文件块个数

};

?接收lstat/stat/fstat获取的文件的属性

使用位运算判断文件类型和权限的方法 16位(高4+低12)

?判断buf.st_mode & S_IFMT的值是否与各个文件类型宏相等,相等即为某类型。

?将st_mode与文件权限掩码S_IFMT(0170000)进行”与”操作,屏蔽掉低12位,保留高四位,进行判

?判断st_mode & S_IFMT与如下值是否相等

?S_IFMT 0170000 文件模式位运算

S_IFSOCK 0140000 套接字文件

S_IFLNK 0120000 符号链接文件

S_IFREG 0100000 普通文件

S_FBLK 0060000 块设备文件

S_IFDIR 0040000 目录文件

S_IFCHR 0020000 字符设备文件

S_IFIFO 0010000 管道文件

?访问权限的判断即为将st_mode与相应的权限进行”与”操作来判断,如为1则说明有该权限,如为0则没

有该权限

?如:判断文件拥有者是否有读权限:

?if( (buf.st_mode & S_IRUSR)==0)

?putchar(‘-’);

?else

?putchar(‘r’);

如何进行用户名/组名与id之间的转换 getpwuid函数 getgrgid函数 struct passwd struct group

?通过用户ID得到用户信息

?#include

struct passwd *getpwuid(uid_t uid);

?返回值:成功返passwd结构体指针,否则返NULL(置errno)

?struct passwd

? {

? char *pw_name; //用户名

? char *pw_passwd; //用户密码

? uid_t pw_uid; //用户ID

? gid_t pw_gid; //用户所在组ID

? char *pw_gecos; //真实名字

? char *pw_dir; //用户主目录

? char *pw_shell //用户所用Shell

? };

?通过用户组ID得到用户组信息

?#include

struct group *getgrgid(gid_t gid);

?返回值:成功返回结构体指针,否则返回NULL(置errno)

?struct group

?{

? char *gr_name; //组名

? char *gr_passwd; //组密码

? gid_t gr_gid; //组ID

? char **gr_mem; //组成员列表

?};

硬链接与符号链接区别 5点

?命令

?ln 原文件硬链接文件(不能对目录创建硬链接)

?ln –s 原文件/目录符号链接文件

?是否新增文件

?硬链接不增文件,仅增加一个指向原文件i节点的文件名。

?符号链接增加文件,新增的符号链接文件有自己的i节点,文件内容为原文件或目录的相对路径名

?删除原文件/目录

?硬链接:删除原文件,使文件对应i节点的链接数-1,为0则删除文件。

?符号链接:删除原文件,符号链接文件失效。

?删除链接文件

?删除硬链接文件,使文件对应i节点的链接数-1,为0则删除文件。

?删除符号链接文件,对原文件/目录无任何影响

?是否跨文件系统

?硬链接不可以,符号链接可以

dup/dup2作用,如何实现输入输出重定向,实现后的效果

?int dup(int oldfd)

?int dup2(int oldfd,int newfd)

?功能:对指定的文件描述符进行复制

?参数:oldfd:要复制的源文件描述符 newfd:复制后的新文件描述符

?返回值:如果成功,返回复制的新文件描述符;如果失败,则返回-1,并且置errno为错误

?区别:dup将oldfd复制到用户文件描述符表中最小可用文件描述符,而dup2可指定将oldfd复制为newfd

?输出重定向

?打开文件得到描述符如fd

?dup2(1,4);//将原来的输出描述符保存,以便恢复

?dup2(fd,1);//这样以后的标准输出都到fd文件中

?恢复:dup(4,1);

?输入重定向

?打开文件得到描述符如fd

?dup2(0,4);//将原来的输入描述符保存,以便恢复

?dup2(fd,0);//这样以后的标准输入都从fd文件中获取

?恢复:dup(4,0);

理解:link unlink symlink readlink

第6章目录文件管理

目录文件内容,用户只能读,内核负责写

编程:opendir readdir closedir (dirent结构体会事先给出)

?打开目录

?DIR *opendir(const char *path);

?参数:path-目录名

?返回值:成功返回DIR指针,否则返回NULL(置errno)

?举例

?DIR *d1;

?d1=opendir(“/home”);

?if(d1==NULL)

{perror(“opendir”);

exit(1);}

?关闭目录

?int closedir(DIR *dirp);

?参数dirp:opendir返回的DIR指针

?返回值:成功返回0,否则返回-1(置errno)

?举例

DIR *d1;

d1=opendir(“/home”);

if(d1==NULL)

{

perror(“opendir”);

exit(1);

}

closedir(d1);

?读目录

?struct dirent *readdir(DIR *dirp);

?参数:dirp-opendir返回的DIR指针

?返回值:成功回dirent结构体指针,返回NULL表明目录结尾或错误(错误则置errno)

?说明:

?每次readdir读出一行记录,即一组文件名字及i节点号。

?如果要读出目录文件中所有文件的名字,则要使用循环方式调用readdir,直到目录文件结尾。理解:chdir, mkdir, rmdir, seekdir,telldir,rewinddir

第7章进程

Shell概念,用户登录shell查看和设置

?Shell

?是一个可执行程序,是用户与内核之间的接口,用户登录后便作为进程运行。

?是一种编程语言,可以编写Shell脚本管理系统。

?用户登录Shell

?用户与系统交互(字符界面)需要使用Shell。

?chsh –l 查看可用的Shell

?Shell运行后命令提示符是#代表root,$代表普通用户

?用户登录的Shell 在/etc/passwd文件中标明。

?显示用户正在使用的Shell可使用echo $SHELL 命令

内部命令,外部命令

?内部命令

?没有独立的可执行文件,在Shell代码中实现的功能,如cd,< ,>等

?使用man builtins可查看bash这个Shell提供的内部命令。

?外部命令

?具有独立的可执行文件,Shell只是执行这个命令,如ls,cp等。

pid分配原则,获取getpid,getppid

?每个进程对应一个非负整数, pid_t(有符号整型)

?最大的PID为32767,每次分配进程id逐渐递增,直到最大值后开始使用空闲的最小pid。

?获取进程标识

?pid_t getpid(void);

?获取父进程标识

?pid_t getppid(void);

uid,获取getuid,geteuid

gid类型,获取getgid,getegid

?#include

?#include

?获取实际用户ID uid_t getuid(void );

?获取有效用户ID uid_t geteuid(void );

?获取实际组ID gid_t getgid(void );

?获取有效组ID gid_t getegid(void );

?实际上,uid_t和gid_t都是unsigned short类型

有效uid/gid与实际uid/gid区别-------给出文件属性和其他条件,判断uid euid gid egid

?实际ID:创建进程的用户/组ID

?有效ID:进程访问系统资源的用户/组ID

?一般情况,实际用户/组ID与有效用户/组ID相同

?当可执行程序具有setuid权限时,进程的有效用户ID变为程序的拥有者。

?当可执行程序具有setgid权限时,进程的有效组id变成程序的所属组。

?如何判定有效ID?

?当可执行文件权限中拥有者/组权限执行位

?没有s时:与实际用户/组ID同

?有s时:为文件拥有者/组ID

fork父子进程对程序段共享,数据区域写时复制

?#include

pid_t fork( void );

?fork被调用一次,产生一个新的进程,称为子进程。

?返回值:成功向父进程返回子进程id,向子进程返回0,失败向原进程返回-1。

?关于子进程对父进程资源的处理

?进程映像:PCB、程序段、数据段、堆、栈

?PCB:子进程获得父进程的副本,并修改PCB中部分属性。

?程序段:父子进程共享,因为程序段只读属性。

?数据段、堆、栈:曾经是副本,后采用写时复制技术,创建子进程时这些区域不复制,只有

在对这些区域进行修改时才复制数据所在的内存页面。

fork与vfork区别

?vfork与fork的区别在于vfork是借用而不复制父进程空间,之所以提出vfork就是由于fork写时复制的

策略固然能减少全部拷贝浪费的时间空间,但是fork还是要将父进程在内存中的部分内容拷贝给子进程这还是要浪费时间空间的。

?所以如果创建子进程目的是要执行其他程序,那么这部分空间也不需要拷贝。因此使用vfork创建子进程,

目的是子进程直接调用exec族函数去执行其他程序。

?所以vfork一般与exec族函数联合使用。

exec系列函数名字,区别,作用

?exec族函数以参数所指程序替换正在执行的程序

?execl、execlp、execle

?execv、execvp、execve

?形式:execAB(A:l、v;B:空、p、e)

?注意:PCB的内容大多数不变,如pid,ppd,uid,gid等,变化的是指与新程序有关的部分。

?

?l、v的区别:命令行参数形式不同

?p和非p的区别:可执行文件名是否需要指定路径。

?e和非e的区别:是否需要指定环境变量列表

进程终止的原因:正常,中途,异常。exit与_exit的联系和区别

?正常

?main函数结束

?main函数中调用return

?exit

?_exit

?异常

?接收到某种信号(使进程终止的信号)

?调用abort:产生SIGABRT信号,类似接收信号

?exit和_exit区别

?exit是标准C库函数,_exit是unix库函数

?exit最终会调用_exit实现

?都没有返回值,都会向父进程传递SIGCHLD信号。

?exit可以不带终止状态,_exit必须带

?exit和_exit都会关闭没有关闭的文件

?exit正常结束进程,在进程终止之前要刷新缓冲区

?_exit立即结束进程,不刷新缓冲区。

?P142 exittest.c

wait和waitpid区别

?wait

?等待任意一个子进程

?属于waitpid的特例

?waitpid

?等待参数指定的子进程,如指定某个子进程,指定属于某个组的任意子进程。

?这里的wait/waitpid包括几个过程

?(1)父进程挂起等待子进程结束

?(2)获得子进程结束状态(P147例子)。

?(3)回收子进程PCB

僵死进程和孤儿进程,解决僵死进程方法

?孤儿进程

?父进程在子进程未执行完就终止,子进程沦为孤儿进程,并立刻被init进程收养为子进程。

?僵死进程(P145例子)

?子进程先终止,但父进程忽略SIGCHLD信号或无暇调用wait处理子进程,则子进程沦为僵死进程。

?僵死进程无法用命令无法直接消除,方法

?(1)父进程在合适的时机调用wait,直接消除

?(2)杀死父进程,僵死->孤儿->init收养,从而消除

system作用和实现原理

?在一个程序内通过system函数在一个新进程中运行另一个程序,这是在一个程序内执行另一个程序的最简

单的方法。

?#include

?int system(const char *string);

string:要加载执行的命令

?命令执行失败时返回-1

?参数string为要执行的命令字符串,它将被送给UNIX/Linux的命令解释程序shell,由shell来执行该命令。

?实际上system是通过fork,exec,waitpid来实现的。

编程:fork execvp wait exit

第8章线程

线程与进程关系、区别

?进程是资源分配的最小单位,而线程是计算机中独立运行、CPU调度的最小单元

?同一进程中的线程共享整个进程空间。

多进程与多线程如何选择

?关键问题

?创建进程比创建线程时空开销大

?多进程间通信开销大,多线程间通信开销小,但是线程太多也容易导致其他同步的问题。

?进程稳定性比线程好

?一个进程出问题,其它进程不受影响;

一个线程出问题,其他线程容易受影响。

?简单总结

?节约资源,速度快,选择多线程。

?稳定性好,选择多进程。

读程序写结果:pthread_create pthread_join 多个线程执行先后次序

?pthread函数

int pthread_create (pthread_t *thread,

const pthread_attr_t *attr,

void *(*start_routine) (void *),

void *arg);

?参数:

?thread:指向线程标识符的指针,

attr:设置线程属性,可设为NULL表示默认属性

start_routine:线程运行函数的起始地址,注意原型

arg:传给运行函数的参数,不传则设为NULL,若传多个用结构体“打包”。

?返回值:成功返回0,失败返回errno,不置errno。

?int pthread_join (pthread_t th, void **thread_return);

?参数

?th:被等待的线程标识符,

? thread_return :自定义指针,存储被等待线程的返回值。通常不使用,直接置为NULL 即可。

? 返回值:成功返回0,错误返回-1(置errno )

pthread_exit 与exit 区别

? 线程内调用pthread_exit 与exit 的区别

? pthread_exit 结束当前线程

? exit 结束当前进程,当前进程内的其他线程也被结束

理解:pthread_cancel

? 一个线程可以使用pthread_cancel 取消另一个线程

int pthread_cancel (pthread_t thread_id);

? 参数:被取消线程的id

? 返回值:成功返回0,否则返回errno 。

? 若要取消一个线程首先必须知道该线程id ,可将要被取消的线程id 设为全局变量

? 如何获取线程的id

? 在pthread_create 时返回给调用者

? 在线程中调用pthread_self 系统调用

pthread_t pthread_self(void);

第9章

linux 进程间通信方法及基本原理

? 管道 ? 信号 ? 信号量

? 共享内存

? 消息队列

? socket 第11章

信号概念

? 信号:软中断,被发送给一个正在执行的进程,通知该进程有某一特定事件发生。

? 通常用于异步事件(如:用户击键这样进程外的事件)处理。

? 每个信号都有一个名字,以SIG 开头

? kill –l 查看信号值

? man 7 signal 查看信号详细信息

信号产生原因

? 信号来自内核,但生成信号的请求来自3处:

? 用户

? 用户通过Ctrl -C 或Ctrl -\等按键来请求内核产生信号。

? 内核

? 当进程执行出错时,内核给进程发送一个信号,例如非法段存取,浮点数溢出,或非法的机器指

令。

? 进程

? 一个进程可以通过系统调用kill 给另一个进程发送信号,这也是进程间通信的一种方式。

? 只有具有root 权限的进程才能向其他任一进程发送信号,非root 权限的进程只能向属于同一个组或同一

个用户的进程发送信号。

进程对接收到信号的处理方式

? 当进程接收到SIGINT 时,并不一定要消亡,进程能够通过系统调用signal 告诉内核,它要如何处理SIGINT

第9章 第10章

信号。

?执行默认动作(通常终止进程)

?Linux对每个信号都有默认处理。此时进程不需要显式的调用signal。但进程可以通过以下调用来恢复默认处理:signal(SIGINT,SIG_DFL);

?忽略

?进程忽略该信号,设置:signal(SIGINT,SIG_IGN);

?捕捉(调用一个函数)

?程序告诉内核当信号到来时应该调用哪个函数。信号到来时被调用的函数称为信号处理函数。

设置:

?signal(SIGINT,functionname);

?SIGKILL和SIGSTOP这两种信号不能被忽略和捕捉!!!!

?原因:它们向超级用户提供一种使进程终止或停止的可靠方法。

如何设置进程对接收到信号的响应方式,signal函数

?signal --安装信号,设置信号处理函数

?形式一

void (*signal(int signum, void ((*handler)(int))))(int);

?形式二

typedef void (*sighandler_t) (int);

sighandler_t signal(int signum, sighandler_t handler));

?void (*signal(int signum, void ((*handler)(int))))(int);

?功能:指定signum信号的处理函数为handler。

?signum:信号值

?handler:

●执行系统默认动作:SIG_DFL

●忽略:SIG_IGN

●捕捉:参数为int返回值为void的信号处理函数名。

?返回值:成功上次对该信号的处理函数地址,失败返回SIG_ERR

?对值为n的某信号进行处理可以采用

?忽略signal(n,SIG_IGN)

?执行系统默认动作signal(n,SIG_DFL)

?捕捉后执行其他函数

?事先定义一个函数void (*handler))(int))

?signal(n, handler )

发送信号函数kill

?int kill(pid_t pid, int signum);//向pid进程发送信号signum

?功能:参数:

?pid>0:发给pid进程掌握

?pid==0:发给与发送进程同一进程组的所有进程。

?pid<0:发给进程组号为|pid|的所有进程,且发送进程对该进程具有发送信号权限。

?pid==-1:发给所有进程,且发送进程对该进程具有发送信号权限。(各种内核版本说法不一)

?返回值:成功返回0,错误返回-1。

?raise(sig);等价于kill(getpid(), sig);

定时器alarm使用

?unsigned int alarm(unsigned int seconds);

?功能:设置一个定时器,时间到产生SIGALRM

?参数:seconds:定时器的时间

?返回值:返回上一个定时器剩余时间;如果没有其他定时器则返回0

?定时器的作用:

1、在执行流中加入时延(与pause配合)。

2、调度一个将来要做的任务(捕捉信号)。

?注意:alarm的调用并不挂起进程等待时间到

alarm与sleep区别

alarm不挂起进程,sleep挂起进程

sleep与pause区别

?int pause(void);

?功能:暂停进程直到信号到达。任何信号都可以唤醒进程。

?返回值:当捕获到信号时返回 -1

?unsigned int sleep(unsigned int seconds);

?功能:当前进程睡眠指定的秒数

?参数:seconds:要睡眠的秒数

?返回值:睡眠结束时返回0;否则返回睡眠剩余时间。

管道概念单向数据传输

?单向传输

?管道是最早期的IPC方式,进程间可通过管道传递数据。发送数据的进程通过管道的写端写入数据,接收进城通过管道的读端读取数据。

?管道分类

?无名管道pipe:进程本身或父子进程间使用

?有名管道fifo:无亲缘关系进程间也可使用

?单独构成一种独立的文件系统

?管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在于内存中

未命名管道与命名管道区别

?无名管道只有具有亲缘关系的进程可以使用,如父子进程通信。

?有名管道有名字,能够获得其名字的进程都可以使用。

?有名管道的名字可以在目录树中找到,但占用的是内存空间,不拥有磁盘块。

编程:signal,kill,alarm,pause,sleep,信号值会事先给出。

编程:进程本身或父子进程使用pipe

P197 pipefork1.c

第11章

ifconfig、ping作用

ifconfig用于查看和更改网络接口的地址和参数,包括IP地址,网络掩码,广播地址,使用权限是超级用户.

ping检测主机网络接口状态,使用权限是所有用户.

c/s b/s区别

?C/S:客户端/服务器

?服务器:server,提供服务。

?客户端:client,请求服务。

?典型软件产品:腾讯QQ。

?优点:发挥客户端PC处理能力,客户端处理工作后提交给服务器,客户端响应较快。

?缺点:

?客户端需安装专用软件,软件安装、升级、维护的工作量大。

?不同的操作系统很难运行同一款客户端软件。

?B/S:浏览器/服务器

?优点:客户机软件只需浏览器,只需实现简单事务逻辑。

?缺点:客户端功能简单,绝大部分工作由服务器承担,负担重,数据查询慢,不适合大数据量分析,实时控制等。

?两种模式各有优缺点,很多网站和企业采取两种方式进行竞争。

IP和端口作用

?IP地址:

?标识主机,IPv4—32位,IPv6—128位

?端口:

?标识某主机上的某个应用进程,16位无符号整数。

?一台主机可以通过多个端口提供多个服务

?分类:

?公认口(well-known port):系统保留,0-1023

?动态端口:进程使用需申请。

?分为TCP端口和UDP端口,同号不冲突。

?在全局标识一个应用进程

?协议,本地IP,本地端口号

?标识一个完整的网间通信

?协议,本地IP,本地端口号,远地IP,远地端口号

字节顺序(big,little)及相关函数,网络字节顺序,主机字节顺序

?字节顺序:大于一个字节的类型的数据在内存中的存放顺序。

?Little-Endian

?小尾,低位字节在内存低地址端,高位字节在内存高地址端。

?Intel x86,AMD64,DEC VAX

?Big-Endian

?大尾,高位字节在内存低地址端,低位字节在内存高地址端。

?Sun SPARC, Motorola 68000,Java Virtual Machine

?主机字节顺序

?两种都有可能,所以不同字节顺序的主机之间发送信息容易出错。

?网络字节顺序

?TCP/IP协议使用Big-Endian

?转换函数

?主机to网络:htonl htons

?网络to主机:ntohl ntohs

?l:32位,s:16位

?参数为原数,返回值为转换后的数。

网络数据传输方式:面向连接(tcp),无连接(udp)

?面向连接(打电话)

?使用传输层的TCP协议

?传输过程建立连接

?三次握手建立

?四次握手断开

?面向无连接(短信)

?使用传输层UDP协议

?传输过程不建立连接,

直接写明地址发送

套接字类型

?流式套接字

?基于TCP协议,面向连接,可靠

?数据报套接字

?基于UDP协议,无连接,不可靠

?原始套接字

?超级用户使用,对网络下层通信协议进行访问面向连接套接字通信过程图示

无连接套接字通信过程图示

Linux考试知识点总结

Linux服务器配置与应用考试覆盖范围知识点总结 考前★绝密知识点覆盖率95% 总结人:敌无小新时间:2009年12月23日晚 此复习题尽量保密,被老师发现可能会重考,慎重带入考场! 1.安装软件的方法? RPM包,源码包安装,*.bin格式安装文件安装 2.RPM命令参数使用? 安装软件#RPM -ivh 软件包名参数:-q 查询-U 升级-V检查-e卸载3.源码包安装过程实例? #tar -xzvf *.tar.gz #cd * #./config #make # make install 4.bin文件安装? #./*.bin 5.Linux下设置服务自启动的过程(两种)? ntsysv chkconfig --level 35 服务名称on 6.Samba服务正常工作至少需要两个守护进程,分别是? nmbd smbd 7.Samba服务的核心配置文件? /etc/samba/smb.conf 8.Samba服务器使用的安全等级? share安全等级共享级别,不需要账号和密码,安全性最低 user 安全等级用户级别,需要账号和密码,默认为该级别 server安全等级服务器级别,与user同级别,但验证由另一台SMB负责9.NFS需要哪两个安装包? nfs-utils主要提供nfs服务目录共享 portmap 主要提供远程连接 10.NFS的主配置文件? /etc/exports 11.启动停止与重启NFS服务?(此题顺序不能错) /etc/init.d/portmap start 或service portmap start /etc/init.d/nfs start service nfs start /etc/init.d/nfs stop service nfs stop /etc/init.d/portmap stop service portmap stop /etc/init.d/nfs restart service nfs restart 12.查看NFS服务器192.168.16.177上共享目录? #showmount -e 192.168.16.177 13.挂载NFS服务器上输出目录?(实例) #mount -t NFS 服务器名或IP地址:输出目录本地挂载目录 #mkdir /mnt/nfs #mount -t nfs 192.168.16.177:/nfs/public /mnt/nfs 14.卸载NFS服务器挂载目录? #umount /mnt/nfs 15.实现自动挂载NFS目录,应修改哪个文件,怎么设置? /etc/fstab (储存系统内的静态挂载点,即每次启动时挂载的文件系统。) NFS服务器名或IP:输出目录本地挂载目录nfs defaults 0 0

Linux学习总结报告

Linux学习总结报告 一、嵌入系统应用前景 Linux的应用领域不断扩展,从最早的Web、FTP、邮件服务开始,逐步扩张到个人桌面应用、网络安全、电子商务、远程教育、集群计算、网络计算、嵌入式系统等各个领域。更是吸引了想IBM、SUN、惠普这样的IT巨头积极参与到Linux应用的开发和推广中来。Linux之前主要应用于服务器及计算集群,未来应该该在个人计算机上有所发展,优化目前的图形化界面,以及加快桌应用的开发,以及在智能终端的应用。首先,微软不会甘心让出市场让Linux来壮大,所以Linux必须发挥其本身的优势,赢得更多的用户,已达到其能不断的开发和更新。再者,由于开源软件的商业模式及技术模式没有前例可循,注定了Linux的前路不会是一帆风顺的。我认为,当前Linux的发展主要面临以下几个问题:一是Linux企业众多但未形成规模,也还没有找到有效的赢利途径,并且版本繁多,互不兼容,削弱了竞争力;二是随着逐渐流行而引发的安全问题;三是人才不足的隐忧。Linux的最大优势在于它是开源的,也即开放的。但出于各自的商业利益,各企业分别在其发行的版本上加载各种不同的功能,彼此之间不兼容。这些不同的版本意味着厂商和用户测试的工作量加大,意味着硬件厂商需要为每一个版本的Linux提供驱动程序……这种情形目前正在削弱整个Linux的市场竞争力。安全方面,随着Linux越来越受欢迎,越来越多针对Linux的蠕虫、病毒和恶意软件也会层出不穷。虽然开放源代码社区都在及时响应并修补Linux上存在的漏洞,但Linux的非集中管理本质特性使Linux升级的发布和审查变得非常困难。一旦Linux 由于安全问题给用户特别是企业用户造成损失,其不良影响及对用户信心的打击是巨大的。当前制约着Linux发展的还有一个关键因素,那就是人才。相比前几年,国内懂Linux的技术人员已经多了很多。但是作为一个快速发展的产业,人才的广度和深度都远远不够。能够对内核有所研究的人才少之又少,多数都是一知半解。有限的人才又都集中在Linux厂商内,系统集成商、代理商、应用软件开发商等拥有的人才更少,制约着完整的Linux产业链的形成 二、研究方向 嵌入式的发展方向有很多,门槛高低不一样。具体来说: 1.单片机:工控程序(不跑os)--入门容易,无外乎就是掌握汇编和c,能够根据datasheet来写,发展前景一般,也没有太大的技术难度,除非你在算法上面有优

linux考试知识点汇总.doc

LINUX 考试知识点总结 %1. 填空题 1. 文件权限 %1. 简答题 1. 1 inux 的特点 与Windows 的区別 特点:①.真正的多用户多任务操作系统 %1 .良好的兼容性,开发功能强 %1 .可移植性强 %1 .高度稳定性 %1 .丰富的图形用户界面 区别:①?多用户方面:同一时刻不同的用户访问 %1 .GUI (图形用户界面)方面 Linux 与内核相互独立 Windows 与内核结合 %1 .共享资源的相互访问 rwx rwx rwx 类型 user gro 叩 other d rwx rwx rwx 2. 文件编辑器的基本操作 w 保存 q 退出 q!强制退出 3. 文件链接命令 软链接:In -s 目标 硬链接:In 4. 创建文件/文件夹 touch mkdir 5. 文件不同对比命令 diff 6. 显示文本 cat less more 7. 删除命令 rm rm -f 强制删除 rm -r 递归删除 8. 移动文件/重命名 mv 文件名目标目录 mv 文件名新文件名 9. 复制命令 #cp ~a #cp -r 目录目标目录 #cp 文件名新文件名 文件 文件夹 链接名 rmdir 删除非空文件夹 rmdir -r 递归删除非空文件夹 移动 重命名 保留文件权限复制 复制目录 重命名

3.正则表达式 元字符:元字符名 A $* Linux -> windows 使用 NFS 与 Samba 服务器 Windows -> linux 通过网上邻居 %1 .配置文件 Windows 在注册表 Linux 由指定的存放位置女口: /etc /dev ⑤.域 linux windows 身份验证 无 有 性能 强 弱 可靠性(稳定性) 强 弱 系统管理 有抗拒感 简单易用 安全性 强 弱 功能 强 弱 2. 查找命令归总 find 命令 不根据数据库查找,速度慢,默认区分大小写 在指定的目录开始,递归的搜索各个子目录,查询满足条件的文件并对应采取相关操作 Slocate 命令 slocate 本身具有一个数据库,里面存放了系统中文件与目录的相关信息。 语 法:slocate [-u][-help][-version][-d <目录〉][查找的文件] 使用一u 选项更新数据库数据 whereis whereis 指令会在特定目录屮查找符合条件的文件。这些文件的烈性应属于原始代码, 二进制文件,或是帮助文件 语 法:whereis [-bfmsu][-B < 目录>…]卜M < 目录>...][-S < 目录>...][文件…] which which 指令会在环境变量$PATH 设置的冃录里查找符合条件的文件。 语 法:which [文件…] locate locate 指令用于查找符合条件的文件,它会去保存文件与目录名称的数据库内,查找合 乎范本样式条件的文件或目录。 语 法:locate [-d v 数据库文件>][-help][-version][?a 本样式…] 说明 只匹配行首 只匹配行尾

linux课程学习心得

Linux课程学习心得 在这学期中,我选修了linux操作系统这门课程。在没上大学之前,我就 曾经听过linux,听说它和windows不太一样,有很多好处,希望有一天能好 好学学它。所以当我看到有这门课程选的时候,我就马上选了,一下子满足了 我的好奇心。 在学习这门课程中我才知道原来还有“虚拟机”这种东西,只要你有各种 操作的镜像文件它就可以虚拟出很多个不同的操作系统,而且这些操作系统之 间是互不影响的。所以我们就可以做到一部电脑可以同时使用几种操作系统, 觉可有意思了。 老师教我们用虚拟机装好Ubuntu这个Linux内核的操作系统后,我们就开始真正踏入Linux操作系统的学习了。在学习中,我觉得最令我感到与众不同 的是,Linux操作系统是可以直接在终端中输入命令来对本机进行各种操作的,本来在windows中,我们都是用鼠标来对我们电脑上的一些文件、应用进行操 作的,但在Linux中,我们可以完全不用鼠标,只需要在键盘上敲命令的代码 就可以对它们进行操作了。 不过这在刚开始的时候,其实感觉还是很麻烦的,可能是因为那些指令还 没记熟,敲起来不太习惯吧,不过我知道,学习一样新的东西前期都算很痛苦的,不过只要坚持下去,到后面慢慢熟练起来的时候,就会用的很上手,就会 觉得越来越有趣,不会再感到痛苦了。 在过程中,我学到了许多常用的命令,比如说:ls(显示目录中的文件)、 cp(复制文件)、rm(删除文件)、mv(移动、重命名文件)、touch(创建空文件)、cd(改变文件路径)、mkdir(建立目录)、rmdir(删除目录)等等。让 我可以只需要输入这些命令就可以完成对系统中文件的管理了,虽然这看起来 好像很麻烦,感觉用鼠标可能会更简单一点,但是在后面我们遇到了一些很难 的问题时,才发现用命令操作系统其实真的很方便,非常多的好处。 在学习中,我通过上网,看书等途径了解到,原来Linux应用领域还是很 广的,而且非常实用,以后工作会帮上大忙,所以我觉得是有必要好好学习它的。我们都知道Linux和Windows一样,也是一个操作系统软件,但与Windows不同的是, Linux是一套开放源代码程序的,并可以自由传播的类 UNIX操作系统软件,随着信息技术的更新变化,Linux应用领域已趋于广泛。在此,我收集了一些Linux的常见的一些应用领域的资料,给大家分享一下。 1、IT服务器Linux系统应用领域 如今的IT服务器领域是Linux、UNIX、Windows三分天下,Linux系统可 谓是后起之秀,尤其是近几年,服务器端Linux操作系统不断地扩大着市场份

Linux复习资料整理(jxust)

1、Linux可以运行在两种模式 用户模式和内核模式 2、VFS及其的四个数据结构 虚拟文件系统是Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口;它也提供了内核中的一个抽象功能,允许不同的文件系统共存。 系统中所有的文件系统不但依赖VFS共存,而且也依靠VFS协同工作。 四个数据结构:超级块对象、索引结点对象、文件对象以及目录项对象 3、进程号、用户号? Linux系统上所有运行的东西都可以称为一个进程。 进程的基本状态三种:运行态、就绪态和阻塞态(或等待态)。

进程大致上来讲可分为两大类:系统进程与用户进程。 4、Linux进程有五种状态 linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释 放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) 5、函数库 人们把大量的基础性操作编写成一个个独立的函数,这些函数具有低耦合、高内聚的特点,这些函数集合成一个已经编译好的不完整的二进制代码文件,就是函数库 写出函数原型或函数功能(字符串、开方) 测试参数所对应的字符是否为拉丁字母 #include int isalpha(int c); 测试参数所对应的字符是否为大写字母(isupper)或小写字母(islower) #include int isupper(int c); int islower(int c); 测试参数所对应的字符是否为阿拉伯数字(isdigit)或十六进制数字(isxdigit) #include int isdigit(int c); int isxdigit(int c);

arm嵌入式linux安装课程设计心得

arm嵌入式linux安装课程设计心得 篇一:116709047陈俊松嵌入式Linux课程设计 福建农林大学金山学院电子信息类课程设计 课程名称:设计题目:姓名: 系: 专业:年级:学号:指导教师:职称: 嵌入式linux应用开发课程设计嵌入式linux Web服务器的设计 陈俊松信息与机电工程系电子信息工程2011级116709047 朱仕浪讲师 2014年11 月24 日 福建农林大学金山学院电子信息类 课程设计结果评定 目录 设计的目的

-------------------------------------------------------- 1 设计要求---------------------------------------------------------- 1 主要仪器设备(软硬件环境)---------------------------------------- 1 设计内容---------------------------------------------------------- 1 设计原理---------------------------------------------------- 1 总体方案设计------------------------------------------------- 3 程序设计---------------------------------------------------- 3 程序的调试和运行结果---------------------------------------- 7 总结-------------------------------------------------------------- 8 参考文献---------------------------------------------------------- 9 嵌入式linux Web服务器的设计 1. 设计的目的

linux实习心得体会

linux实习心得体会 为期一周的LINUX课程实训已经结束。现在我把这次收获丰富的实训自我总结一下。 我们的实训有许多的项目,首先由老师指导然后分小组独立完成老师布置的实验内容,实训的内容十分丰富详实,课程很实用。主要的大项有:认识网络设备与组网拓扑,交换机的配置,路由器交换机的配置命令,静态路由的配置。 现在首先回顾一下网络设备与组网拓扑这节有趣的课程。在这个实验中我们必须记住了解很多网络物理设备,例如:交换机,路由器等设备;还有很多通信接口,例如:AUI(粗同轴电缆连接接口),RJ45(双绞线以太网接口),SC接口(网络接口)。不同的设备之间的需要连接需要不同的线缆,必须使用正确的接法和线缆才能保证设备之间的正常通信。了解拓扑结构图是十分重要的课程,无论什么样的网络都是从最基本的拓扑结构中研究出来的,基本的网咯拓扑结构是十分重要的基础,很多网咯工程都需要设计拓扑结构图,了解拓扑结构图十分必要。在这节课程中我们知道了拓扑的广泛应用,无论是广域网还是局域网都是由拓扑结构设计出来的,这节课程我学到了很多有用的,例如:单位内的网络设计,家庭内的网络扩展,Modem和路由器的连接,双网介入局域网,计费管理拓扑结构,无线局域网拓扑结构,3G网络的拓扑结构等设计方案和案例。

网络中很重要的一个设备是交换机,这节实训课说实话比较枯燥,交换机的线路连接很容易,可是线路连接只是很轻松的一环,交换机的配置主要在于交换机的设置,其中有很多命令,从登陆,设置各种参数,运行指令,到最后退出,命令很多,需要十分用心的记忆。 在为期一周的LINUX课程实训中,我每天跟随老师一起做实验,与同学们一起观看PPT教程,对网络有了更深刻的认知,在自己做实验中不断与老师的教学内容相比较,尽力独立完成各种实验内容,虽然困难很多,但是实训很高兴。 本学期对于Linux系统的学习,让我对Linux有了一定的了解。我知道了Linux只是个内核。现在的Linux操作系统,都是用这么一个内核,加上其它的应用程序构成的。Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一,使其在金融、安全等部门有很重要的应用。 学习Linux,首先我们应该从基础开始学起。对Linux 操作系统的功能、版本、特点,以及Linux系统安装和图形环境有较全面的了解。 Linux命令是必须学习的。虽然Linux 桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,学习如何在安全的环境中执行系统命令,包括有关文件、目录、文件系统、进程等概念,如何使用相应的命令对文件、目录、

Linux知识点总结

第一章 1. Linux 是多用户、多任务操作系统。 2. 程序是计算机完成一项任务的指令集合。 3. 数据是由程序使用或生成的不同类型的信息。 4. 软件分为三大类: 1) 系统软件 2) 应用软件 3) 支撑软件 5. 系统软件包括操作系统、编译程序、汇编程序、数据库管理系统、网络软件等。系统软件对计算机系统的资源 进行控制、管理,并为用户的应用和其他程序的运行提供服务。 6. 支撑软件包括编辑程序、查错程序、项目管理程序等。辅助软件技术人员从事软件开发和项目管理人员进行项 目管理工作的软件。 7. 应用软件是为解决某一类应用需要或某个特定问题而设计的程序。 8. Linux 提供4 种不同的用户接口: 1) 命令行接口 2) 菜单 3) 图形用户接口 4) 程序接口 9. 命令解释程序称为shell 。 10. 程序接口也称为系统调用接口。系统调用时操作系统内核与用户程序、应用程序之间的接口。 11. 内核之外的程序都必须经由系统调用才能获得操作系统的服务。系统调用只能在C 程序中使用,不能作为命令 在终端上执行。由于系统调用能直接进入内核执行,所以执行效率很高。 12. Linux 解决资源使用过程中的冲突,保证资源最后能被系统再次使用所采取的方法: 1) 通过记录和文件加锁,保证数据的完整性 2) 利用调度进程和审计系统 3) 当系统出现错误时,提供错误诊断信息 4) 终止运行不正常的进程,甚至在最坏的情况下停止系统 13. 软件以是否以营利为目的分为三种模式: 1) 商业软件 2) 共享软件 3) 自由软件 14. Linux 用户分为: 1) 个人用 户2) 专业用 户 3) 商业用 户 15. Linux 的特点:(1 )与unix 系统兼容

linux基础知识总结

linux基础知识总结 1 linux 概述 1.1 linux 结构 1.1.1 linux的四部分 可以把Linux系统看作由四部分构成:内核、用户界面、文件结构和实用工具 /bin 普通用户的可执行文件,系统的任何用户都可以执行该目录中的命令 /boot 存放Linux操作系统启动时所需要的文件 /dev 系统中所有设备文件 /etc 系统中的配置文件 /home 普通用户的宿主目录,每个用户在该目下都有一个于用户名同名的目录。 /mnt 中的子目录用于系统中可移动设备的挂载点 /root 超级用户root的宿主目录 /sbin 系统中的管理命令,普通用户不能执行 /tmp 系统的临时目录 /usr 系统应用程序的相关文件 /var 系统中经常变化的文件如日志文件和用户邮件 / / \ / \ etc home

/ / / / profilexiaoming / \ 配置系统 .bash_profile 环境变量配置用户的环境变量 环境变量:配置.bashrc文件可以指定某些程序在用户登录的时候就自动启动 系统环境变量设置:在root目录下 Vi .bash_profile 修改PATH=$PATH:$HOME/bin :/安装目录/bin 需要退出(quit),重新登陆 当希望临时加入某个环境变量:用export PATH =$PATH : $HOME /bin:/root/test/t1 已定义好的环境变量: SHELL:默认的shell PATH:路径 USER:当前登录用户的用户名 显示变量内容:echo $PATH echo $USER echo $SHELL 也可以使用env命令显示环境变量 通配符: * 代表多个字母或数字 ?一个 别名: 命令:alias显示系统当前定义的所有alias aliascp ='cp-i' aliasll='ls -l --color = tty' 2. linux 基本命令 2.0 重启 shutdown - h now 立刻关机 shutdown - r now 重启 reboot 重启 2.1 文件查看和连接命令 cat cat[选项]

linux知识点总结

四:thread 1.什么是线程的detach状态?怎样设置? detach状态: 一般情况下,线程终止后,其终止状态一直保留到其它线程调用pthread_join获取它的状态为止。 但是线程也可以被置为detach状态,这样的线程一旦终止就立刻回收它占用的所有资源,而不保留终止状态。 不能对一个已经处于detach状态的线程调用pthread_join,这样的调用将返回EINVAL。 设置方法: 对一个尚未detach的线程调用pthread join或 pthread detach都可以把该线程置为detach状态,也就是 说,不能对同一线程调用两次pthread join,或者如果已经对一个线程调用了pthread detach就不能再调用 pthread_join了。 int pthread_detach(pthread_t tid); 返回值:成功返回0,失败返回错误号。 2.叙述函数pthread_join的功能。 函数pthread_join用来等待一个线程的结束,线程间同步的操作。 头文件: #include 函数定义: int pthread join(pthread t th, void **value_ptr ); th: 被等待线程的标识符 value_ptr :用户定义指针,用来存储被等待结束线程的返回值, 调用该函数的线程将挂起等待,直到id为th的线程终止。 3.进程中使用return、exit、pthread exit和pthread cancel分别起到什么作用?return,如果thread线程通过return返回,value_ptr所指向的单元里存放的是thread线程函数的返回值。 exit 终止整个进程。如果进程中的任一线程调用了exit,那么整个进程就会终止。

Linux课程设计

摘要 Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux 吸收了无数程序员的精华,不断壮大。 Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。 这次的课程设计为了熟悉以下内容Linux 基本网络命令,配置网络文件,建立个人账户,配置samba服务器,配置vsFTp服务器,shell编程。 关键词:Linux 基本网络命令配置网络文件建立个人账户配置samba服务器配置vsFTp服务器 shell编程

Linux课程设计 目录 1. 绪论 (1) 1. 1引言 (1) 2. 操作系统特性 (1) 2.1 linux的主要特性 (1) 2.2 UNIX的主要特点 (2) 3.系统设计 (3) 3.1设计的目的与意义 (3) 3.2课程设计的目标 (3) 3.3课程设计的要求 (3) 4 .课程设计的具体内容 (4) 4.1 基本网络命令及使用方法 (4) 4.2 telnet建立多账户测试 (8) 4.3 配置samba服务器,实现不同系统之间的文件共享 (10) 4.4 配置vsFTP服务器 (11) 4.5 简单shell编程 (14) 总结 (17) 参考文献 (18)

1.绪论 1. 1引言 Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux 版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux得名于天才程序员林纳斯?托瓦兹。 Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX 和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 2. 操作系统特性 2.1 linux的主要特性 (1)基本思想 Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。 (2)发展领域 职业领域:系统应用类(网管\系统管理和维护人员\安全管理人员中低端行业领域)待遇属于中下。 系统开发类行业(JAVA软件开发\C语言软件开发\WEB开发\嵌入式软件开发)其中嵌入式软件开发是linux应用最广的领域待遇属于中等发展方向:UNIX往高端领域和产业发展,例如:AIX、HP-UX、Solaris 等等。 (3)完全免费 Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

关于Linux学习的总结

关于Linux学习的总结 一知识总结:我很荣幸选了“linux操作系统”这门课程,因为在这门课程的学习过程中,我们通过老师的讲解以及在网上查阅资料,学到了许多关于linux操作系统的知识,更重要的是学会了如何应用与操作linux操作系统,我们在自己的电脑上已经安装了linux操作系统,通过亲身体验,我们真正了解到linux系统的方便与快捷,体会到了linux操作系统与windows操作系统的异同之处。以下是我对linux操作系统的一些总结: (一)linux系统简介 linux是一类unix计算机操作系统的统称。linux操作系统的内核的名字也叫“linux”。linux 操作系统也是自由软件和开放源代码发展中最著名的 例子。严格来讲,linux这个词本身只表示linux内核,但在实际上人们已经习惯了用linux 来形容整个基于linux内核,并且使用gnu 工程各种工具和数据库的操作系统。linux得名于计算机业余爱好者linus torvalds。一般可以认为,linux是一套自由使用(一般可以免费使用)和自由传播的unix操作系统。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约、全世界都能自由使用的unix兼容产品。实际上,linux仅仅是linux 中的操作系统核心(kernel)。

(二)linux操作系统的安装linux操作系统的安装方法主要有3种,其方法如下: 1.光盘安装到市场上的软件连锁店直接购买linux 光盘发行版,用光盘来安装是最方便快捷的。目前redhat,turbolinux和corel都可以在连锁店买到。一定要注意,大部分linux发行版本有“完整版”和“精简版”的区分,例如turbolinux有1cd,3 cd和10cd三个版本。 2.网络安装 3.硬盘安装 从硬盘安装linux操作系统,首先要准备安装包,linux操作系统的安装包通常是一个或多个iso镜像文件(一般通过网络下载就可以得到);其次,要通过某种手段启动镜像文件中的系统安装程序;接下来,按照安装程序的提示信息进行安装就可以了。安装过程中,需要指定linux操作系统的安装位置,这主要涉及硬盘分区的一些知识。总之,对于linux操作系统的硬盘安装,关键要学会两点:第一、为linux操作系统准备硬盘空间。第二、启动iso镜像文件中的安装程序。 (三)常用的命令1、文件目录操作命令ls 显示文件和目录列表touch 生

linux基础知识与基本命令

Linux基本命令与操作 一:linux基本知识与命令操作 二:linux下的实践(操作系统的安装以及oracle数据库的安装) 三:linux下关于产品的操作(产品环境的部署,备份与恢复) 四:linux服务器的安全配置以及oracle数据库的调优. 一:linux基本知识 1:Linux是由一个芬兰Helsinki大学的学生Linus Torvalds开发的UNIX的克隆。在Linus上大学的时候,由于AT&T与加州大学伯克莱分校在BSD版权问题上发生了法律纠纷,导致BSD的源代码还不能自由使用,所以Linus写了他自己的UNIX版本. 2:Linux只是一个内核,是由Linus Torvalds个人维护的。作为一个完整的系统,Linux中还加入了许多GNU的东西。所以Linux更确切的称呼应该是GNU/Linux。 Linux有很多发行商,像Redhat,SuSe,Caldera,Debian,Slackware等等,它们互相之间是不兼容的,各个厂商都加入了很多自己的东西。所以说Linux正在像当年的UNIX一样走向分裂。不过,幸运的是已经有权威人士意识到了这一点。 3:Linux与UNIX有什么不同? Linux也是属于UNIX家族的一员,它有许多特性是与UNIX相同的,它们之间的最大区别在于以下两点: 1)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上; 2)UNIX是商业软件,而Linux是自由软件,免费、公开源代码的。 常见的unix系统有sun solairs IBM AIX,hp hp-unix. 经过咱们产品测试的unix系统有sun solairs, hp-unix,产品可以在这两种unix系统上运行,理论上产品也可以在IBM AIX上面运行,但是没有经过测试. 4:RedHat Linux有哪些特点? RedHat Linux是最成熟的一种Linux发行版,其无论在销售还是装机量上都是市场上的老大。在中国老一辈Linux爱好者中几乎都是RedHat的使用者。市场上有大量的文章是针对RedHat 来说的。RedHat Linux朴实、简洁、稳定,是作为商业应用、钻研Linux的好平台。 5: RedHat Linux分类 Red Hat linux: (1)Red Hat linux 个人版 (2)Red Hat Enterprise Linux 企业版 Red Hat linux 个人版 linux6.1 7.0 7.3 8.0 9.0 关于7.3(最稳定的版本)

最新Linux复习大汇总

第一章概述 1、什么是POSIX标准,为什么现代造作系统的设计必须遵循POSIX标准? 答:POSIX表示可移植操作系统接口(Portable Operating System Interface)。 POSIX是在Unix标准化过程中出现的产物。 POSIX 1003.1标准定义了一个最小的Unix操作系统接口。 任何操作系统只有符合这一标准,才有可能运行Unix程序。 2、什么是GNU?Linux与GNU有什么关系? 答:GNU是GNU Is Not Unix的递归缩写,是自由软件基金会的一个项目。 GNU项目产品包括emacs编辑器、著名的GNU C和Gcc编译器等,这些软件叫做GNU 软件。 GNU软件和派生工作均适用GNU通用公共许可证,即GPL(General Public License)。 Linux的开发使用了众多的GUN工具。 3、Linux系统由哪些部分组成?Linux内核处于什么位置? 答:(1)符合POSIX标准的操作系统内核、Shell和外围工具。(2)C语言编译器和其他开发工具及函数库。(3)X Window窗口系统。(4)各种应用软件,包括字处理软件、图象处理软件等。 Linux内核是所有Linux 发布版本的核心。 第二章内存寻址 1、在80x86的寄存器中,哪些寄存器供一般用户使用?哪些寄存器只能被操作系统使用?答:通用寄存器EAX,EBX,ECX,EDX,EBP(基址指针),ESP(堆栈指针),ESI(扩展源指针),EDI(扩展目的指针),还有EFLAGS(标志寄存器). 专供操作系统使用的寄存器:IDTR中断描述符寄存器,GDTR全局描述符表寄存器,LDTR 局部描述符表寄存器,TaskRegisters任务寄存器,DebugRegister调试寄存器,ControlRegister 控制寄存器,Model-SpecificRegisters模型专用寄存器。 3、请用C语言描述段描述符表。 答:#include #include #define BASE_H 0xff00 #define BASE_M 0x00ff #define BASE_L 0xffff #define LIMIT_H 0x000f

《linux操作系统实训》总结报告

《linux操作系统实训》总结报告 班4 组姓名赵笑笑、何勇、王儒霖、宋泽琛、杨浩全文结束》》年12月2日目录 一、分组计划及评分表2 二、实训总结报告:4 (一)linux操作系统安装与基本配置4 (二)配置LINUX与windows共享资源7 (三)配置WEB服务器,发布网站12 (四)配置FTP服务器,上传资料19 (五)配置Webmin服务器33 (六)分析与总结(实训过程遇到的问题、解决方法、收获体会)40 一、分组计划及评分表分组准备及评分表班级60935组长赵笑笑项目小组编号4 一、项目名称: 二、项目小组的组成(任务分配、根据组员的表现确定其个人系数):编号姓名学号在项目小组中的任务个人贡献系数(0、0 – 1、0)1赵笑笑配置WEB服务器,制作一个简单的静态网页展示小组风貌及实训情况并发布到web服务器上2何勇配置实现linux与windows资源共享3王儒霖配置FTP服务器,将小组的相

关学习资料发布到网上供大家分享4宋泽琛组建LINUX局域网,在服务器上安装配置LINUX操作系统5杨浩在客户端,安装windows xp操作系统6 二、实训总结报告: (一)linux操作系统安装与基本配置一、实验目的: 1、熟悉和掌握Red Hat Linux 9、0操作系统的安装与配置; 2、掌握Linux网络配置命令的功能和使用。二、实验内容: 1、利用Vmware 6、0虚拟机来安装与配置Red Hat Linux9; 2、 Linux系统下网络配置和连接。三、实验步骤: 1、配置vmware 6、0虚拟机:1) 启动vmware虚拟机2) 单击“文件>CD-ROM>CD-ROM>网络设备控制)。重复上述过程,实现Linux虚拟机和Windows系统主机的网络连接。写出详细实验过程,包括命令和IP地址。四、思考题:1)Linux有几种安装方法?2)什么是主分区?什么是扩展分区?什么是逻辑分区?这些分区在Linux中如何表示?3)怎样使用Disk Druid 工具建立磁盘分区?说明过程。4)ifconfig指令能对哪些参数进行配置?5)ipconfig指令有哪些用法?

linux考试重点总结

Bootload的两个阶段: 阶段1主要包含依赖于CPU体系结构的硬件初始化代码,而且通常都是用汇编语言来实现的,以达到短小精悍的目的。这个阶段通常包括以下步骤: (1)硬件设备初始化。这是BootLoader开始就执行的操作,其目的是为阶段2的执行,以及随后内核的执行准备好基本的硬件环境。 (2)为加载BootLoader的阶段2准备RAM空间。为了获得更快的执行速度,通常把阶段2加载到RAM空间来执行。 (3)拷贝BootLoader阶段2的代码到RAM空间中。 (4)设置好堆栈。 (5)跳转到阶段2的C程序入口点。 阶段2通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。通常包括以下步骤: (1)初始化本阶段要使用到的硬件设备。 (2)检测系统内存映射。 (3)将内核映像和根文件系统映像从Flash上读到RAM空间中。 (4)为内核设置启动参数。 (5)调用内核。 什么是嵌入式系统: 嵌入式系统是以应用为中心,以计算机技术为基础,其软/硬件可裁减,可满足应用系统对功能、可靠性、成本、体积、功耗的严格要求的专用计算机系统。 嵌入式系统的基本特点: 面向特定应用、设计高效、综合性强、生命周期长、程序固化、需要独立的开发系统、可靠性高、成本低、功耗低、体积小。 嵌入式系统的发展趋势: 产品种类不断丰富,应用范围不断普及;性能不断提高;功耗不断降低,体积不断缩 小;网络化、智能化程度不断提高;软件成为影响价格的主要因素。 嵌入式处理器的特点: 低档处理器多采用哈佛结构,高档处理器多采用冯·诺伊曼结构;品种规格系列化;对实时多任务有很强的支持能力;可靠性高、功耗低、集成度高、性价比高。 嵌入式处理器的选择原则: 1、应能满足应用的设计目标; 2、开发工具是否好用? 3、市场占有率; 4、应该遵循“够用”原则,不应片面追求高性能。

linux实训心得体会

linux实训心得体会 更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,以下是小编收集的linux实训心得体会,仅供大家阅读参考! linux实训心得体会我们这一代90后,从小接触的是windows98,家里条件好的自己有电脑装的是XX,后来又有了XP,上大学时又有了win7。说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。 以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。直到学习Linux这门课以后,我才知道,原来我错了。 一.为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。 首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。其中不乏很多IT精英的心血。我们学透以后更可以做成自己的OS! 其次,Linux简单易学,因为我们初学者只是学的基础部分,Linux的结构体系非常清晰,再加上老师循序渐进的

教学以及耐心的讲解,使我们理解起来很快,短期内就基本掌握了操作和运行模式。对我们学习操作系统有很大的帮助,加深我们对OS的理解。 再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。 二.学习情况 在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。后来通过自学老师给的资料和向同学请教,掌握了一些基本的操作,比如挂载优盘,编译程序,在Linux环境下运行,转换目录等等。学了这些基础才能进行下面的模拟OS程序。 老实说,第一个程序是在C中编译好的,调试好了才在Linux下运行,感觉用vi比较麻烦,因为有错了不能调试,只是提示错误。但是一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。 就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务,我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。可以说自己收获很大,

linux知识点总结

七: 1.叙述的文件系统框架,并解释其中各个部分。 :启动相关的程序和配置 :常用的命令,这些命令通常为可执行文件或这些文件的链接 :通常为根用户准备的命令 :系统常用库 :用户安装的文件、库、开发库等 :根用户的用户文件 :普通用户的用户文件 :系统或程序的配置文件 :系统中服务器数据、日志 :系统状态信息 :系统设备 、:其他分区的挂载点(如磁盘分区、光盘或软件等) :临时文件 磁盘孤立扇区 2.叙述超级块、、和四大数据结构的作用和主要内容。 超级块: 作用:代表了整个文件系统,记录了文件系统的整体信息 内容:文件系统的状态、文件系统类型、块大小、区块数、索引节点数、脏标志、操作方法

(索引节点) 作用:代表了操作系统中的一个文件,无论该文件是否被打开,它都包含了文件操作的所有信息 内容:文件大小,设备标识符,用户标识符,用户组标识符,文件模式,扩展属性,文件读取或修改的时间戳,链接数量,指向存储该内容的磁盘区块的指针,文件分类等等。 (目录项): 作用:代表了一个目录,用来组成文件的路径,并利用其实现路径的管理 内容:包括该目录对象对应的索引节点,子目录链表,父目录目录项对象,与它同级的目录的目录项对象链表,使用计数,缓存标志 (文件): 作用:代表了被进程打开的文件,是可以读写的实体 内容:包括相应的目录项对象、使用计数、访问模式、当前偏移量、操作方法等 3.什么是文件描述符?它与返回的文件指针有什么关系? 文件描述符是一个索引值,指向内核为每一个进程所维护 的该进程打开文件的记录表。 关系:返回的文件指针是文件描述符所指向的文件描述符表中的一个表项 4.分别叙述和的参数设置以及它们的区别。

相关文档