文档库 最新最全的文档下载
当前位置:文档库 › Linux系统应用与开发教程 第二版 刘海燕 荆涛综合实验

Linux系统应用与开发教程 第二版 刘海燕 荆涛综合实验

Linux系统应用与开发教程 第二版 刘海燕 荆涛综合实验
Linux系统应用与开发教程 第二版 刘海燕 荆涛综合实验

综合实验

实验1

目的:练习vi编辑器以及X Window桌面的使用。

需要的知识:第3章vi编辑器的使用和第4章建立快速链接的内容。

题目:首先使用vi编辑器编辑一个c语言源程序hello.c,程序的功能为:接受用户输入的姓名,然后向屏幕输出一条语句“Welcome 姓名”。使用命令“gcc –o hello hello.c”编译源程序,如果发现程序错误则需要反复使用vi修改源文件并且在修改后重新编译。最后在X Window的桌面上放置源程序hello.c的链接。

实验步骤:

步骤1:使用vi编辑文件hello.c

#include

main(){

char name[20];

printf("Please input your name:");

scanf("%s",name); //输入姓名

printf("Welcome %s!\n",name); //输出welcome 姓名

return 0;

}

步骤2:编译文件gcc –o hello hello.c

步骤3:如果有错误,再次使用vi修改hello.c的内容;然后再次编译。直至编译时不报任何错误。

步骤4:在桌面建立链接:

创建链接有如下两个方法:

方法1:打开文件管理器,找到hello.c文件,单击鼠标右键,选择【创建链接】命令,则在文件管理器的窗口中出现一个图标,名字为“到…的链接”,并且带一个小箭头符号。只要将该图标拖放到桌面,就可以建立到该项目的链接。

方法2:选中hello.c文件,按住鼠标中键(三键鼠标)的滚轮键,拖放到桌面,当放开鼠标中键时,会弹出【移动到此处】、【复制到此处】、【在此处创建链接】等命令,选择【在此处创建链接】命令,就可以在桌面创建到该项目的链接。

提示:本题用到了编译命令,题目中已经指出了该命令的使用方式,不要求理解每个项目的含义,在第12章会有具体介绍。

实验2

目的:练习存储设备的挂载以及编写shell程序将日常管理任务简化。

需要的知识:第6章存储设备的挂载和第11章shell编程的内容

题目:假设有一台Windows和Linux双启动的主机,Window有C、D两个分区,编写一个负责挂载的脚本程序mmnt,参数为cdrom时挂载光驱、参数为floppy时挂载软驱、参数为

C(大小写都可以)时挂载Windows的C盘(有中文字符),参数为D(大小写都可以)时挂载Windows的D盘(有中文字符),参数为其它时显示帮助信息:

Usage: mmnt cdrom|floppy|C|c|D|d

编写一个负责卸载的脚本程序umnt,完成相应的存储设备的卸载,参数的含义同上。

实验步骤:

步骤1:以root身份登录Linux系统,使用fdisk –l命令查看系统连接的存储设备,主要查看windows的两个分区的名称,比如hda3, hda5等。

步骤2:建立挂载点:一般地,光驱和软驱的挂载点/mnt/cdrom、/mnt/floppy由系统缺省建立,查看一下这两个目录是否存在,如果没有,手工建立;此外使用mkdir命令建立windows 的C盘和D盘的挂载点:

mkdir /mnt/C

mkdir /mnt/D

步骤3:编写/etc/fstab文件,编辑或者添加如下4行:

/dev/hda3 /mnt/C vfat noauto,iocharset=cp936 0 0

/dev/hda5 /mnt/D vfat noauto,iocharset=cp936 0 0

/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0

/dev/fd0 /mnt/floppy auto noauto,owner 0 0

步骤4:编写shell脚本mmnt

#!/bin/sh

case $1 in

cdrom) mount /mnt/cdrom ;;

floppy) mount /mnt/floppy ;;

C|c) mount /mnt/C ;;

D|d) mount /mnt/D ;;

*) echo “Usage: mmnt cdrom|floppy|C|c|D|d”;;

esac

步骤5:编写shell脚本umnt

#!/bin/sh

case $1 in

cdrom) umount /mnt/cdrom ;;

floppy) umount /mnt/floppy ;;

C|c) umount /mnt/C ;;

D|d) umount /mnt/D ;;

*) echo “Usage: mmnt cdrom|floppy|C|c|D|d”;;

esac

步骤6:使脚本mmnt和umnt可执行

chmod +x mmnt

chmod +x umnt

提示:此实验可以分两步,学完第6章后完成步骤1到步骤3,使用系统命令mount和umount 测试自己的设置,学完第11章shell编程之后完成最后几步。

实验3

目的:练习网络服务的配置与管理。

需要的知识:第7章网络配置、第8章网络服务器的配置和使用。

题目:某局域网(https://www.wendangku.net/doc/157697618.html,)具有3台安装了Linux系统的计算机,分别用于提供WWW、FTP 和DNS服务,要求:设计分配IP地址和主机名,配置三种服务器,使得可以通过域名访问网络服务。

实验步骤:

步骤1:设计分配各主机的IP地址和域名,假设三台主机分别为A、B、C,可以如下分配IP地址和域名:

主机IP 主机名域名

A. 192.168.1.10 www https://www.wendangku.net/doc/157697618.html,

B 192.168.1.11 ftp https://www.wendangku.net/doc/157697618.html,

C 192.168.1.12 dns https://www.wendangku.net/doc/157697618.html,

步骤2:构建WWW服务器

1.在A主机中安装最新版的Apache服务器软件

2.配置Apache

3.在其主文档目录中建立web主页

4.启动Apache服务器

5.在本机中测试服务器与网页是否正常运行

步骤3:构建FTP服务器

1.在B主机中安装最新版的vsFtpd服务器软件

2.配置vsFtpd,按需求建立不同形式的登录方式

3.在对应的文件目录中复制有关文件资料

4.启动vsFtpd服务器

5.在本机中测试服务器是否正常运行

步骤4:构建DNS服务器

1.在C主机中安装最新版的bind服务器软件

2.配置系统,建立主机与IP地址的映射。

3.启动bind服务器

4.在本机中测试服务器是否正常运行

步骤5:设置客户机

1.在客户机中修改本地DNS服务器的设置。

2.打开网页浏览器,在地址栏中输入:https://www.wendangku.net/doc/157697618.html, ,检验是否连接WWW服务器

3.打开网页浏览器,在地址栏中输入:ftp://https://www.wendangku.net/doc/157697618.html, ,检验是否连接FTP服务器

实验4

目的:了解Linux下的用户管理机制,熟练掌握Linux下的C语言编程以及gcc工具的使用。需要的知识:C/C++语言的基本技能、第9章用户管理知识、第12章gcc的使用。

题目:Linux系统管理的一项重要工作就是用户管理。用户的口令以加密的形式存储在口令文件/etc/shadow中。弱口令就是很容易被猜出来的口令,比如与用户名相同的口令、象“123456、admin、computer”这类常用的口令等,口令字典是指将一些常用弱口令写在一个文本文件。管理员应该定期检测系统中是否存在弱口令。试编写一个c语言程序,主动检查自己的Linux系统中是否存在弱口令。

实验步骤;

步骤1:分析/etc/shadow文件的格式。

可以查看自己的系统中该文件的格式,参照9.1节的介绍,该文件的每一行对应一个用户,下面是一个系统中/etc/shadow文件的实例:

user1:$6$DVLiBPZG$IrR9o0KpjtGQOj7I5WvgxQ.jMQ/Qzl3cJp4w0loUMZs4xQSQ8wkdIK7Sdkdk2 pMXeAfOYq9O07r/QuDdJ8f3c0:14748:0:99999:7:::

user2:$6$RR8pmW2aerqIkySA$PcMV7/Z37QFCe9hJrf1rlUjPTAOdmKsW/mfG40V343kxG1QNsWWI7 mdzl.50SCJpI4TQ/x4z4zsCoiA48EjAn1:14748:0:99999:7:::

user3:$6$oGG.739y$9ysybZ.VaTQ7dmR1zyz1vR8OiCUSCnzqnFd1PUYvedJMt.t6ElISwUohtOAlq AuT7.sPDjfy.bKCKar82mSp2.:14748:0:99999:7:::

user4:$6$AJerec5o$bwgJnQ0mTPzZMRCZYuivQVsWtD9mlh3.pWK2tR2pZPr4NzSlqk6hhFq3/zfWJ XQCNmXJTlZhubwwW9x6a8mtM0:14748:0:99999:7:::

user5:$6$o1DA6WOiXtme7Zsw$Lj6bXgI5c5Kg/GewGWYv.4pQ0fD/AnSYEjMvmXxuvzEK3IYhNYjnT IEnTPQr9pZIMzatBOyrC4FgBjYtR5R.n1:14749:0:99999:7:::

user6:$6$UUXC4WKX$mKyl/32n7xrU1ChPIJYs2gwYuEoObdkNsPcVhxR22xFBIspNjVIfRv4FgoDWs JIxy4TZ.ci70MeDvDMEeExXL0:14749:0:99999:7:::

步骤2:了解Linux下口令加密的原理

口令的加密是使用Linux系统的crypt函数。使用info或者man可以了解该命令的工作原理:Red Hat Linux9中使用的MD5算法,在Fedora 10中默认使用了SHA-512算法。它使用一个字符串作为salt(翻译成盐),长度是8到16个字节,将用户输入的口令key 进行加密。函数crypt(key,salt)的结果存入/etc/shadow文件的第2个域。这个域前面$6$salt$就是crypt函数的salt参数。当给用户设置口令时,salt是由系统随机选取的,因此即使是相同的key,因salt不同而第二个域的值也不同。

当用户在登录中输入自己的口令时,系统使用crypt进行同样的计算,如果所得的结果与/etc/shadow中存储的一致,则接受用户的登录。

步骤3:什么是弱口令:弱口令就是很容易被猜出来的口令,比如admin,guest,fllower,123456,beauty等等。在口令猜测或者破解时,一般不会穷尽所有字符的所有排列组合,一般都使用一个弱口令字典,字典中包含了常被用来作为口令的字符串。可以到网上查找口令字典。

步骤4:弱口令检查的原理

对每个用户而言,逐个将那些经常被用来作为口令的词,使用crypt做运算,如果运算结果与/etc/shadow所存储的加密后的口令相同,则口令被猜出来。

步骤5:用c语言编写实现口令检查的程序

关键部分的代码如下:

通过读取/etc/shadow的每一行,获得一个关于用户的数据结构,存放在pwd中。

char saltstr[21]; //存放种子,最多是20个字节

bzero(saltstr,sizeof(saltstr));//将变了全部清0

strncpy(saltstr,pwd->pw_passwd,20);

//将salt取出,最多20个字节,以其中$作为边界

cp = crypt (guess, saltstr); //调用crypt加密函数

if (strcmp (cp, pwd -> pw_passwd)) //与口令文件中存储的信息比较 return (0); //若不一致则返回

printf ("Warning! Password Problem: Guessed:\t%s\tpasswd: %s\n",

pwd -> pw_name, guess); //找到口令,显示口令

步骤6:编译程序

gcc –o passchk pass.c –lcrypt

其中-o选项指定编译后的可执行文件名,-l选项表示使用crypt函数库

步骤7:执行口令检查程序

./passchk –P myshadow –w words –p

其中passchk是可执行文件名,myshadow是口令文件,如果没有-P选项,则缺省使用Linux系统的/etc/shadow文件,words是存放弱口令的口令字典文件,选项-p表示将破解后的口令输出。

实验5

目的:练习Gtk+编程和gcc工具的使用。

需要的知识:C/C++语言的基本技能、第12章gcc的使用与开发、第13章Gtk+图形程序设计;

题目:日志的查询统计是系统管理的一项重要任务。Linux系统的日志以文本文件的形式存在,使用Gtk+编写一个图形界面的系统日志管理器(针对日志文件/var/log/messages*),它可以列出系统当前的日志个数(/var/log/message, /var/log/message.1, /var/log/message.2,……共多少个),对指定的日志文件可以查询哪些条目含有(include)指定信息(比如含有“succeed”的条目),哪些不含有(exclude)指定信息。

图5-1是一个示例程序的效果图:

●数字1为一个标签,显示日志文件的数量;

●显示succeed的单行文本框用来输入包含的指定信息;

●显示kernel的单行文本框用来输入不包含的指定信息;

●点击标签为“/var/log/messages”的按钮后,可以选择日志文件;

●点击标签为“View”的按钮后,可以根据输入的条件查看日志内容;

下面的多行文本框用来显示日志内容。

图5-1程序效果图

程序目录结构如图 5- 1所示:

图 5- 1程序目录结构图

其中:

● 文件main.cpp :为程序的主函数所在文件,通过对其它文件的调用启动和结束程序; ● 目录core :其中的文件分为三组,每一组的一个.h 文件和一个.cpp 文件共同定义了一个

类,其中的类名和对应的文件名相同。目录core 下定义的类实现了与界面无关的大部分功能。包括:检索日志文件个数、检索和根据条件过滤日志内容等作用。

● 目录widgets :包括两个文件,实现程序界面,并和目录core 下的类交互,利用图形界

面接收用户的输入和显示程序的运行结果。

实现步骤:

1) 根据目录结构创建目录和文件;

为了方便组织程序代码,可以将本实验的代码放到单独的目录下。因此,先建立一个目录作为项目的根目录,本例中根目录命名为:ViewLogGtk 。

? 在当前工作目录下,建立项目根目录:mkdir ViewLogGtk

? 进入根目录:cd ViewLogGtk

? 创建空白主程序文件:touch main.cpp

? 创建目录core :mkdir core

? 创建目录widgets :mkdir widgets

? 进入目录core :cd core

? 创建目录core 下的空白程序文件:

touch Util.h

touch Util.cpp

touch LogRecord.h

touch LogRecord.cpp

touch LogContent.h

touch LogContent.cpp

? 进入目录widgets :cd ../widgets

? 创建目录widgets 下的空白程序文件:

touch widget.h

touch widget.cpp

? 目录文件创建完毕。

当前目录

./ widgets/ main.cpp

core/

2)编辑并实现代码文件:这里仅给出关键部分的代码。

Util.h定义了类Util:

类Util中只定义了一个静态的方法:queryFileCount()用来查询指定目录下指定类型的文件个数。其中方法的第一个参数为指定查询文件的目录,第二个参数为指定文件名中包含的字符串。对于本例,第一参数固定的传入字符串“/var/log/”,第二个参数固定的传入字符串“message”,即查询目录/var/log/下文件名中包含message的文件。

)分别提供了利用char*类型和string类型形成日志行记录的两种方法。其中私有字符串成员contents储存日志记录的一行字符串,公有方法getContents()对外提供了一个获得字符串记录内容的接口。

类LogContent是检索日志文件、过滤日志行记录的主要场所。它利用setFilter(string,string),设置日志行记录中必须出现的关键字和必须不出现的关键字,利用set_file_name(string)设置日志文件的文件名称。检索关键字和日志文件设置完毕后,就可以利用fill_record()检索日志文件并填充日志行记录集合。填充完毕,可以使用方法

widget.h声明了与程序界面直接相关的变量和方法,其中的方法的实现部分即函数体在widget.cpp中。两个文件相结合,完成了程序界面的生成、界面控件元素和事件处理函数的

main.cpp功能代码都很简单,除了常规的初始化程序环境的功能外,唯一特殊的就是调用widget.h中定义的layout_ctrils()方法,形成并显示界面。

3)编译程序:

程序包含文件较多,可以采取分步编译的方式。由于代码中用到了类、string等概念,是C++风格的代码,因此,编译时采用g++命令,而不是gcc命令。g++命令和gcc命令使用方法参数信息都相同,g++用于C++风格代码而gcc常用于c风格的代码。

假设当前工作目录为项目的根目录即ViewLogGtk目录下,首先编译core目录下文件:?编译类Util:g++ -c core/Util.cpp

?编译类LogRecord:g++ -c core/LogRecord.cpp

?编译类LogContent:g++ -c core/LogContent.cpp

然后,编译main.cpp和widgets目录下的文件:

?g++ -c main.cpp -Icore -Iwidgets `pkg-config gtk+-2.0 --cflags --libs` 由于widges目录下的文件涉及到了Gtk+的界面部分,因此,在编译时需要加入`pkg-config ....`参数。

最后,将得到的目标文件编译为统一的可执行文件,并将可执行文件命名为ViewLog,命令:?g++ -c LogRecord.o LogContent.o Util.o main.o -o ViewLog -Icore -Iwidgets `pkg-config gtk+-2.0 --cflags --libs`

4)运行程序:

?./ViewLog

实验6

目的:练习Qt编程和qmake工具的使用。

需要的知识:C/C++语言的基本技能、第14章Qt图形程序设计;

题目:日志的查询统计是系统管理的一项重要任务。Linux系统的日志以文本文件的形式存在,使用Qt编写一个图形界面的系统日志管理器(针对日志文集/var/log/messages*),它可以列出系统当前的日志个数(/var/log/message, /var/log/message.1, /var/log/message.2,……共多少个),对指定日志文件可以查询哪些条目含有(include)指定信息(比如含有“succeed”的条目),哪些不含有(exclude)指定信息。

图6-1错误!未找到引用源。是一个示例程序的效果图:

●数字1是一个Qt的LCD数码显示控件;

●显示succeed的单行文本框用来输入包含的指定信息;

●显示kernel的单行文本框用来输入不包含的指定信息;

●点击标签为“/var/log/messages”的按钮后,可以选择日志文件;

●点击标签为“View”的按钮后,可以根据输入的条件查看日志内容;

●下面的多行文本框用来显示日志内容。

图6-1程序效果图

程序的目录结构如图6-2所示:

当前目录

./

widgets/

main.cpp

core/

图6-2程序目录结构图

其中:

●目录core及其中文件的功能和实验5相同;

●目录widgets及其中的文件功能和实验5相同,由于本实验不采用Gtk+界面工具包,

而是采用Qt界面工具包。因此,widgets目录下两个文件共同定义了一个类QtLogViewer,该类派生字QWidget类,完成图形界面构成、交互的功能;

●文件main.cpp:为程序的主函数所在文件,通过对QtLogViewer的调用,完成程序的启

动、交互和退出。

实现步骤:

1)根据目录结构创建目录和文件:

为了方便组织程序代码,可以将本实验的代码放到单独的目录下。因此,先建立一个目录作为项目的根目录,本例中根目录命名为:ViewLogQt。

?在当前工作目录下,建立项目根目录:mkdir ViewLogQt

?进入根目录:cd ViewLogQt

?创建空白主程序文件:touch main.cpp

?创建目录core:mkdir core

?创建目录widgets:mkdir widgets

?进入目录core:cd core

?创建目录core下的空白程序文件:

touch Util.h

touch Util.cpp

touch LogRecord.h

touch LogRecord.cpp

touch LogContent.h

touch LogContent.cpp

?进入目录widgets:cd ../widgets

?创建目录widgets下的空白程序文件:

touch QtLogViewer.h

touch QtLogViewer.cpp

?目录文件创建完毕。

2)编辑文件:

QtLogViewer派生自QWidget,集成了程序中所有的界面控件,并完成界面事件及其处理函数之间的关联。通过对LogContent的引用(引入log对象)组合进来了记录检索、过

main.cpp功能代码都很简单,除了常规的初始化程序环境的功能外,唯一特殊的就是将QtLogViewer设为程序的主界面,利用QtLogViewer形成并显示界面。

3)编译文件:

利用qmake功能编译程序,首先创建qmake的工程文件,这里将工程文件命名为

LogViewer.pro:

●生成项目文件,在项目根目录(ViewLogQt)下运行:

qmake -project -o LogViewer.pro

●生成Makefile:qmake

●生成程序:make

4)运行程序:

●./LogViewer

提示:由于目录core下的程序代码采用标准C++规范而没有用到Gtk+或者Qt的扩展功能。因此,可以重用实验5中core目录下的代码,即,本实验core目录下的代码和实验5中core 目录下的代码相同。

实验 Linux文件和目录操作

实验Linux文件和目录操作(1) 一、实验内容 练习Linux文件和目录操作命令。 二、实验目的 掌握文件与目录管理命令 掌握文件内容查阅命令 三、实验题目 1. 文件与目录管理 (1) 查看CentOS根目录下有哪些内容? (2) 进入/tmp目录,以自己的学号建一个目录,并进入该目录。 (3) 显示目前所在的目录。 (4) 在当前目录下,建立权限为741的目录test1,查看是否创建成功。 (5) 在目录test1下建立目录test2/teat3/test4。 (6) 进入test2,删除目录test3/test4。 (7) 将root用户家目录下的.bashrc复制到/tmp下,并更名为bashrc (8) 重复步骤6,要求在覆盖前询问是否覆盖。 (9) 复制目录/etc/下的内容到/tmp下。 (10) 在当前目录下建立文件aaa。 (11)查看该文件的权限、大小及时间 (12) 强制删除该文件。 (13) 将/tmp下的bashrc移到/tmp/test1/test2中。 (14) 将/test1目录及其下面包含的所有文件删除。 2. 文件内容查阅、权限与文件查找 (1) 使用cat命令加行号显示文件/etc/issue的内容。 (2) 反向显示/etc/issue中的内容。 (3) 用nl列出/etc/issue中的内容。 (4) 使用more命令查看文件/etc/man.config (5) 使用less命令前后翻看文件/etc/man.config中的内容 (6) 使用head命令查看文件/etc/man.config前20行 (7) 使用less命令查看文件/etc/man.config后5行 (8) 查看文件/etc/man.config前20行中后5行的内容 (9) 将/usr/bin/passwd中的内容使用ASCII方式输出 (10) 进入/tmp目录,将/root/.bashrc复制成bashrc,复制完全的属性,检查其日期 (11) 修改文件bashrc的时间为当前时间

Linux实验手册

Linux实验手册 补充实验步骤很详细Linux重于练习和动手 一Linux安装 注意磁盘分区 二:用户简单操作: 1、添加用户u1和u2,并分别设置口令 #useradd u1 passwd u1 #useradd u2 passwd u2 2、查看/etc/passwd及/etc/shadow文件内容,以确定两个用户以建立 #ls -l /etc/passwd #ls -l /etc/shadow 3、查看/home 目录下是否有u1和u2目录 #ls-l /home 4、以u1用户身份登录 #su – u1 三:文件及目录操作: 1、以u1用户身份登录后,显示当前目录位置 $pwd 2、在u1目录下创建两个目录,分别为dir1和dir2 $mkdir dir1 dir2 3、进入dir1目录用vi创建两个文件,文件名分别为test1、test2 $cd ./dir1 $vi test1 :wq! $vi test2 :wq! 4、分别用cat、less、more命令查看test1和test2文件内容 $cat test1 $more test2 $less test1 q 5、进入dir2目录用touch创建两个空文件test3、test4 $cd ../dir2 $touch test3 test4 6、将dir1目录下的test1文件复制到/tmp目录下 $cd ../dir1 $cp test1 /tmp 7、查看/tmp目录下是否有test1文件 $ls -l /tmp 8、将dir1目录下的test2移动到dir2目录下 $cd ../dir2 $mv test2 ../dir2 9、查看dir1目录下的文件 $cd ../dir1 $ls –l 10、查看dir2目录下的文件

LINUX实验报告

实验报告 ( 2014/ 2015 学年第一学期) 课程名称操作系统A 实验名称文件系统 实验时间2014 年12 月8 日指导单位计算机学院计算机科学与技术系 指导教师徐鹤 学生姓名王生荣班级学号B12040809 学院(系) 计算机学院专业软件工程

实验名称文件系统指导教师徐鹤 实验类型设计实验学时 2 实验时间2014.12.08 一、实验目的和要求 1. 学习LINUX系统下对文件进行操作的各种命令和图形化界面的使用方法。 2. 深入学习和掌握文件管理系统的基本原理和LINUX等操作系统下常用的系统调用,编写一个使用系统调用的例程。 3.实现一个文本文件的某信息的插入和删除 4.实现一个记录文件的某记录的插入和删除 二、实验环境(实验设备) Windows XP + VMWare + RedHat Linux 8

三、实验过程描述与结果分析 1. 目录/proc下与系统相关的文件和目录 (1) /proc/$pid/fd:这是一个目录,该进程($PID号码进程)每个打开的文件在该目录下有一个对应的文件。 例如:#ls /proc/851/fd 0 1 2 255 这表示,851号进程目前正在使用(已经打开的)文件有4个,它们的描述符分别是0、1、2、255。其中,0、1、2 依次分别是进程的标准输入、标准输出和标准错误输出设备。 (2)/proc/filesystems:该文件记录了可用的文件系统类型。 (3)/proc/mounts:该记录了当前被安装的文件系统信息 例如:#cat /proc/mount (4)/proc/$pid/maps:该文件记录了进程的映射内存区信息。 例如:#cat /proc/851/maps 2.常用命令讲解 ls 命令 用来查看用户有执行权限的任意目录中的文件列表,该命令有许多有趣的选项。例如: $ ls -liah * 22684 -rw-r--r-- 1 bluher users 952 Dec 28 18:43 .profile

linux驱动开发的经典书籍

linux驱动开发的经典书籍 结构、操作系统、体系结构、编译原理、计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式 系统编程推荐《高级unix环境编程》,黑话叫APUE 还有《unix网络编程》 这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好 内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发 参考书如下《linux device drivers》,黑话叫ldd 《linux kernel development》,黑话叫lkd 《understading the linux kernel》,黑话叫utlk 《linux源码情景分析》 这四本书为搞内核的必读书籍 最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了 学习linux/unix编程方法的建议 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用

1.linux基础及C高级实验手册

嵌入式学院实验手册linux基础及C高级实验 嵌入式学院教材开发部编著 (内部资料,请勿外传) 嵌入式学院(2014)版权所有V3.0

Linux基础实验 实验一Linux常用命令的使用 【实验内容】 本课程要求学员对Linux基本操作命令有一定了解和掌握。下面列出的一些常用命令作为参考。最好针对每一个都能亲自练习、掌握。 【实验平台】 PC机 【实验步骤】 1.ls 命令 ---------------------------------------------------------------------- ls 以默认方式显示当前目录文件列表 ls –a 显示所有文件包括隐藏文件 ls –l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 ---------------------------------------------------------------------- 2.cd 命令 cd dir 切换到当前目录下的dir目录 cd .. 切换到到上一级目录 cd ~ 切换到用户目录,比如是root用户,则切换到/root下 ---------------------------------------------------------------------- 3.rm 命令 rm file 删除某一个文件 rm -rf dir 删除当前目录下叫dir的整个目录 ---------------------------------------------------------------------- 4.mv命令 mv source target 将文件或者目录source更名为target ---------------------------------------------------------------------- 5.echo 命令 echo message 显示一串字符 ---------------------------------------------------------------------- 6.cat 命令 cat file 显示文件的内容,和DOS的type相同 cat file | more 显示文件的内容并传输到more程序实现分页显示,使用命---------------------------------------------------------------------- 7.du命令 du 计算当前目录的容量

2《Linux基础》实验报告 基本配置Linux

实验序号: 2 《Linux基础》 实验报告 实验名称:基本配置Linux操作系统 姓名: 学院:计算机学院 专业: 班级: 学号: 指导教师: 实验地址:N6-113 实验日期:2017.3.7

说明 一.排版要求 1.实验报告“文件名”按模板要求填写。 2.一级标题:顶格排版。汉字用宋体,阿拉伯数字用Times New Roman字 体,四号字体,加粗。 3.二级标题:顶格排版。汉字用宋体,阿拉伯数字用Times New Roman字 体,小四号字体,加粗。 4.三级标题:顶格排版。汉字用宋体,阿拉伯数字用Times New Roman字 体,五号字体。 5.正文:每段缩进量:2个汉字。两端对齐;汉字用宋体,阿拉伯数字用 Times New Roman字体,五号字体。 6.图形要求 (1)在正文中要有引用。 (2)要有图名,图名位于图的下方,汉字用宋体,阿拉伯数字用Times New Roman字体,五号字体。 (3)图和图名“居中”。 7.表格要求 (1)在正文中要有引用。 (2)要有表名,表名位于表的上方,汉字用宋体,阿拉伯数字用Times New Roman字体,五号字体。 (3)表和表名“居中”。 二.注意事项 1.复制、拷贝、抄袭者取消成绩。 2.没有安实验报告排版要求者不及格。

实验2基本配置Linux操作系统实验 【实验目的】 1.。。。。 2.。。。。 3.。。。。 4.思考: (1)Linux默认的系统超级管理员帐户是什么? (2)Linux的操作系统引导器是什么?它有哪几种的操作界面? (3)RHEL的支持哪几种X-Window图形管理器?默认是使用哪一种?(4)RHEL支持哪几种Shell?默认是使用哪一种? 【实验原理】 1.。。。 。。。 2.。。。 。。。 (1)。。。 。。。 (2)。。。 。。。 3.。。 【实验环境】 1.实验配置 本实验所需的软硬件配置如表1所示。 表1 实验配置 本实验的环境如图1所示。

Linux网络服务课后实验手册

第一章Linux基本网络配置 实验二:构建DHCP及DHCP中继服务器 拓扑图: 需求描述: 1.在DHCP中继服务器上配置中继服务; 2.在192.168.1.0/24网段中构建一台DHCP服务器,IP地址为192.168.1.2,可以为192.168.1.0/24、192.168.2.0/24、192.168. 3.0/24网段中的客户机自动分配IP地址等网络参数; 3.为各客户机动态分配IP地址,默认租约时间设为21600秒,最大租约时间设为43200秒; 4.为各客户机设置使用的DNS服务器地址为202.106.0.20,202.106.148.1; 5.对应于3个物理网段,用于动态分配的IP地址范围分别为: 192.168.1.20--192.168.1.200;192.168.2.20--192.168.2.200;192.168.3.20--192.168.3.200; 6.各网段中客户机的默认网关地址使用DHCP中继服务器在该网段内的接口IP地址

实验步骤: DHCP 服务器上1.安装软件包 2.修改配置文件 3.配置ip 地址及设置默认网关 4. 启动服务

DHCP 中继服务器上1.安装软件包 2.修改配置文件 3.配置IP 地址 4.启动服务 客户机上验证:使用XP 虚拟机即可。

第二章构建文件服务器 实验一:构建Samba文件共享服务器 需求描述: 1.在/var/share/目录下创建子目录public training devel public目录用户存放公共数据,如公司的规章制度,员工手册等; training目录用于存放公司的技术培训资料; devel目录用于存放项目开发数据 2.将/var/share/public/目录共享为“public”,所有员工可以匿名访问,但是只能读取文件,不能写入 3.将/var/share/training/目录共享为“peixun”,只允许管理员admin以及技术部的员工只读访问 4.将/var/share/devel/目录共享为“kaifa”,技术部的员工都可以读取该目录中的文件,但是只有管理员admin和benet项目组的员工有写入权限 实验步骤: 1.安装软件包 2. 创建目录以及相关用户、组

linux操作系统实验报告要点

LINUX操作系统实验报告 姓名 班级学号 指导教师 2011 年05月16 日 实验一在LINUX下获取帮助、Shell实用功能 实验目的: 1、掌握字符界面下关机及重启的命令。 2、掌握LINUX下获取帮助信息的命令:man、help。 3、掌握LINUX中Shell的实用功能,命令行自动补全,命令历史记录,命令的排列、替

换与别名,管道及输入输出重定向。 实验内容: 1、使用shutdown命令设定在30分钟之后关闭计算机。 2、使用命令“cat /etc/cron.daliy”设置为别名named,然后再取消别名。 3、使用echo命令和输出重定向创建文本文件/root/nn,内容是hello,然后再使用追加重定向输入内容为word。 4、使用管道方式分页显示/var目录下的内容。 5、使用cat显示文件/etc/passwd和/etc/shadow,只有正确显示第一个文件时才显示第二个文件。 实验步骤及结果: 1.用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入 命令Shutdown -h 30 2、使用命令alias将/etc/cron.daliy文件设置为别名named,左边是要设置的名称右边是要更改的文件。查看目录下的内容,只要在终端输入命令即可。取消更改的名称用命令unalias 命令:在命令后输入要取消的名称,再输入名称。 3.输入命令将文件内容HELLO重定向创建文本文件/root/nn,然后用然后再使用追加重定向输入内容为word。步骤与输入内容HELLO一样,然后用命令显示文件的全部内容。 4.使用命令ls /etc显示/etc目录下的内容,命令是分页显示。“|”是管道符号,它可以将多个命令输出信息当作某个命令的输入。

linux驱动程序的编写

linux驱动程序的编写 一、实验目的 1.掌握linux驱动程序的编写方法 2.掌握驱动程序动态模块的调试方法 3.掌握驱动程序填加到内核的方法 二、实验内容 1. 学习linux驱动程序的编写流程 2. 学习驱动程序动态模块的调试方法 3. 学习驱动程序填加到内核的流程 三、实验设备 PentiumII以上的PC机,LINUX操作系统,EL-ARM860实验箱 四、linux的驱动程序的编写 嵌入式应用对成本和实时性比较敏感,而对linux的应用主要体现在对硬件的驱动程序的编写和上层应用程序的开发上。 嵌入式linux驱动程序的基本结构和标准Linux的结构基本一致,也支持模块化模式,所以,大部分驱动程序编成模块化形式,而且,要求可以在不同的体系结构上安装。linux是可以支持模块化模式的,但由于嵌入式应用是针对具体的应用,所以,一般不采用该模式,而是把驱动程序直接编译进内核之中。但是这种模式是调试驱动模块的极佳方法。 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。同时,设备驱动程序是内核的一部分,它完成以下的功能:对设备初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。在linux操作系统下有字符设备和块设备,网络设备三类主要的设备文件类型。 字符设备和块设备的主要区别是:在对字符设备发出读写请求时,实际的硬件I/O一般就紧接着发生了;块设备利用一块系统内存作为缓冲区,当用户进程对设备请求满足用户要求时,就返回请求的数据。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。 1 字符设备驱动结构 Linux字符设备驱动的关键数据结构是cdev和file_operations结构体。

linux实验报告

实验一 实验名称:Linux 基本命令的使用 实验时间:2学时 实验目的:熟练使用Linux字符界面、窗口系统的常用命令。 实验内容 (一)Linux操作基础 1.重新启动linux或关机(poweroff,shutdown,reboot,init 0,init 6) 2.显示系统信息(uname),显示系统日期与时间,查看2014年日历(date,cal) ①uname:查看系统与内核相关信息 uname -asrmpi 参数: -a :所有系统相关的信息; -s: 系统内核名称; -r: 内核的版本; -m:本系统的硬件名称,如i686或x86_64; -p: CPU的类型,与-m类似,只是显示的是CPU的类型; -i :硬件的平台(ix86). ②date:显示日期的命令 ③cal:显示日历 单独cal:列出当前月份的日历 cal 2014:列出2014年的日历 cal 5 2014:列出2014年五月的目录 3.使用帮助命令(man,help) ①man:是manual(操作说明)的简写,是在线帮助系统 man后跟某个命令就会详细说明此命令,例如:man man就会详细说明man 这个命令的用法; ②help:也是帮助命令,一般会在命令后,例如:cd --help 就会列出cd命令的使用说明。 4.查看当前登陆用户列表(who),显示当前用户(whoami) ①who:显示目前已登录在系统上面的用户信息; ②whoami:查询当前系统账户 5.建立一个新用户mytest,设定密码(useradd,passwd) ①useradd mytest(建立新用户mytest);

Linux驱动工程师成长之路

本人此刻还不是什么驱动工程师,连入门都谈不上,但我坚信在未来的3-5年我肯定能成为我想像中的人,因为我马上就要进入这一行工作了。写下这个日志来记录我是怎么最后成为我想像中的人才的,呵呵。 《Linux驱动工程师》这个东西是我在大二的时候看到有一篇讲如何学习嵌入式的,点击这里下载PDF,里面讲到嵌入式分为四层:硬件,驱动,系统,应用程序;还说linux驱动最难然后工资也最高就冲着他这句话我就决定我大学毕业的时候要去做这个linux驱动工程师,随后我就先后买了51单片机,ARM7,ARM9还有一大堆的视频教程准备来进行学习。我还跟我旁边那个哈工大哥们说:“我们学校像我这样的人很少,你们学校呢?”他说:“太少了,不过我们学校都是做这种板子卖的人比较多!”。行,你们牛!即使是买了这些东西,从大二到现在都快毕业了但感觉还是没有入门。回想一下我都学过什么啊:1:自己在ARM9上写bootloader(主要锻炼了三方面的知识:C语言应该写了有近万行的代码,ARM9的外设的基本操作方法如UART,LCD,TOUCH,SD,USB,ETHERNET...,makefile);2:移植和学习linux驱动。下面我说一下我学习Linux驱动的一个思路这也是我在面试的时候自我介绍中最重要的部分;1:硬件知识学习Linux驱动首先得了解这个驱动对应的硬件的一些基本原理和操作方法比如LCD你得了解它的场同步,行同步,像素时钟,一个像素的表示模式,还有就是这个LCD是怎么把图像显示在屏幕上的。如果是USB,SD卡就得了解相关协议。可以通过spec(协议)、datasheet来了解,这就是传说中的Linux驱动开发三件宝之二,还有一个就是linux相关源码。2:了解linux驱动框架linux下的每一类驱动差不多都是一个比较完善的子系统,比如FLASH的驱动它就属于MTD子系统从上到下分为四层:设备节点层,设备层,原始设备层,最下面的与具体硬件相关的硬件驱动层,通常要我们自己来实现就是最下面这个与具体硬件相关那部分代码。3:了解这个驱动的数据流。这个过程与第二个过程紧密相关,如果了解了驱动的框架差不多这个过程也算了解了。比如flash.在/dev/目录下有对应flash的字符设备文件和块设备文件,用户对这些文件进行读、写、ioctl操作,其间通过层层的函数调用最终将调用到最下面的硬件驱动层对硬件进行操作。了解这个过程我相信在调试驱动的时候是很有帮助。3:分析与硬件相关通常需要我们实现的那部分源代码。4:三板子上将驱动调试出来。每次调试都会出问题,但我买的板子提供的资料比较全调试过程中遇到的问题都比较浅显,即使是浅显的问题也要把它记录下来。(这个是我上次在华为面试的时候,那个人问我你调试驱动遇到过什么问题吗?你是如何解决的。当时我学习还没有到调试驱动这一步,所以那次面试也惨败收场)。 好像说了这么多,还没有进入正题《工作的选择》。在年前去了龙芯,实习2.8K,转正3.5k,环境还是不错,经理很好,头儿也很帅都是中科院的硕士。不过去了两周我就没去了身边的人都不太理解,我也一度有过后悔的时候,从龙芯出来应该是1月6号,也就是从那个时候开始我就没有再找工作,转而学习linux驱动。一直到上周日。上周日的晚上我就开始投简历一开始要找linux驱动,在智联里面输入linux驱动出来500来个职位,点开一看没有一个自己符合要求的,差不多都要3-5年经验本科,有时候好不容易有个实习的关键字在里面,一看要求硕士,严重打击了我的信心,哎不管了随便投,最后又投了一下嵌入式关键字的职位。最后就瞎申请,看看职位要求差不多就申请。周一来了,这周一共来了6个面试,创下了我求职以来的历史新高。周一下午面了一家感觉还不错不过到现在也没有给我一个通知,估计当时我要了4500把他给要跑了,这家是做测量的不是Linux驱动,差不多是把ARM当单片机用。周二上午一家也是要招linux驱动面了估计不到二分钟,他

Linux实验

实验一Linux的认识 一、实验的目的要求 通过实验,使学生初步熟悉Linux环境,了解Linux的目录结构和文件,了解Linux命令的特点,能够完成登录和密码修改工作。 二、实验内容 1、虚拟机的基本操作及应用 虚拟机的启动、关闭,虚拟机的基本管理 2、系统登录和用户管理 1)用用户名root、密码linux登录系统 登录系统后修改自己的密码。修改密码用命令passwd。 2)用“a学号”作为用户名,建立一个用户,并设置密码 建立用户用命令adduser 3)用vi查看/etc/passwd和/etc/shadow文件,读懂各域的意义 3、用列目录命令,查看系统的文件。 ls –l 列当前目录下的文件 cd <路径名> 修改当前的目录 4、退出系统 用户不再使用系统,需要退出,否则别人可能利用你的工作环境进入系统,对信息进行破坏。 退出系统用 logout 或 exit 5、关闭系统 和Windows系统一样,Linux必须用关机命令关闭系统。 关机:shutdown –h now 重新启动用:shutdown –r now 四、操作与思考 1、从你上机的体验中,说明为什么说Linux是多用户操作系统。 2、logout(或exit)并不是关闭Linux服务器,关闭服务器的命令是“shutdown –h now”。非root用户能执行该命令码?想想为什么。

实验二文件操作命令 一、实验的目的要求 通过实验,使学生掌握Linux的文件和目录的安全机制,并能正确使用安全机制保护自己的文件,能熟练使用常用的文件操作命令。 二、常用命令 df 查看已安装文件系统的使用情况 mount 安装文件系统 umount 拆卸文件系统 ls 列文件目录 cd 改变当前目录 mkdir 创建目录 cat 显示文件内容 cp 拷贝文件 rm 删除文件 mv 移动文件 chown 改变文件属主 chmod 改变文件权限 三、实验内容 0、用df和mount查看已安装文件系统的情况 1、用ls和cd 命令查看系统各目录中的文件及属性 2、用cat命令查看/etc/passwd等文件的内容。 3、建立如下的目录结构: | |-------etc | |-----user | | | |-----system | |--------bin | |-----default | |--------sbin | |--------usr 4、把/bin下的文件ls拷贝到bin/default下,并把权限该成同组用户具有所有权限,其他用户没有任何权限。 5、把/etc/passwd拷贝到bin目录下,在把它移动到etc/system中。 6、把/etc扩张名为conf的文件拷贝到etc目录下,并删除已l开头的文件。 7、综合运用所学命令。 四、操作与思考 1、你能在/bin下建立目录吗?你能删除/bin下的文件吗?为什么? 2、你能进入其他用户的目录吗?为什么?

Linux常用命令实验报告

实验二 姓名:陈辉龙学号:201407010201 班级:14计科(1)一.实验目的: 掌握Linux常见命令,为今后的实验打下良好的基础。 二.实验内容 1.新建用户为chenhuilong,配置密码为passwd: 2.切换到chenhuilong用户,并在/home/chenhuilong目录下新建文件夹dir: 3.在文件夹dir下新建文件hello(内容为"printf hello world!"),并将其拷贝至/home/user目录: 4.统计/home/user目录下文件的个数,包括子目录里的首字符为-的普通文件:

5.统计/home下目录的个数,包括子目录里的目录: 6.显示/home/user目录下名为hello的文件的行数、字数以及字符数(使用输入重定向): 7.将上步的结果输出重定向到名为cnt_hello的文件: 8.删除/home/user目录下的hello文件: 9.进入/home/user/dir文件夹,将hello文件属性变为-rwxrw-r--(使用符号标记方式),并为hello文件在/home/user目录下建立软链接,链接文件名为link_hello:

10.查看/home/user/dir/hello文件的详细信息: 11.切换至根目录下查找hello文件: 12.打包home/user/dir/hello文件,并进行压缩,然后再进行解压缩解包: 13.退出user用户,删除/home/user文件夹:

14.将文件夹/home的所有者改为user用户,并删除user用户: 三.实验总结: 本实验旨在熟悉Unix的常用命令,实验较简单,操作起来还算顺利,做了一遍感觉还不是很熟悉,因此做了两遍,第二遍就很得心顺手。通过这次实验,熟悉了一些常用的命令操作,为以后的学习打下坚实的基础,提高自己的动手能力。

从零开始搭建Linux驱动开发环境

参考: 韦东山视频第10课第一节内核启动流程分析之编译体验 第11课第三节构建根文件系统之busybox 第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》 其他《linux设备驱动程序》第三版 平台: JZ2440、mini2440或TQ2440 交叉网线和miniUSB PC机(windows系统和Vmware下的ubuntu12.04) 一、交叉编译环境的选型 具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux- gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux- gcc中的。即如果电脑ubuntu中的交叉编译环境为arm-linux-

二、主机、开发板和虚拟机要三者互通 w IP v2.0》一文中有详细的操作步骤,不再赘述。 linux 2.6.22.6_jz2440.patch组合而来,具体操作: 1. 解压缩内核和其补丁包 tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核 tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁

cd linux_2.6.22.6 patch –p1 < ../linux-2.6.22.6_jz2440.patch 3. 配置 在内核目录下执行make 2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。 4. 生成uImage make uImage 四、移植busybox 在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。 1)配置busybox 解压busybox-1.7.0,然后进入该目录,使用make menuconfig进行配置。这里我们这配置两项 一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。 ->Busybox Settings ->Build Options

linux系统管理[实验手册]

《UNIX/LINUX系统管理I》课程设计任务书 目录 《UNIX/LINUX系统管理I》课程设计任务书 (1) 3.1 解决grub引导过程故障 (3) 3.2 解决系统网络接口卡无法激活故障 (4) 3.3 解决PUTTY窗口的登陆问题 (5) 3.4 解决PUTTY窗口的乱码问题 (6) 3.5 解决软件yum安装故障 (7) 3.6 解决X-WINDOWS启动故障 (8) 3.7 解决核功能问题 (8) 3.8 完成系统IO性能优化任务, (10) 3.9 完成系统监控任务, (11) 3.10 完成自动维护任务, (12) 3.11 解决资源配给问题, (13) 3.12 完成性能分析任务 (14)

第一部分、课程情况 课程名称:UNIX/LINUX系统管理I 课程代码:NW3005 学分/学时:2学分/34学时 面向专业方向:网络设计与管理方向、网络安全技术方向 任务书编写人:安明忠 第二部分、学习目的 UNIX/LINUX系统管理I的课程平台是rhel6系列,主要学习故障分析及解决能力,是通过学习,增强学生对系统工作原理的认知,掌握基本的管理系统能力。 课程设计中考虑了LINUX/UNIX系统日常维护和管理中的若干项基本工作容,组织成7个课堂实验任务,5个可选任务。每个任务都是基于实验主机的真实故障或优化管理来设计,要求学生通过独立的思考和操作,灵活使用校园网和主机在线手册等资源,排除这些系统故障或按照要求调整优化系统性能。 第三部分、本学期的学习容和要求

3.1解决grub引导过程故障 3.1.1任务描述 主机已经安装完成的RHEL6 系统启动失败,初步估计是GRUB配置参数错误或系统引导文件丢失,采用手工引导GRUB,查找故障确切原因并修复。 实验环境:VMWARE平台RHEL6基本系统(包含GRUB数据错误) 教师指导:搜索引擎工具GRUB基本介绍PC系统启动过程知识 任务要求:两课时完成,通过grub引导命令修复GRUB故障,系统可以正常启动。按照要求完成报告容。 3.1.2任务分析过程 1.主要现象描述:

实验一 Linux基本操作实验报告

实验一Linux基本操作 一.实验目的: 1. 二.实验环境: 虚拟机+Red Hat Enterprise Server 5.0 三.实验内容: 根据以下的文字提示,调用相应的命令来完成,记录相应的运行结果。一)用户和组基本操作 1.添加一个user01用户,家目录为/home/sub2,并设置密码 2.添加一个group1 组 3.将user01用户添加到group1组中 4.修改group1组名称为group2 5.修改user01的家目录为/home/user01 6.判断/etc/password这个目录是否包含user01这个用户 7.修改user01的shell为/bin/tcsh 8.添加一个group3组,把user01和root用户都添加到该组

https://www.wendangku.net/doc/157697618.html,er01用户从group2组切换到group3组 10.设置user01的密码在2012-5-20过期 11.把/home/user01目录所属的组修改为group3 12.删除user01帐号 13.查看内核版本号 二)进程管理 1.运行cat命令:vi test,输入若干字符如this is a example,挂起vi进程 2.显示当前所有作业 3.将vi进程调度到前台运行

4.将vi进程调度到后台并分别用kill/pkill/killall命令结束该该进程。 三)磁盘管理 1.通过fdisk 将为硬盘增加一个分区(主分区或者逻辑分区)。 2.并格式化ext3系统,

3.检测分区是否有坏道 4.检测分区的完整性 5.加载分区到/mnt目录(或者其他分区)下,并拷贝一些文件到该目录下 6.(选做)为test用户设置磁盘配额(软限制和硬限制参数自行设定) 7.退出/mnt目录后卸载该分区 8.用du查看/usr目录的大小

实验8 Linux文件操作

linux文件操作篇 open(打开文件) 表头文件 #include #include #include 定义函数int open( const char * pathname, int flags); int open( const char * pathname,int flags, mode_t mode); 函数说明参数pathname 指向欲打开的文件路径字符串。下列是参数flags 所能使用的旗标: O_RDONLY 以只读方式打开文件 O_WRONLY 以只写方式打开文件 O_RDWR 以可读写方式打开文件。上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标利用OR(|)运算符组合。 O_CREAT若欲打开的文件不存在则自动建立该文件。 O_EXCL 如果O_CREAT 也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文件,否则将导致打开文件错误。此外,若O_CREAT与O_EXCL同时设置,并且欲打开的文件为符号连接,则会打开文件失败。 O_NOCTTY 如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。 O_TRUNC 若文件存在并且以可写的方式打开时,此旗标会令文件长度清为0,而原来存于该文件的资料也会消失。 O_APPEND 当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件后面。 O_NONBLOCK 以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。 O_NDELAY 同O_NONBLOCK。 O_SYNC 以同步的方式打开文件。 O_NOFOLLOW 如果参数pathname 所指的文件为一符号连接,则会令打开文件失败。 O_DIRECTORY 如果参数pathname 所指的文件并非为一目录,则会令打开文件失败。 此为Linux2.2以后特有的旗标,以避免一些系统安全问题。参数mode 则有下列数种组合,只有在建立新文件时才会生效,此外真正建文件时的权限会受到umask值所影响,因此该文件权限应该为(mode-umaks)。 S_IRWXU00700 权限,代表该文件所有者具有可读、可写及可执行的权限。

Linux实验报告

Linux实验 一、实验目的 1. 了解Linux基本使用方法; 2. 掌握Linux基本设置方式; 3. 掌握Linux基本操作命令使用。 二、内容要求 1. 了解进程管理、文件管理与内存管理 2.掌握系统设置文件与命令 3. 熟练使用系统操作与维护命令 4. 熟练使用系统操作与维护命令 三、实验原理 Linux 系统常用命令格式: command [option] [argument1] [argument2] ... 其中option以“-”开始,多个option可用一个“-”连起来,如 “ls-l -a”与“ls-la”的效果是一样的。根据命令的不同,参数 分为可选的或必须的;所有的命令从标准输入接受输入,输出结果显示在 标准输出,而错误信息则显示在标准错误输出设备。可使用重定向功能对这 些设备进行重定向。如: ls –lh > a.txt 命令在正常执行结果后返回一个0值,如果命令出错可未完全完成,则返回 一个非零值(在shell中可用变量$?查看)。在shell script中可用此返 回值作为控制逻辑的一部分。 DSL命令操作: 帮助命令: man 获取相关命令的帮助信息 例如:man dir 可以获取关于dir的使用信息。 info 获取相关命令的详细使用方法 例如:info info 可以获取如何使用info的详细信息。 基本操作: echo 显示字符串 pwd 显示当前工作目录 ls 查看当前文件夹内容 ls -a 查看当前文件夹内容(包括隐藏项) ls -l 查看当前文件夹内容(详细) ls / 查看根目录内容 cd / 移动到根目录

pwd 显示当前工作目录 ls -al 查看根目录文件夹内容(详细情况并包括隐藏项) cd /home/dsl 回到“家”目录 pwd 显示当前工作目录 df -h 显示剩余磁盘空间,参数“-h”表示适合人读取(human readable) du -h 显示文件夹(及子文件夹)所占空间 mkdir fd0 在当前目录下创建目录fd0 touch a.txt 创建一个空文件a.txt ls / -lh > a.txt 利用重定向功能将根目录中的内容写入a.txt。 cat a.txt 显示a.txt内容 wc a.txt 显示a.txt的行数,字数与字节数 find / -name *conf 在根目录下(包括子目录)查找以conf结尾的文件 sudo mount /dev/fd0 fd0 将软盘镜像挂载到目录fd0上 cd fd0 进入软盘镜像所挂载的目录 ls -lh 查看软盘镜像中的文件 cd .. “..”表示进入上一层目录 gzip a.txt 使用gzip压缩a.txt ls -lh 查看当前文件夹 sudo cp a.txt.gz fd0/ 将a.txt复制到fd0目录下,即将其复制到软盘镜像中 sudo mv fd0/a.txt.gz ./ 将a.txt移动到当前目录下,“.”表示当前目录 sudo umount /dev/fd0 将软盘镜像卸载 ls fd0 显示fd0 目录内容 gzip -d a.txt.gz 解压缩a.txt.gz ls -lh 查看当前文件夹 权限管理: 假设当前处于/home/dsl 目录下,且有a.txt(文件)与fd0(目录),当前用户名为dsl。 sudo cat /etc/passwd 用户 sudo cat /etc/shadow 密码 sudo cat /etc/group 组 users 查看当前登录用户 sudo chmod -x fd0 更改文件夹权限 ls fd0 fd0不能被执行,则意味着无法打开! sudo chmod +x fd0 更改文件夹权限 ls fd0 fd0能被打开 sudo chown root fd0 更改目录fd0的所有者 ls -lh 注意看fd0目录的属性 sudo chown dsl:root fd0 更改目录fd0的所有者为dsl,所属组为root ls -lh 注意看fd0目录的属性 chmod a-r a.txt 现在a.txt不具有“读”权限,不能被读取

linux基础实验报告含代码

Linux基础实验

目录 实验一 (3) 实验二 (4) 实验三 (6) 实验四 (9) 实验五 (11) 实验六 (14) 实验七 (16)

实验一螺旋矩阵 一、实验目的 1.熟悉linux下c程序编写。 2.掌握Makefile编写方法。 二、实验环境和工具 Red Hat Linux 三、实验流程 1.编写螺旋矩阵程序 2.编写Makefile文件 四、实验结果 五、实验心得 通过这次实验,我熟悉了linux下c语言程序的编写,掌握了vi的一些常用操作,学会了使用gcc命令和makefile文件两种方法编译程序。同时也使我熟悉了linux里常用命令的使 用,还有,学会了挂载U盘的方法,可以很方便的往linux里传送文件。 六、关键代码 Makefile 文件 CC=gcc EXEC=juzhen OBJS=juzhen.o all:$(EXEC) $(EXEC):$(OBJS) $(CC) -o $@ $(OBJS) clean: -rm -f $(EXEC) $(OBJS)

实验二添加、删除用户 一、实验目的 1.设计一个shell程序,分组批量添加用户。 2.再设计一个批量删除用户的shell程序。 二、实验环境和工具 Red Hat Linux 三、实验流程 1.编写shell程序 2.修改文件权限 chmod +x addusers 3.运行脚本 四、实验结果 添加用户: 删除用户:

五、实验心得 通过本次实验,我了解了shell脚本编程的方法和其语法规则。掌握了使用shell脚本程序添加、删除用户的方法。需要注意的是:shell脚本直接用vi编写,要特别注意空格。 六、关键代码 添加用户: 删除用户:

相关文档
相关文档 最新文档