




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux系统的特点:1)与UNIX兼容2)自由软件和源码公开3)性能高和安全性强4)便于定制和再开发5)互操作性高6)全面的多任务和真正的32位操作系统Linux系统安装:1)许可协议2)设置分区3)配置引导4)配置网络5)设置root密码6)安装系统7)安装成功简单命令:who:列出所有正在使用系统的用户,所有终端名和注册到系统的时间echo:将命令行中的参数显示到标准输出上data:在屏幕上显示或设置系统的日期和时间 cal:$cal 10(列出公元10年的日历)$cal 10 2006(列出2006年10月份的日历) $cal (列出当前月份的日历)clear:清除屏幕上的信息 passwd:用户设置自己的密码文件分类:普通文件(file 文件名文件名,指定文件类型),目录文件(ls -ai:显示当前目录的内容 ls -d:看到当前目录下的各个子目录),设备文件,符号链接文件文件操作命令:cat 选项 文件:显示文件内容或连接两个或多个文件(cat f1 f2f3,连接f1 f2存入f3) 选项:-b,从1开始对所有非空输出行进行编号 -n,从1开始对所有输出行编号-s,将多个相邻的空行合并成一个空行 -help,打印该命令,并退出more 选项 文件:一次显示一屏文本,满屏后停下来,并在屏幕的底部出现一个提示信息,给出至今已显示的该文件的百分比 选项:-num,指定一个整数,表示一屏显示多少行-d,在屏幕的底部显示友好提示信息(Press space to continue,qto quit)-s,将文件中连续的空白行压缩成一个空白行显示 +/,该选项后的模式置顶显示每个文件之前进行搜索的字符串 -c或-p,不滚屏,在显示下一屏之前先清屏less命令允许用户向前或向后浏览文件,more只能向前浏览head 选项 参数:显示指定文件的开头若干行,行数由参数值确定,默认为10行选项:-c,显示前面SIZE个字节 -n,该值指定显示前面多少行 -q不显示给定文件的标题 -v,始终显示给定文件的标题 (eg:$head -c 10 mfile)tail 选项 文件:显示指定文件的末尾若干行 选项:-c,输出最后N个字节 -f,文件增长时输出附加数据 -n输出最后的N行 -q,不输出包含给定文件名的标题 -v,时钟输出包含给定文件名的标题 注:$tail -c +10 file (从文件开头的第10个字节开始显示)touch 选项 文件名:修改指定文件的时间标签或者创建一个空文件 选项:-a,改变指定文件的存取时间 -c,不创建任何文件 -m,改变指定文件的修改时间 -t STAMP,指定时间标签 grep 选项 查找模式:在文本上查找指定模式的词或短语,并输出包括给定字符串的所有行 选项:-E,将查找模式扩展成正则表达式 -F,扩展成单纯的字符串 -b,-byte-offset 在输出的每一行前面显示包含匹配字符串的行在文件中的位置,用字节偏移量来表示-c,-count 只显示文件中包含匹配字符串的行的总数 -f FILE 从文件FILE中获取模式,每行一个。空文件不含模式,因此不做匹配 -i 匹配比较时不区分字母的大小写 -r 以递归方式查询目录下的所有子目录中的文件 -n 在输出包含匹配模式的行之前,加上该行的行号(文件首行的行号为1) -v 只显示不包含匹配字符串的文本行 -x 只显示整个行都严格匹配的行。 sort 选项 文件列表:用来对文本文件的各行进行排序 选项: -m 对已经排好序的文件统一进行合并,但不做排序 -c 检查给定的文件是否已排好序,若没有,则显示出错消息,不做排序 -u与-c选项一起用,严格地按顺序检查;否则,对排序后的重复行只输出第一行。-o 文件名将排序输出放到该文件名所指定的文件中。如果该文件不存在,创建一个新文件 uniq 选项 文件:读取输入文件,比较相邻的行,去掉重复的行,只留下其中的一行。 选项:-c显示输出时,在每行的行首加上该行在文件中出现的次数 -d 只显示重复行。-f, 忽略比较前N个字段 -s, 忽略比较前N个字符 -u 只显示文件中不重复的行。comm -123 file1 file2: 对两个已经排好序的文件进行比较。选项:-123 选项123分别表示不显示comm输出中的第一列(仅在file1出现的行)、第二列(仅在file2出现的行)和第三列(两个文件都出现)(eg:$comm -12 m1 m2 显示它们共有的行) diff 选项 file1 file2:比较两个文本文件,并找出它们的不同。 该命令输出的一般形式如下:n1 a n3,n4(把文件1的n1行附加到文件2的n3n4行后,则二者相同) n1,n2 d n3(删除文件1的n1n2行及文件2的n3行,则二者相同) n1,n2 c n3,n4(把文件1的n1n2行改为文件2的n3n4行,则二者相同)选项:-b 忽略空格造成的差别 -c 输出格式是带上下文的三行格式 -C n 输出格式是有上下文的n行格式 -e 输出一个合法的ed脚本 -i 忽略字母大小写的区别 -r 当文件file1 和文件file2都是目录时,递归比较找到的各子目录。cp 选项 源文件或目录 目标文件或目录:将源文件或目录复制到目标文件或目录中选项:-a 递归地将源目录下的所有子目录及其文件都复制到目标目录中,并且保留文件链接和文件属性不变。它等效于-dpR ;-d 复制时保留文件链接; -f 覆盖已经存在的目标文件,并且不给出提示 ;-i 在覆盖目标文件之前先给出提示,要求用户予以确认。回答y,将覆盖目标文件。这是交互式复制。;-p 除复制源文件的内容外,还将其修改时间和存取权限也复制到新文件中 -R,-r 递归复制目录,即将源目录下的所有文件及其各级子目录都复制到目标位置 -l 不复制,而是创建指向源文件的链接文件,链接文件名由目标文件给出。rm 选项 文件列表:删除文件和目录 选项:-d 删除目录,不管它是否为空(仅超级用户才可使用)-f 忽略不存在的文件,并且不给出提示信息 -r 递归地删除指定目录及其下属的各级子目录和相应的文件。-i 交互式地删除文件mv 选项 source target:对文件或目录重新命名,或者将文件从一个目录移到另一个目录中 选项:-i 交互式操作。如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入“y”,表示将覆盖目标文件;输入“n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。-f 它禁止交互式操作。在覆盖已有的目标文件时,不给任何提示。wc 选项 文件:统计指定文件的字节数、字数、行数,并将统计结果显示出来 选项: -c 统计字节数 -l 统计行数 -w 统计字数。mkdir 选项 dirname 该命令创建由dirname命名的目录。 选项:-m 数字 对新建目录设置存取权限,存取权限用给定的八进制数字表示。-p 可一次建立多个目录,即如果为新建目录所指定的路径中有些父目录尚不存在,此选项可以自动建立它们。($mkdir -m 700 /.)rmdir 选项 dirname:该命令从一个目录中删除一个或多个子目录 选项:-p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果有非空的目录,则该目录保留下来。(注:子目录被删除之前应该是空目录)进入vi:在系统提示符($ )下输入命令vi和想要编辑(建立)的文件名,便可进入vi退出vi::wq 把编辑缓冲区的内容写到你编辑的文件中,退出编 辑器,回到 shell下:ZZ 仅当作过修改时才将缓冲区内容写到文件上 :x 与 :ZZ相同 :q! 强行退出vi。vi的插入命令( i )、附加命令( a )、打开命令(o )、替换命令( s )、修改命令( c )或取代命令( r )执行shell脚本的方式:1)输入定向到shell脚本(脚本名后不能带参数)2)以脚本名作为bash函数(脚本名后可以带参数)3)将shell脚本的全乡设置为可执行,然后在提示符下直接执行别名:定义别名:aliasname=value($alias ll=ls-l)取消别名:unalias name($unalias ll)shell变量的定义:变量名是以字母或下线符打头的字母、数字和下线符序列,并且大小写字母意义不同 赋值:变量名=字符串输入:read 变量1 变量2 变量个数与给定数据个数相同,则依次对应赋值变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据。变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串输出:echo命令显示其后的变量值或者直接显示它后面的字符串管道:“|”是管道符,它将前一命令的标准输出作为后一命令的标准输入。“| tee”是T型管道符,它将前一命令的标准输出存入一个文件中,并传递给后一命令作为标准输入。1.将一个目录下的文件列表按名逆序排序后浏览:$ ls /dev | sort -r | more2.将一个文件的内容排序后保存并统计其行数:$ sort mylist | tee sort-list | wc -l编程:编写一个shell脚本,它把第二个位置参数及其以后的各个参数指定的文件复制到第一个位置参数指定的目录中#!/bin/bash dir=$1; shift while$1 do file=$1; cp $1 $dir shift done ls $dir利用数组形式存放10个城市的名字,然后利用for循环把他们打印出来#!/bin/bash name=(北京 保定 秦皇岛 廊坊 石家庄 西安 天津 杭州 上海 重庆)for i in $name* do echo $i done编写一个脚本,求费波纳奇数列的前10项及总和#!/bin/bash a=1 b=1 echo -n -e “$at$b” let “n=a+b” count=4 while$count-gt 0 do let “a=a+b”let”b=b+a” echo -n -e “t$at$b” let “n+=a+b” let “count=count-1” done echo “The sum is $n”1 操作系统划分为内核和系统程序两部分.2 Linux系统支持三种类型的硬件设备:字符设备、块设备和网络设备3 文件系统管理文件、分配文件空间、管理空闲空间、控制对文件的访问并为用户检索数据。4 进程就是程序的一次执行过程5 进程至少要有三种基本状态。这三种基本状态是:运行态、就绪态和封锁态(或等待态)。6 在linux系统中,进程有五种状态运行态 可中断等待态 不可中断等待态 停止态 僵死态7按照进程的功能和运行的程序来分,进程分两类:系统进程,用户进程8 进程管理由进程控制块、进程调度、中断处理、任务队列、定时器,bottom half队列、进程通信等部分组成9 进程组成:正文段、用户数据段、系统数据段10 在Linux中,每个进程在创建时都会被分配一个数据结构,称为进程控制块(Process Control Block,PCB)。PCB中包含了很多重要的信息,供系统调度和进程本身执行使用,进程控制块是Linux系统最复杂的数据结构之一。其中最重要的是进程ID(process ID,PID),进程ID也被称作进程标识符,是一个非负的整数。11 task_struct结构(进程控制块)包含下列几方面的信息:进程状态、调度信息 、标志符、内部进程通讯、链接信息、时间和计时器、文件系统、虚拟内存、处理器信息。12 进程的执行模式划分为用户模式和内核模式。两种状态之间的主要区别是,核心态下的进程具有较高的优先级,能够存取核心和用户数据。而用户态下的进程能存取它自己的指令与数据,但不能存取核心指令和数据。 13 进程的创建过程:为新进程分配任务结构体内存空间、把父进程任务结构体拷贝到子进程任务结构体、为新进程在其虚拟内存建立内核堆栈、对子进程任务结构体中部分进行初始化设置、把父进程有关信息拷贝给子进程,建立共享关系、把子进程加入到可运行队列中、结束do_fork()函数返回PID值14 进程的创建:内核在引导并完成了基本的初始化以后,就有了系统的第一个进程(即初始化进程,实际上是内核线程)。除此之外,所有其他的进程和内核线程都由这个原始进程或其子孙进程所创建。 除初始化进程外,其他进程都是用系统调用fork( )和clone( )创建的。 fork( )是全部复制 ,而clone( ) 有选择地复制 15 进程调度方式:可抢占式 (preemptive):就绪队列中一旦有优先级高于当前执行进程优先级的进程存在时,便立即发生进程调度,转让处理机。 不可抢占式 (non_preemptive):即使在就绪队列存在有优先级高于当前执行进程时,当前进程仍将占用处理机直到该进程自己因调用原语操作或等待I/O而进入阻塞、睡眠状态,或时间片用完时才重新发生调度让出处理机。Linux基本上采用“抢占式优先级”方式 18信号(signal,称为软中断)机制是在软件层次上对中断机制的一种模拟。该机构通常包括三部分:(1)信号的分类、产生和传送。(2)对各种信号预先规定的处理方式。(3)信号的检测和处理。管道是linux中最常用的IPC机制。“|”是管道符,它将前一命令的标准输出作为后一命令的标准输入一个管道线就是连接两个进程的一个打开文件。由系统自动处理二者间的同步、调度和缓冲。管道文件允许两个进程按先入先出(FIFO)的方式传送数据,而它们可以彼此不知道对方的存在。19 Linux系统也支持UNIX System V版本中的三种进程间通信机制,它们是:消息通信、共享内存、信号量 (1)一个进程可以通过系统调用建立一个消息队列,然后任何进程都可以通过系统调用向这个队列发送消息或从队列中接收消息,从而实现进程间的消息传递.(2)y一个进程可以通过系统调用建立一片共享内存区,然后其他进程就可以通过系统调用将该内存区映射到自己的用户地址空间。随后进程就可以像访问自己的内存空间那样读、写该共享区的信息。(3)信号量机制可以实现进程间的同步,保证若干进程对共享的临界资源的互相操作。简单地说,信号量是系统内的一种数据结构,它的值代表着可使用资源的数量,可以被一个或多个进程进行检测和设置。对于每个进程来说,检测和设置操作时不可中断的,分别对应操作系统理论中的P V操作。20 系统调用:系统调用是操作系统提供的、与用户程序之间的接口,也就是操作系统提供给程序员的接口 21 过程调用与系统调用两者有实质差别:过程调用只能在用户态下运行,不能进入核心态;而系统调用可以实现从用户态到核心态的转变。22 系统调用可大致分为五个类别:进程控制、文件管理、设备管理、信息维护和通信 23 Linux下进程间通信的几种主要手段是:管道(pipe)及有名管道(named pipe)、信号(signal)、消息(message)、共享内存(shared memory)、信号量(semaphore)和套接口(socket)。 24 程序、进程、作业和任务: 程序(program)是一个存储在存储介质上的文件。 进程(proccess)是一个程序的执行过程。作业(job)或任务(task)是用户需要计算机完成某项任务时要求计算机所做工作的集合,一个作业可能需要几个程序联合完成。25 作业和进程主要的区别与关系如下:作业是用户向计算机提交的任务实体;一个进程是作业或任务的某个执行过程;一个作业可由多个进程组成。 26 fork函数调用成功后,其子进程会复制父进程的几乎所有信息(除PID等信息),主要复制父亲进程的代码段、数据段、BSS、堆、栈、打开的文件描述符(但共用同一个文件表项)。另外,子进程从父进程继承下列属性:实际用户/组号、有效用户/组号以及保留的用户/组号、进程组号、环境变量、对文件的执行时关闭标志、信号处理方式设置、信号掩码、当前工作目录、根目录、文件模式创建掩码、文件大小限制等信息。27 pipe系统调用:ret_val=pipe(fd);参数定义为int fd2。创建一个管道文件,返回两个文件描述符fd0和fd1分别用于管道文件的读和写操作。管道文件创建后,可以被fork创建的子进程共享。28 进程对信号可采取的处理方式:(1)忽略信号。进程可忽略收到的信号,但不能忽略SIGKILL和SIGSTOP信号。(2)阻塞信号。进程可以选择对某些信号予以阻塞。(3)由进程处理该信号。用户在trap命令中可以指定处理信号的程序,从而进程本身可在系统中标明处理信号的处理程序的地址。当发出该信号时,就由标明的处理程序进行处理。(4)由系统进行默认处理。如上所述,系统内核对各种信号(除用户自定义之外)都规定了相应的处理程序。在默认情况下,信号就由内核处理,即执行内核预定的处理程序。以生产者/消费者问题为例,通过实验理解fork()和clone()两个系统调用的区别。程序要求能够创建4个进程或线程,其中包括两个生产者和两个消费者,生产者和消费者之间能够传递数据。基于fork()系统调用: #include sys/types.h #include sys/file.h #include unistd.hchar r_buf4; /读缓冲 char w_buf4; /写缓冲 int pipe_fd2;pid_t pid1, pid2, pid3, pid4; int producer(int id); int consumer(int id);Int main(int argc,char *argv) if(pipe(pipe_fd)0) printf(pipe create error n); exit(-1); else printf(pipe is created successfully! n);if(pid1=fork()=0) producer(1); if(pid2=fork()=0) producer(2);if(pid3=fork()=0) consumer(1); if(pid4=fork()=0) consumer(2);close(pipe_fd0); /需要加上这两句 close(pipe_fd1); /否这会有读者或者写者永远等待int i,pid,status;for(i=0;i4;i+) pid=wait(&status); exit(0);int producer(int id)printf(producer %d is running! n,id); close(pipe_fd0); int i=0; for(i=1;i10;i+) sleep(3); if(id=1) /生产者1 strcpy(w_buf,aaa0);else /生产者2 strcpy(w_buf,bbb0); if(write(pipe_fd1,w_buf,4)=-1)printf(write to pipe errorn) close(pipe_fd1); printf(producer %d is over!n,id); exit(id); int consumer(int id) close(pipe_fd1); printf(producer %d is running! n,id); if (id=1) /消费者1 strcpy(w_buf,ccc0); else/消费者2 strcpy(w_buf,ddd0); while(1) sleep(1);strcpy(r_buf,eee0); if(read(pipe_fd0,r_buf,4)=0) break; printf(consumer %d get %s, while the w_buf is %sn,id,r_buf,w_buf);close(pipe_fd0);printf(consumer %d is over!n, id);exit(id);基于clone()系统调用:#include sched.h #include pthread.h #include stdio.h#include stdlib.h #include semaphore.h“int producer(void * args); int consumer(void *args);pthread_mutex_t mutex;sem_t product; sem_t warehouse;char buffer84;int bp=0;main(int argc,char* argv) pthread_mutex_init(&mutex,NULL);sem_init(&product,0,0); sem_init(&warehouse,0,8);int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省宁德市周宁县委政法委招聘3人模拟试卷及参考答案详解
- 2025北京市海淀区育鹰小学招聘5人考前自测高频考点模拟试题附答案详解(完整版)
- 2025年河南省职工医院招聘护理人员60人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025年河北唐山滦州市森林草原消防专业队员招聘7人考前自测高频考点模拟试题带答案详解
- 2025年青岛市崂山区“崂选计划”第二批选聘(37名)模拟试卷带答案详解
- 安全培训教学提纲课件
- 河北省【中职专业高考】2025年中职高考对口升学(理论考试)真题卷【生物与化工大类】模拟练习
- 安全培训救火毯课件
- 2025广东“百万英才汇南粤”佛山市高明区选聘公办初中校长9人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025年连云港市赣榆区事业单位公开招聘工作人员31人考前自测高频考点模拟试题及答案详解(全优)
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 全国2025年质量月活动知识竞赛题库及答案
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- Unit 4 Reading and Thinking 学案-高中英语人教版(2019) 选择性必修第一册
- 中国新生儿复苏指南解读(2021修订)
- 广告及宣传印刷品制作服务方案
- 安全评价工作程序框图流程图
- 医共体成员单位人力资源工作制度
- 西式烹调师中级理论试卷 答案
- 如何建立高效学习小组
- 汽车系统动力学与控制 教学大纲
评论
0/150
提交评论