当前位置:文档之家› UNIX实验汇总

UNIX实验汇总

UNIX实验汇总
UNIX实验汇总

实验1:用户的登录与退出、IO重定向与简单文件操作

1、实验目的:

(1)、掌握用户的登录与退出的方法;

(2)、掌握用户退出系统的意义和必要性;

(3)、掌握shell I/O重定向,参数替换、命令替换、变量替换和三种引号机制。

2、实现设备

一台装有Linux系统的服务器,每人一台PC机前是Windows操作系统。本实验采取Windows系统安装Linux系统虚拟机的办法进行。

3、实验方法与注意事项

请不要在系统内做对系统或对其他用户不安全的事情。

要求每个同学登录后系统后,要在自己的家目录内用mkdir命令以自己的学号或名字创建一个子目录。以后所有工作都要在自己的目录内进行。

由于我们以root用户工作的,权限很大,操作时要谨慎从事,否则会造成不良后果。用户要按通常实验要认真书写实验报告。

4、过程为:

(1)首先获取实验指导书文档,认真阅读其内容,然后按指导书的要求进行操作。

(2)在桌面或开始菜单启动虚拟机管理软件VMWare;

(3)在VMWare控制下启动Linux;

(4)在图形界面以root用户登录,密码为123456。

(5)登录后,新建或启动一个终端。

(6)先用ls命令按不同的格式列样本目录的内容;必要时可用man命令查阅ls命令的用法。

(7)按自己的名字创建工作目录。方法为:

mkdir 目录名

比如mkdir zhangsan

(8)使用cd命令将工作目录改变为刚创建的目录。方法为:

cd 目录名

比如:cd zhangsan

(9)使用cp命令将/etc/rc.d/init.d目录的内容复制到自己的工作目录。方法为:

cp /etc/rc.d/init.d/* .

(10)shell I/O重定向,参数替换、命令替换、变量替换和三种引号机制。

(11)使用学过的文件管理命令(ls,cp,mv,rm,cat,more,less,pr,wc等)对这些文件进行操作,必要时可用man命令查看这些命令的用法;

(12)采用某种方法(比如管道、过滤等)阅读/etc/passwd和/etc/group文件确定自己的uid和gid,再用id命令查看自己的uid和gid,并对两个结果进行比较。

(13)使用vi你刚复制来的文件,比如atd、halt等,使用vi的各种命令和方法对该文件进行编辑修改等。比如:

vi atd

vi halt

vi atd halt

(14)实验完毕后,要系统中签退。

(15)按要求,正常关闭系统。

5、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法,(输出较多者可精简)。

实验2:UnixLinux权限和文件管理命令

1、实验目的:

Unix/Linux权限和文件管理命令

2、实现设备

一台装有Linux系统的服务器或计算机,也可是安装有虚拟环境Linux系统Windows操作系统。

3、实验方法与注意事项

1)用户名:root 密码:123456

2)由于是以root用户工作的,权力很大,请不要在系统内做对系统或对其他用户不安全的事情。

3)要求每个同学登录后系统后,要在自己的家目录内容以自己(汉语拼音)名字,使用mkdir命令创建一个子目录。以后所有工作都要在自己的目录内进行。

4)要按认真书写实验报告。

用户可使用命令:

cp /etc/rc.d/init.d/* .

将为自己准备一些实验用样本文件。

大致过程如下:

(l)先用ls命令按不同的格式列样本目录的内容;必要时可用man命令查阅ls命令的用法;

(2)登录后按自己的名字创建工作目录;

(3)使用cp命令准备样本文件,并将它们制到自己的工作目录;

(4)使用学过的文件管理命令(cp,mv,rm,,cat,ln,touch,find等)对这些文件进行操作;

(5)使用权限管理命令chmod,chown,chgrp,umask等进行权限设置;

(6)I/O的重定向,管道,命令替、参数替换等;

(7)在完成以上任务后,也可实验已经学过的内容,也可进行有前展性或Linux系统中感兴趣的内容;

(8)实验完毕后,正常关闭系统系统。

4、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法,(输出较多者可精简)。

实验3:Unix/Linux用户管理及管理命令

1、实验目的:

掌握Unix/Linux用户管理机制与管理命令

用户管理

组管理

密码管理

使用图形界面对用户和组进行管理

其它相关命令

2、实现设备

每人一台装有Linux系统的PC机。

3、实验方法与注意事项

不要在系统内做对系统或对其他用户不安全的事情。

做实验请不要修改超级用户密码。如果修改了root用户密码,请在实验结束前将其恢复为原密码。

用户要按通常实验要求认真书写实验报告。

步骤如下:

(l)用户管理:

①创建用户:用命令useradd / adduser以自己的名字创建一个用户;

②用passwd命令为其设置密码后,用新建用户进行登录并工作;

③用passwd命令对新建用户进行加/ 锁;

④用usermod / userdel对用户进行修改或删除。

(2)组管理

①组的管理应用寓于用户管理之中;

②通过用户管理或组管理命令对组和用户所在的组进行修改;

(3)使用图形界面对用户和组进行管理:

开始→系统设置→用户和组

主要工作有:用户和增加与删除;用户属性修改与维护;

(4)与用户和组相关的管理命令

who

tty

uname

id

su(5)采用某种方法阅读/etc/passwd和/etc/group文件确定自己的uid和gid,并与用id 命令得到的uid和gid,结果进行比较;

4、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法。

实验4:UNIX系统常用命令

1、实验目的:

熟练掌握以下命令的使用:

(1)、进程管理命令;

(2)、与通讯相关的命令有;

(3)、与文件和文件内容显示有关的命令有;

(4)、文本文件内容的处理命令有。

2、实现设备

一台装有Linux系统的服务器,每人一台PC机前是Windows操作系统。本实验采取Windows系统安装Linux系统虚拟机的办法进行。

3、实验方法与注意事项

请不要在系统内做对系统或对其他用户不安全的事情。

要求每个同学登录后系统后,要在自己的家目录内用mkdir命令以自己的学号或名字创建一个子目录。以后所有工作都要在自己的目录内进行。

由于我们以root用户工作的,权限很大,操作时要谨慎从事,否则会造成不良后果。

用户要按通常实验要认真书写实验报告。

(1)、进程管理命令

ps:进程状态查询;

pstree:进程树查询;

kill:向指定进程发信号,或终止某进程的执行;

fuser:确定使用指定文件或文件系统的进程;

sleep:睡眠一会;

nohup:进程抗挂起或抗退出运行。

(2)、与通讯相关的命令有

①telnet:远程登录:从Windows系统的命令界面用telnet以jsj用户登录到Linux,进行相关操作。然后用su命令将自己改变为root用户再进行相关操作;

②ftp:文件传输:匿名登录:从Windows系统的命令界面用ftp以ftp用户登录密码为ftp到Linux,进行文件传输(上传或下载);是否可以以root用户进行登录?若不能,请用vi命令修改/etc/vsftpd.ftpusers在其中增加一行内容:

root

然后用命令:service vsftpd restart

重启ftp服务,现用root登录,看结果如何?

③mail:邮件发送与接收;

④talk:聊天与对话:在本机的两个已登录的用户(比如jsj和root)之间进行聊天,看是否可行?若不行,再从图形界面启动聊天服务器ntalk方法是:

开始→系统设置→服务器设置→服务→ntalk

然后,存盘退出后,执行命令:

service xinetd restart

重新启动xinetd看是否可行。

⑤wall:向所有用户发通知;

(3)与文件和文件内容显示有关的命令有:

more:分屏显示文件的内容;

head:显示指定文件开始的一些行;

tail:显示文件的最后部分;

tee:以三通方式copy标准输入到标准输出和指定文件。

(4)文本文件内容的处理命令有:

①vi:文件编辑:编辑(创建或修改自己的)一个文件,并在编辑过程中使用以下方式:命令方式;编辑模式;命令项模式。

②grep:文件过滤:执行以下命令:

cp /etc/rc.d/init.d/vsftpd .

grep “^#”vsftpd

grep –v “^#” vsftpd

观察执行的结果,并分析结果的不同。

③sed:流编辑:

显示或不显示vsftpd文件中的所有注释行:

sed –e …/^#/!d? < vsftpd

sed –e …/^#/d? < vsftpd

报告系统中所有(非)root用户的活动:

ps –ef | se –e …/root/d?

ps –ef | se –e …/root/d?

④awk:模式搜索与处理:

ps –ef | awk … { print $1 $2 $6 }?

ps –ef | awk … /root/ { print $1 $2 $3}?

⑤wc:文件内容计数与统计。

4、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法。

实验5:vi的使用、shell及shell编程

1、实验目的:

(1)、vi的使用方法:

命令方式;编辑模式;命令项模式;

(2)、shell及shell编程;

文件的执行权限与shell程序的执行:

前台执行;后台执行;

当前shell执行;子shell执行。

2、实现设备

一台装有Windows操作系统和Linux机系统的微机或服务器。

3、实验方法与注意事项

1)由于是以root用户工作的,权力很大,请不要在系统内做对系统或对其他用户不安全的事情。

2)要求每个同学登录后系统后,要在自己的家目录内容以自己(汉语拼音)名字,使用mkdir命令创建一个子目录。以后所有工作都要在自己的目录内进行。

3)认真编写实验报告

例:设计一个程序,带一个(目录)参数。实现功能:(1)首先判断是否带有参数,若无则显示用法信息后,报错返回;(2)带首先判断该参数是不是目录。若是则列目录的内容,否则,提示用户不是目录,则显示警告信息后报错返回。if [ $# -ne 1 ] #判断参数个数是否为1

then

echo “Usage: $0 dir”#显示用法信息

exit 1 #返回码为1

fi

if [ -d “$1” ] #判断是否为目录

then

ls $1/*; exit 0 #列目录内容,返回0

fi

echo “Warn: $1 is not a directory” #警告信息

exit 2 #返回码为2

例:用嵌套式if-fi语句上例可表示为:

if [ $# -ne 1 ] #判断参数个数是否为1

then

echo “Usage: $0 dir”#显示用法信息

exit 1 #返回码为1

elif [ -d “$1” ] #判断是否为目录

then

ls $1/*; exit 0 #列目录内容,返回0

fi

echo “Warn: $1 is not a directory” #警告信息

exit 2 #返回码为2

示例:设计一个程序,计算前10个正整数的和:

x=0; y=1

untile [ $y –gt 10 ]

do

x=`expr $x + $y`

y=`expr $y + 1`

done

echo “1+2+…+10=$x”

示例:设计一个程序,从命令行接收数值参数,并计算这些参数的和。

x=0

for y in $*

do

x=`expr $x + $y`

done

echo “The Sum is:$x

示例:设计一个程序,计算前10个正整数的和:

x=0; y=1

while true

do

x=`expr $x + $y`

y=`expr $y + 1`

if [ $y –gt 10 ]; then break; fi

done

echo “1+2+…+10=$x”用户在做完以上实验后,要自己设计一个shell程序,并将其写入实验报告

4、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法。

实验6:UNIX gcc编译器的使用与编程环境

1、实验目的:

(1)、掌握gcc和g++的用法;

(2)、了解目标代码、库函数和库的管理:

(3)、掌握多模块和多语言联合开发方法;

2、实验内容:

(1)、gcc和g++的用法;

(2)、目标代码、库函数和库的管理:

(3)、多模块和多语言联合开发方法;

2、实现设备

一台装有Windows操作系统和Linux机系统的微机或服务器。

3、实验方法与注意事项

1)由于是以root用户工作的,权力很大,请不要在系统内做对系统或对其他用户不安全的事情。

2)要求每个同学登录后系统后,要在自己的家目录内容以自己(汉语拼音)名字,使用mkdir命令创建一个子目录。以后所有工作都要在自己的目录内进行。

3)认真编写实验报告

示例一

设有C语言文件f1.c,内容为:

#include

f1(int arg)

{

printf(“F1: you passed %d\n”,arg);

}

设有C语言文件f2.c,内容为:

#include

f2(char *arg)

{

printf(“F2: you passed %s\n”,arg);

}

主函数所的模块为m.c,内容为:

#include

main()

{

f1(16);

f2(“Hello World!”);

}

编译和连接过程:

cc –c f1.c f2.c // 生成f1.o 和f2.o

cc –S f1.c f2.c // 生成f1.s 和f2.s

cc –o mp m.c f1.c f2.c //生成mp

构造自己的静态库

cc –o f1.c f2.c //生成目标文件f1.o, f2.o

ar crv libmyl.a f1.o f2.o //生成库libmyl.a

ranlib libmyl.a//为子函数建立内容表

使用自己的库

cc –o mp m.c libmyl.a // 使用库libmyl.a

cc –o mp m.o libmyl.a // 使用库libmyl.a和m.o

cc –o mp m.c -L. –lmyl // 在当前目录以默认方法使用库myl

示例二

分别用C和shell编写一个程序,名字分别为param.c和param.sh,实现如下功能:输出自己所带的命令行参数

1) C语言实现

#include

main(int argc, char *argv[ ])

{

int i;

for (i=0; i

fprintf(stderr,"Param. No %d: %s\n", i, argv[i]);

}

(1) 编译:

cc param.c # 生成a.out

或cc –o param param.c # 生成param

(2) 运行:

./aout sdf dgf fdgf fggh hgjhg hgjhg hgj

或./param sfd fdgdf fdgf gh ghkk www trrt

2) sh语言实现

i=1 # 临时变量

j=$# # 参数总数

while [ $i -le $j ] # 循环语句

do

echo "Param. No $i: $1 "

i=`expr $i + 1` # i++

shift # 下一个变量

done

param的执行

(1) 当param无执行权时:

sh param sfdf fgfd fggfg hgfhf gfhgf hgfhgf

(2) 用chmod 给它增加执行权:

chmod a+x param

有执行权后,直接执行

./param sdfdf fgdgdf gfgfh gfhgf gfhf

sh的另一种实现

j=1 # 临时变量

for i in $*

do

echo " Param. No $j: $i " # 显示

j=`expr $j + 1` # j++

done

4、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法。

实验7:文件部分系统调用

1、实验目的:

(1)、文件部分系统调用;

(2)、通过系统调用实现:

文件的顺序读取;

文件顺序写入;

文件的追加;

文件随机存取。

2、实现设备

一台装有Windows操作系统和Linux机系统的微机或服务器。

3、实验方法与注意事项

1)由于是以root用户工作的,权力很大,请不要在系统内做对系统或对其他用户不安全的事情。

2)要求每个同学登录后系统后,要在自己的家目录内容以自己(汉语拼音)名字,使用mkdir命令创建一个子目录。以后所有工作都要在自己的目录内进行。

3)认真编写实验报告

示例1:

#include

#include

#include

main( ){ int fd, j;

char *myc="This is my 1st program!!\n";

char *myf="myfile", tmpc[100];

if((fd=open(myf,O_RDWR|O_CREAT|O_APPEND,0644))==-1)

{ perror(myf); exit(errno); }

if(write(fd,myc,strlen(myc))!=strlen(myc))

{ perror(myc); close(fd); exit(errno); }

j=-strlen(myc);

lseek(fd,(long)j,SEEK_CUR);

read(fd,tmpc,strlen(myc); //可能会越界

printf(“%s\n”,tmpc); //可能会越界

close(fd);

}

(1)调通以上程序,实现文件的创建、追加与顺序写入。

(2)修改以上程序,使用lseek、write、read等系统调用实现文件的随机访问。

示例2:图书管理品管理系统

#include

#include

#include

#include

#include

#include

#define LBNO 10

#define LBNM 20

#define LBCT 5

#define LBUF 100

int sql(int ,char *, char *);

char *book_file="book_file";

typedef struct bk {

char b_bno[LBNO];

char b_bnm[LBNM];

char b_bct[LBCT];

char filler;

} bk;

bk *b_k,book;

char b_buf[LBUF];

main()

{

int fd;

if((fd=open(book_file,O_RDWR|O_CREAT|O_APPEND,0644))==-1){

perror(book_file);

exit(errno);

}

close(fd);

while(1){

system("clear");

printf("\n\n\n\t1. Book Query 2.Book Input 3.Book_Len 4.Book_Ret 0.quit\n");

printf("\t\t\tPlease get one:");

switch(getchar()){

case '1':

bk_query();break;

case '2':

bk_input();break;

case '3':

bk_io(1);break;

case '4':

bk_io(-1);break;

case '0':

case 'q':

case 'Q':

exit(0);

default :

printf("\n");

}

}

}

bk_query()

{

char bk_no[LBNO+1], bk_rec[LBNO+LBNM+LBCT+2];

int fd,i;

printf("Book No:");scanf("%s",b_buf);

sprintf(bk_no,"%10s",b_buf);

bk_no[LBNO]='\0';

if((fd=open(book_file,O_RDWR))==-1){

perror(book_file);getchar();

return -1;

}

i=sql(fd,bk_no,bk_rec);

if(i==0)

fprintf(stderr,"Not find: %s",bk_no);

else if (i<=0) fprintf(stderr, "File: %s Read Error!\n",book_file);

else {

bk_rec[LBNO+LBNM+LBCT+1]='\0';

printf("%s\n",bk_rec);getchar();

}

close(fd);

getchar();

}

bk_get(char *bk_rec)

{

char bk_nm[LBNM],bk_no[LBNO];

int bk_ct;

printf(" Book No:");scanf("%s",b_buf);

b_buf[LBNO]='\0';

sprintf(bk_no,"%10s",b_buf);

printf(" Book Nane:");scanf("%s",b_buf);//error occurs, when string with white space

b_buf[LBNM]='\0';

sprintf(bk_nm,"%20s",b_buf);

printf("Book Count:");scanf("%d",&bk_ct);

sprintf(bk_rec,"%10s%20s%5d\n",bk_no,bk_nm,bk_ct);

}

sql(int fd, char *b_no,char *bk_rec)

{

int i;

while(1){

i=read(fd,bk_rec,sizeof(book));

if(i==-1) return -1;

if(i==0) return 0; //not exist

if(i!=sizeof(book)) return -2;

i=strncmp(b_no,bk_rec,LBNO);

if(i==0) return 1; //exist

}

}

bk_input()

{

int fd,i,j;

char buff[LBNO+1];

bk_get(b_buf);

if((fd=open(book_file,O_RDWR))==-1){

perror(book_file);

getchar();

return -1;

}

i=sql(fd,b_buf,buff);

close(fd);

if(i==0){

if((fd=open(book_file,O_WRONLY|O_APPEND))==-1){

perror(book_file);

getchar();

return -1;

}

i=write(fd,b_buf,sizeof(book));

if(i!=sizeof(book)){

perror(book_file);

close(fd);

getchar();

return 0;

}

}

else if(i<0) printf("File: %s read error!\n");

else printf("Book:%s Exist!\n",buff);

close(fd);

getchar();

}

bk_io(int lb){

int fd,i,j;

char b_no[sizeof(b_k->b_bno)+1],b_ct[sizeof(b_k->b_bct)];

printf("Book_NO:");scanf("%s",b_buf);

sprintf(b_no,"%10s",b_buf);

if((fd=open(book_file,O_RDWR))==-1){

perror(book_file);

getchar();

return -1;

}

i=sql(fd,b_no,b_buf);

if(i==0){

fprintf(stderr,"No this book!\n");close(fd); return -1;

}

if(i<0){

fprintf(stderr,"File: %s Read error!\n",book_file);

close(fd); return -2;

}

b_k=(bk *)b_buf;

strncpy(b_ct,b_k->b_bct,sizeof(b_k->b_bct));

b_ct[sizeof(b_k->b_bct)]='\0';

i=atoi(b_ct);

while(1){

printf("There are %d books left, How many:",i);

scanf("%d",&j);

if(j==0) break;

i=i-j*lb;

sprintf(b_k->b_bct,"%5d\n",i);

j=-(LBNM+LBNO+LBCT+1);

lseek(fd,(long )j,SEEK_CUR);

if(write(fd,b_buf,sizeof(book))!=sizeof(book)){

printf("File: %s write error!\n",book_file);

close(fd);getchar();

return -1;

}

else {

close(fd);getchar();

return 0;

}

}

close(fd);

getchar();

}

4、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法。

实验8:标准I/O、文件与目录操作

1、实验目的:

(1)、标准IO;

(2)、文件与目录属性:

2、实验内容

(1)临时文件的顺序读取;

(2)文件与目录属性;

(3)目录管理。

2、实现设备

一台装有Windows操作系统和Linux机系统的微机或服务器。

3、实验方法与注意事项

1)由于是以root用户工作的,权力很大,请不要在系统内做对系统或对其他用户不安全的事情。

2)要求每个同学登录后系统后,要在自己的家目录内容以自己(汉语拼音)名字,使用mkdir命令创建一个子目录。以后所有工作都要在自己的目录内进行。

3)认真编写实验报告

示例1:

#include

main(){

char name[L_tmpnam], line[100];

FILE *fp;

printf("%s\n",tmpnam(NULL)); // 1st tmpnam

tmpnam(name); // 2nd tmpnam

printf("%s\n",name); // Disp 2nd tmpnam

if((fp=tmpfile())==NULL) // create temp file

perror(name);

fputs("One Line of Output!\n",fp); // write to tmpfile

rewind(fp); // to the Beginning

if(fgets(line,sizeof(line),fp)==NULL) perror("fgets");

fputs(line,stdout);

}

示例2:文件或目录属性操作

#include

#include

main(int argc, char *argv[])

{

int i;

struct stat buf;

char *ptr;

for(i=1; i

printf("%s: ", argv[i]);

if(lstat(argv[i],&buf)<0){

perror("lstat error");

continue;

}

if (S_ISREG(buf.st_mode)) ptr="regular";

else if(S_ISDIR(buf.st_mode)) ptr="directory";

else if(S_ISCHR(buf.st_mode)) ptr="char spec";

else if(S_ISBLK(buf.st_mode)) ptr="blk spec";

else if(S_ISREG(buf.st_mode)) ptr="regular";

else if(S_ISFIFO(buf.st_mode)) ptr="FIFO spec";

#ifdef S_ISLNK

else if(S_ISLNK(buf.st_mode)) ptr="symb link";

#endif

#ifdef S_ISSOCK

else if(S_ISSOCK(buf.st_mode)) ptr="Socket";

#endif

else ptr="--unknown mode--";

printf("%s\n",ptr);

}

exit(0);

}

示例3:修改示例2,使之具有ls功能

#include

#include

main(int argc, char *argv[])

{

int i;

struct stat buf;

char *ptr;

for(i=1; i

printf("%s: ", argv[i]);

if(lstat(argv[i],&buf)<0){

perror("lstat error");

continue;

}

if (S_ISREG(buf.st_mode)) ptr="-";

else if(S_ISDIR(buf.st_mode)) ptr="d";

else if(S_ISCHR(buf.st_mode)) ptr="c";

else if(S_ISBLK(buf.st_mode)) ptr="b";

else if(S_ISFIFO(buf.st_mode)) ptr="p";

#ifdef S_ISLNK

else if(S_ISLNK(buf.st_mode)) ptr="l";

#endif

#ifdef S_ISSOCK

else if(S_ISSOCK(buf.st_mode)) ptr="s";

#endif

else ptr="?";

printf(" mode=%o,lnk=%d, uid/gid=%d/%d, sz=%ld, atime=%ld", \

buf.st_mode,buf.st_nlink,buf.st_uid,buf.st_gid, \

buf.st_size,buf.st_atime);

printf("%s\n",ptr);

}

exit(0);

}

4、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法。

实验9:系统标识与日期例程

1、实验目的:

(1)、文件与目录属性:

(2)、系统标识;

(3)、日期例程。

2、实验内容

(1)文件目录属性访问;

(2)系统标识编程;

(3)与日期相关的编程。

2、实现设备

一台装有Windows操作系统和Linux机系统的微机或服务器。

3、实验方法与注意事项

1)由于是以root用户工作的,权力很大,请不要在系统内做对系统或对其他用户不安全的事情。

2)要求每个同学登录后系统后,要在自己的家目录内容以自己(汉语拼音)名字,使用mkdir命令创建一个子目录。以后所有工作都要在自己的目录内进行。

3)认真编写实验报告

示例1:系统标识

#include

#include

#include

main()

{

struct utsname un;

char hostname[MAXHOSTNAMELEN+1];

uname(&un); // call uname();

printf("SysName: %s\n",un.sysname);

printf("NodeName:%s\n",un.nodename);

printf("Release: %s\n",un.release);

printf("Version: %s\n",un.version);

printf("Machine: %s\n",un.machine);

gethostname(hostname, MAXHOSTNAMELEN);

printf("\nHostName: %s\n",hostname);

}

例2:时间信息

#include

main()

{

int i;

time_t t,t1;

struct tm *t_m;

if((t=time(&t1))==-1){

perror("time"); exit(-1);

}

printf("Time_T=%ld\n",t);

t_m=localtime(&t);

printf("Sec: %2.2d\n",t_m->tm_sec);

printf("Min: %2.2d\n",t_m->tm_min);

printf("Hour:%2.2d\n",t_m->tm_hour);

printf("Day: %2.2d\n",t_m->tm_mday);

printf("Mon: %2.2d\n",t_m->tm_mon);

printf("Year:%4.4d\n",t_m->tm_year+1900);

printf("WDay:%d\n",t_m->tm_wday);

printf("YDay:%3.3d\n",t_m->tm_yday);

printf("Time&Date from asctime:\t%s\n",asctime(t_m));

printf("Time&Date from ctime:\t%s\n",ctime(&t));

}

例3:文件的时间属性

#include

#include

#include

main(int argc, char *argv[])

{

int i;

struct stat buf;

char *ptr;

struct tm *tm;

for(i=1; i

if(lstat(argv[i],&buf)<0){

perror("lstat error");

continue;

}

if (S_ISREG(buf.st_mode)) ptr="-";

else if(S_ISDIR(buf.st_mode)) ptr="d";

else if(S_ISCHR(buf.st_mode)) ptr="c";

else if(S_ISBLK(buf.st_mode)) ptr="b";

else if(S_ISFIFO(buf.st_mode)) ptr="p";

#ifdef S_ISLNK

else if(S_ISLNK(buf.st_mode)) ptr="l";

#endif

#ifdef S_ISSOCK

else if(S_ISSOCK(buf.st_mode)) ptr="s";

#endif

else ptr="?";

tm=gmtime(&buf.st_mtime);

printf(" %o\t%d\t%d/%d\t%ld\t%4.4d-%2.2d-%2.2d %2.2d:%2.2d\t%s\n", \ buf.st_mode,buf.st_nlink,buf.st_uid,buf.st_gid, \

buf.st_size,tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,arg v[i]);

}

exit(0);

}

4、实验报告的内容与书写:

以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法。

实验10:系统环境与进程通信

1、实验目的:

(1)、掌握UINIX的进程环境;

(2)、程序的执行方法;

(3)、信号通信。

2、实验内容

(1)命令行参数与环境变量的访问与使用;

(2)进程的执行:fork,exec;

(3)进程间的信号通信与同步。

2、实现设备

一台装有Windows操作系统和Linux机系统的微机或服务器。

3、实验方法与注意事项

1)由于是以root用户工作的,权力很大,请不要在系统内做对系统或对其他用户不安全的事情。

2)要求每个同学登录后系统后,要在自己的家目录内容以自己(汉语拼音)名字,使用mkdir命令创建一个子目录。以后所有工作都要在自己的目录内进行。

3)认真编写实验报告

示例1:显示全部和指定环境变量比如PATH,HOME

#include

main(int argc,char *argv[],char *envp[])

{

int i;

for(i=0;envp[i]!=NULL;i++)

printf("Var_Envp[%d]=%s\n",i,envp[i]);

printf("ENVP:PATH=%s\n",getenv("PATH"));

printf("ENVP:HOME=%s\n",getenv("HOME"));

}

例2:通过命令行参数,显示指定环境变量。

可能通过命令行参数,显示指定环境变量的值。例如:./a.out PATH HOME

#include

main(int argc,char *argv[],char *envp[])

{

int i;

for(i=0;i

printf("Var_Envp[%s]=%s\n",argv[i],getenv(argv[i]));

}

例3:fork的使用,请观察并分析屏幕的输出。

main()

{

int i;

printf("PPID=%d\n",getppid());

while((i=fork())==-1);

printf( "i=%d\n",i);

if(i){

sleep(3);

printf( "Parent process!,PPID=%d,PID=%d\n",getppid(),getpid());

}

else{

printf( "Child process!, PPID=%d, PID=%d\n",getppid(),getpid());

}

printf("I am finished!!!\n");

}

例4:信号通信。

编译后生成程序,比如a.out。要求使用两个终端,比方说tty1,tty2,也可在图形界面上启动两终端。可在一个终端上运行程序,但该程序不会自动退出,Ctrl_C也不能使其退出。可从另一终端上执行命令:

kill –USR1 PID 或kill –USR2 PID 或kill –INT PID

来观察正在运行的程序的屏幕输出。结束程序执行的办法是:

kill –9 PID 或killall a.out

#include

#include

static void sig_func(int);

main(int argc, char *argv[])

{

fprintf(stderr,"SIGUSR1=%d\tSIGUSR2=%d\tSIGINT=%d\n",SIGUSR1,SIGUSR2,SIGINT );

fprintf(stderr,"PID=%d. You may get my PID from another terminal by 'ps -ef|grep %s'\n",getpid(),argv[0]);

if(signal(SIGUSR1,sig_func)==SIG_ERR)

perror("Can't Catch SIGUSR1");

if(signal(SIGUSR2,sig_func)==SIG_ERR)

perror("Can't Catch SIGUSR2");

if(signal(SIGINT,sig_func)==SIG_ERR)

perror("Can't Catch SIGUINT");

for(;;) pause();

}

static void sig_func(int signo)

《Linux操作系统》实验三-权限和文件系统管理

《Linux操作系统》 实验报告 实验三:权限和文件系统管理

一、实验目的 1.Unix/Linux权限和文件管理命令; 2.Unix/Linux文件系统的使用; 3.与文件系统管理相关的其它命令。 二、实验环境 Linux操作系统 三、实验内容与实验过程及分析 (l)权限的字符串表示 使用ls -了-d 文件名查询相关文件权限 结果图为: (2) umask值与umask命令 使用命令:umask或umask –p 或 umask –S查看当前的umask值,使用umask 四位八进制数字或者符合修改umask值。 结果图为:

(3)使用权限管理命令chmod进行权限设置 为目录a1、a2修改权限(每完成一步操作都要用ls –l检查文件属性,并进行记录):

为目录a1、a2增加所有人的可进入和读写权限:chmod o+rx a1、a2 为目录a1加入同组人的写权限:chmod go+w a1 将目录a1的其他人权限递归方式设为不可读可不写不可执行:chmod -R o-rwx /root/a1 将目录a1的其他人权限递归方式设为可读可写可执行:chmod -R 777 /root/a1 结果图为:

(4)使用chown,chgrp等进行权限设置 使用权限管理命令chown,chgrp等进行权限设置(每完成一步操作都要用ls –l检查文件属性,并进行记录): 将目录a1用户主设为chown lm a1 将目录a1的组设为chgrp lm a1 将目录a1及其所有子目录的用户主设为lm,组设为chown -R lm:bin a1 结果图为:

unix操作基本命令

UNIX系统操作入门篇(一) 这篇东西是关于Unix系统操作的教程。也是Unix的入门教程。如果你有兴趣学,请看下去,保证你可以学到许多有用的东西。如果你满足于dos,windows的操作,不想对网络服务器,有任何了解的话,可以不看。因为你并不想成为计算机高手。本教程仅仅讲授Unix系统的常用命令,不涉及Unix的历史、安装和编程。如果你想得到更多的知识,请查找其他的教材。本教程参考了《精通Unix》、《Unix基础》、《Unix系统使用指南》等书,你可以在那里找到更多的知识。 准备知识: Unix是一个多任务多用户的操作系统。多任务是指可以同时运行几个不同的程序,或命令。在操作系统的术语里叫“进程”,就象在运行Windows95的时候我们可以一边听CD 一边打字,同时打印机还在工作。多用户是指一台运行Unix系统的机器可以同时具有几个不同的输入输出设备,给几个,几十个用户同时使用。不同的输入输出设备我们称为终端。Unix 给每个终端设置不同的序号以协调工作,这个序号被称为终端序号。Unix是一个根本不同于Dos的系统,无论其命令格式,用途都和Dos有很大区别。比如:目录分割符是"/",而不是"\"。具体的不同请参考其他书籍。 开始练习之前: 在开始教授Unix命令之前,请先记下这个地址:https://www.doczj.com/doc/1c8999167.html,。它是一台在美国的,连上Internet的Unix主机。之所以告诉大家这个地址是因为它提供免费的帐号供大家使用。是免费的。就是说你可以先去那里申请一个帐号,然后在那里练习你所学到的Unix 命令。因为我相信不是每个朋友都可以轻松地得到Unix帐号的。在你成功的申请好帐号之后,请在你Windows95的dos窗口里输入"telnet https://www.doczj.com/doc/1c8999167.html," 等待连上主机。接下来就是输入你的用户名和密码,不要告诉我这些你都不会,如果你不会的话,你是怎么连到这个网页的?现在假定你连上了主机,系统的提示符应该是"https://www.doczj.com/doc/1c8999167.html,%",对这个就是提示符就象dos里的"c:\>"。接下去我将开始命令篇。 ls 你记不记得你学会的第一个Dos命令?反正我学会的第一个命令是dir:列目录和文件的命令。你学会的第一个Unix的命令也是列目录和文件的命令ls. 功能列出当前目录下的文件和目录。同Dos一样,Unix系统命令也是带参数的。ls的参数有"a","l","F"。请注意,F是大写。Unix系统里对命令的大小是严格区分的。(所以我们做网页常常会发生连接错误)同dos 不一样的地方在于,Unix命令的参数是"-"为其前导,而不是"/"。所以完整的ls命令是 ls -l -a -F或ls -laF -l:long的意思,把文件的其他资料,如文件长度,上次修改的日期等等列出来。 -a:all的意思,把本目录下所有的文件,包括隐含的文件也列出来。 -F:显示文件类型。"*"表示可执行文件,"/"表示目录,"@"表示连接。 好,请在你的机器上输入ls -l -a -F,或许这是你一生里第一个Unix命令。记住了吗? cd 变换目录,和Dos相同。如果你在cd后面没有给定目的地,则表示目的地是家目录。在unix 中有三中表示目录的符号".","..","~"。"."表示当前目录路径的位置".."表示当前路径的上一层目录,或称"父目录" "~"表示家目录,所谓家目录指系统管理员分配给你的目录,比如你的用户名是li,那么你的家目录就是在"~li",在cd后面加上"~li"就是去你的家目录。 date 显示出当前的时间和日期,记住在Unix里你是无法修改系统时间的。输出时间一般是格林

实验报告一:Unix环境基本命令的使用

实验报告 首都师范大学信息工程学院 课程名称:网络设计与应用管理实践 实验名称:Unix环境基本命令的使用 任课教师:刘羽实验时间:2010-03-13 姓名:何淼学号:1081000016 专业:计算机科学与技术(师范) 一、实验目的及要求 1、熟练掌握Unix环境下的基本操作 2、熟练掌握常用的Bash命令 3、理解Unix环境下目录结构和用户目录权限 4、掌握vi或emacs的使用方法 二、实验环境 1、操作系统:Windows XP 、Windows 7 2、软件:VMware Workstation v7.0.0.203739版本 3、硬件:内存—2GB、CPU—Core(TM)2 Duo E7200、硬盘、320GB 三、实验内容、步骤、现象 1、实验内容:Unix环境下Bash基本命令—cd、pwd、ls、grep、more、mkdir、rmdir、cp、mv、chmod、chown、wget、ifconfig、netstat等命令的使用方法以及vi和emacs的使用方法 2、步骤及其现象: (1)打开terminal

(2)用ls查看目录 (3)cd命令

cd进入Desktop目录 返回上级目录(4)用pwd显示当前工作目录

(5)用wget命令下载文件 用wget -d https://www.doczj.com/doc/1c8999167.html,下载了学校首页到桌面

文件名存为index.html,打开后如下所示 (6)运用cp命令

把刚才下载的index.html文件复制到桌面上的abc目录下 发现abc目录中出现了index.html (7)删除命令rm

操作系统课程设计实验报告(以Linux为例)

《操作系统课程设计》 实验报告 学号: 姓名: 苏州大学计算机科学与技术学院 2014年9月

操作系统课程设计实验报告 目录 目录 (1) 一、实验环境 (2) 二、实验报告总体要求 (2) 实验一编译L INUX内核 (3) 实验二观察L INUX行为 (7) 实验三进程间通信 (14)

操作系统课程设计实验报告 一、实验环境 Linux平台 ◆硬件平台:普通PC机硬件环境。 ◆操作系统:Linux环境,例如,红旗Linux或Red Hat Linux;启动 管理器使用GRUB。 ◆编译环境:伴随着操作系统的默认gcc环境。 ◆工作源码环境:一个调试的内核源码,版本不低于2.4.20。 二、实验报告总体要求 在2013年11月25日前提交实验报告。实验报告至少要求包含以下内容: 1.引言:概述本次实验所讨论的问题,工作步骤,结果,以及发现的意 义。 2.问题提出:叙述本篇报告要解决什么问题。注意不可以抄写实验要求 中的表述,要用自己的话重新组织我们这里所提出的问题。 3.解决方案:叙述如何解决自己上面提出的问题,可以用小标题 3.1, 3.2<等分开。这是实验报告的关键部分,请尽量展开来写。注意, 这部分是最终课程设计的基本分的部分。这部分不完成,本课程设计不会及格。 4.实验结果:按照自己的解决方案,有哪些结果。结果有异常吗?能解 释一下这些结果吗?同别人的结果比较过吗?注意,这部分是实验报告出彩的地方。本课程设计要得高分,应该在这部分下功夫。 5.结束语:小结并叙述本次课程设计的经验、教训、体会、难点、收获、 为解决的问题、新的疑惑等。 6.附录:加了注释的程序清单,注释行数目至少同源程序行数目比1: 2,即10行源程序,至少要给出5行注释。

unix实验报告7

实验七管道pipe和popen通信 实验目的 1. 掌握无名管道pipe的原理 2. 掌握管道的应用及重定向。 3. 熟悉popen创建管道的方式及应用程序设计; 实验内容 1. (1) 在命令行下执行ls –l |grep .c命令,查看运行结果。 (2)设计一个程序,要求创建一个管道PIPE,复制进程,父进程运行命令“ls -l”,把运行结果写入管道,子进程从管道中读取“ls -l”的结果,把读出的作为输入运行“grep .c”。即实现“ ls –l |grep .c”功能。参考课件ch4 P52,54。 程序源代码: #include <> #include<> #include<> #include<> int main () { int fd[2];

char buf[1000]; pid_t p; if(pipe(fd)<0) { printf("创建管道失败"); return -1; } p=fork(); i f(p<0) { perror("创建子进程失败"); exit;} else if (p==0){ close(0); dup(fd[0]); execlp("grep","grep",".c",NULL); } else{ close(1); dup(fd[1]); execlp("ls","ls","-l",NULL); wait(0); } return 0; } 结果截图:

2. (1)在命令行下执行 $touch $ls –l >, cat命令查看内容。 (2)设计一个程序,要求利用popen函数,实现“ls –l > ”的重定向功能,在程序中创建。参考课件ch4 59 程序源代码: #include <> #include<>

操作系统实验报告(包括线程,进程,文件系统管理,linux+shell简单命令)

操作系统实验报告 班级:030613 学号:03061331 姓名:裴帅帅

实验一:进程的建立 一、实验内容 创建进程及子进程,在父子进程间实现进程通信,创建进程并显示标识等进 程控制块的属性信息,显示父子进程的通信信息和相应的应答信息。 使用匿名管道实现父子进程之间的通信。 二、源程序 1、创建匿名管道 SECURITY_ATTRIBUTES sa; sa.bInheritHandle=true; sa.lpSecurityDescriptor=NULL; sa.nLength=sizeof(SECURITY_ATTRIBUTES); if(!CreatePipe(&m_hRead,&m_hWrite,&sa,0)) { MessageBox("创建匿名管道失败"); return false; } 2、创建子进程 STARTUPINFO si; ZeroMemory(&si,sizeof(STARTUPINFO)); si.cb=sizeof(STARTUPINFO); si.dwFlags=STARTF_USESTDHANDLES; si.hStdInput=m_hRead; si.hStdOutput=m_hWrite; si.hStdError=GetStdHandle(STD_ERROR_HANDLE); if(!CreateProcess(NULL,"子 进.exe",NULL,NULL,true,0,NULL,NULL,&si,&pi)) { MessageBox("创建子进程失败"); CloseHandle(m_hRead); CloseHandle(m_hWrite); m_hRead=NULL; m_hWrite=NULL; return; } 3、销毁子进程 if(m_hRead) CloseHandle(m_hRead);

SCO_UNIX系统常用命令.

SCO UNIX 系统常用命令 一. 常用系统命令 1. 登录 在login :下,输入用户名,密码,进入显示shell 名令提示符,超级用户#>,普通用户$>. 2 su #>su -oracle 3 退出 exit logout ctrl +d( 强制退出 4 passwd修改密码 5 man查命令的解释 6who 查看登录用户,包括自己。 Who am I 7finger 显示当前用户的信息。 8clear 清屏 9setcolor -n 置屏幕为normal , 黑底白字。 10wall 广播信息 wall -》回车-》输入内容-》ctrl +d mail 发送邮件

mail 接收用户名-》回车-》输入内容-》ctrl +d 11关机 shutdow n -g0 —立即关闭无需确认 haltsys reboot init 0 关机 init 6 停止系统运行并重启 12du dfspace du :显示文件目录占用的磁盘空间大小。 Dfspace: 显示空闲磁盘空间。 13scoadmin系统管理工具 14u name —显示系统信息 15env 显示更改环境设置 set 16sar系统维护的重要工具 /usr/lib/sa/sar_e nable-y 打开 /usr/lib/sa/sar_e nable—n 关闭 从14个方面报告系统的活动情况,重点监视内存和cpu的使用情况.sar -r 30 4 报告内存和交换区的使用

sar -u 30 4报告cpu的使用情况 Wio 值高表示硬盘存在IO 瓶颈 Idle 值高表示等待分配内存, 需扩内存小于30表示进程主要竞争的自源是cpu. ipcs 显示共享内存 ipcrm -m(s id 号 integrity 把文件控制数据库与文件系统中的文件, 进行比较. Fixmog 使全部的系统文件或指定的系统文件和鉴别数据库一致起来. 二. 文件目录相关命令 1 pwd 显示当前所在目录 2cd 3mkdir 创建目录 4rmdir 删除目录 5rm 删除文件 rm —r 6mv 源目标 7cp 源目标 cp -r 8ln 源目标文件的链接 9pg 文件

大学课件-Unix实验报告2

电子科技大学 计算机科学与工程学院标准实验报告(实验)课程名称Unix操作系统 电子科技大学教务处制表

电子科技大学 实验报告 一、实验室名称:计算机学院实验中心 二、实验项目名称:图书馆管理系统 三、实验目的:掌握shell编程的一般方法,能运用常用的shell命令编写一个简单的shell程序,并能在Linux系统所提供的/bin/sh或/bin/bash下正确的运行。 四、实验内容: ?写一个菜单驱动的Linux图书馆管理程序(LLIB),该程序能够对书库中的图书执行增加一条记录、删除一条记录、显示一条记录、更新一条记录状态和打印报表等功能。图书库为一个文本文件library, 其中每一行为一个记录,包括六个字段,描述一种书的六种信息(假设每一种书只能有一本),分别是: ?书名 ?作者 ?种类,假设有三种有效类型: 系统书:简写为system 参考书:简写为reference 教科书:简写为textbook ?状态:表示书被借出还是在书库中。图书状态由程序决定,当增加一本书时或书被还回时,该状态自动设为in;当书被借出时,状态改为out; ?借阅者姓名:当图书在书库中(即状态字段为in)时,该字段为空;当书被借出(即状态字段为out)时,该字段为借阅者姓名; ?日期:当图书在书库中(即状态字段为in)时,该字段为空;当书被借出(即状态字段为out)时,该字段为借出日期。 ?由于在书名和作者字段的字符串中可能包含空格,所以在每条记录中各字段之间的间隔符为冒号(:)。 程序结构要求:

五、实验器材(设备、元器件): ? 个人电脑(安装window 10操作系统) ? WSL(window 10下的Linux 子系统) ? cmder(windows 10下的命令行) 六、实验步骤及操作: 代码: #!/bin/rbash # 记录的借出状态 STATUS_AVAILABLE=0 STATUS_UNAVALABLE=1 # 加粗输出第一个参数 function echoBold() { echo -e "\033[0;0;1m$1\033[0;0;0m" } # 输出标题 附带第一参数 function echofunctionTitle() { echo -e Linux Library - `echoBold $1` } # 读输入直到正确选择yes 或者no function yesOrNo() { input="" while true # 等待正确输入 do read -p "$1Y(es) or N(o)?>" input case "$input" in LLIB ADD DISPLAY UPDATE DELETE ERROR EDIT REPORTS REPORT_NO

unix实验(操作系统)

实验一:linux常用命令 一、实验内容和要求 1、使用自己的帐户登录linux系统查看系统提示符确定自己使用的shell程序类型。 2、修改个人口令后重新登录。 3、用who命令查看当前登录在系统中的用户列表、用户总数、系统启动时间等。 4、查看当前用户的标志符及当前进程的状态。 5、用cal命令查看自己的生日是星期几。 6、将Windows下的C盘链入linux 系统的根目录下。 7、将C盘上的一个文本传递到linux下的当前用户目录下,并进行浏览查看。 8、使用mail进行电子邮件的传递与查看。 9、在系统中与其他用户对话。 10、练习允许与拒绝其他用户向自己的终端上发送信息。 二、实验结果:请同学们自己写出 1、用户使用的shell可查阅/etc/passwd文件确定。 2、修改口令的命令为:passwd 3、who –h 4、id 5、cal –m 3 –y 1990 6、mkdir/dosc mount/dev/hda1/dosc 7、cp /myexample.txt vim ./myexample.txt 8、% mail zhangming subject:hello hi,my friend! How are you! [ctrl+d] Cc: % 查看信件只需要键入‖mail‖ % mail 9、% talk zhangming 用户屏幕将分成两半,其显示:请同学们自己写 此时zhangming 回应: % talk wangyong@class 则zhangming 的屏幕就会分成两半,双方开始对话。 10、% mesg y允许其他用户向自己发送信息。 % mesg n拒绝其他用户向自己发送信息。 实验二:shell编程 一、实验内容和要求(同学们可以任意选择2题) 1、使用FOR循环语句编写一段B-shell程序,完成显示用户注册目录下a_bub、b_sub 子 目录下的所有C程序文件及其目标的列表。 2、为了便于系统管理员对磁盘分配的管理,请编写一段B-shsell程序,当文件系统/home 的占用空间量改变时给出相应的提示。要求/home占用量在系统磁盘中为: (1)小于50%时,提示“用户文件系统磁盘使用负荷量小”。 (2)大于50%,小于90%时,提示“用户文件系统磁盘使用负荷正常”。

UNIX系统常用命令

UNIX系统常用命令 UNIX系统常用命令格式: command [flags] [argument1] [argument2] ... 其中flags以-开始,多个flags可用一个-连起来,如ls -l -a 与ls -la相同。 根据命令的不同,参数分为可选的或必须的;所有的命令从标准输入接受输入,输出结果显示在标准输出,而错误信息则显示在标准错误输出设备。可使用重定向功能对这些设备进行重定向。 命令在正常执行结果后返回一个0值,如果命令出错可未完全完成,则返回一个 非零值(在shell中可用变量$?查看). 在shell script中可用此返回值作为控制逻辑的一部分。 注:不同的UNIX版本的flags可能有所不同。 1、与用户相关的命令 1.1 login (在LINUX Redhat下此命令功能与Solaris/BSD不同,执行login会退出当前任务). login: Password: 相关文件: 在下面的这些文件中设定shell运行时必要的路径,终端类型,其他变量或特殊程序. $HOME/.profile (Bourne shell, sh, bash) $HOME/.cshrc (csh, tcsh) $HOME/.tcshrc (tcsh) /etc/passwd文件中列出每个用户的shell /etc/csh.cshrc /etc/csh.login /etc/profile (Bourne shell, bash) /etc/login (Bourne shell, bash) csh: /etc/csh.cshrc和$HOME/.cshrc每次执行都会读取, 而/etc/csh.login和$HOME/.login只有注册shell才执行 修改相应文件后使用 source .cshrc使能相关修改,如果修改了path则 还需使用rehash刷新可执行文件hash表。 tcsh: $HOME/.tcshrc, 没有些文件读取.cshrc sh: /etc/profile和$HOME/.profile注册shell bash: /etc/profile和$HOME/.bash_profile注册shell读取 .bashrc交互式非注册shell才读取。

UNIX实验报告

网络操作系统实训报告 学生学院计算机学院 专业班级 学号 学生姓名 指导老师王勇 2013年6月

目录 1 实验一熟悉Linux系统环境………………………………………………… 2 实验二 Linux 的文件与目录结构文本处理令……………………………… 3 实验三 Linux 系统配置与管理……………………………………………… 4 实验四 Linux 与用户有关的命令及系统管理命令…………………………

实验一熟悉Linux系统环境 一、实验目的 ●了解Linux系统中普通用户与超级用户帐号的概念; ●了解进入及退出Linux 系统的基本方法; ●了解虚拟控制台的原理; ●使用passwd命令更改用户的口令; ●了解Linux 中的ls、echo、cat、date、clear等基本行命令的功能; ●了解Linux命令中的命令参数(开关符)的使用; ●学会使用Linux中的man命令来获得帮助 二、实验流程 1、实验步骤: 1)按管理员提供的用户名和密码登录系统。 2)输入 ls 然后观察屏幕的反应 3)输入 cd / 然后观察系统提示符是否有变化。 4)输入 ls 然后观察屏幕的反应。 5)输入 echo “hello!” 6)通过练习ls –a、ls –l、ls –t来考察命令中参数的作用 7)使用man命令来了解ping命令的重要功能 结果如下:

实验二Linux 的文件与目录结构文本处理令 一、实验目的 ●了解Linux的基本目录结构的特点; ●学会建立和删除目录的方法; ●了解Linux中的绝对和相对路径; ●通过使用ls命令进一步了解Linux中文件属性的含义 ●了解文件的复制、删除等基本命令的使用; ●了解Linux 中的sort及uniq 二、实验流程: [实验1] 实验目的:学会通过“cd”和“ls”两个命令观察自己操作系统的部分目录结构。实验步骤: 1)首先将当前目录确定为根目录,然后浏览该目录下有哪些目录。 2)观察在bin 目录中有什么文件——是否有前面学到过的ls 或echo 等命 令程序? 3)观察属于你自己空间的那个目录里有些什么东西? 结果如下:

计算机操作系统体系结构实验报告

操作系统实验报告 实验目的: 随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构、层次结构、虚拟机结构和微内核结构。为了更好的了解计算机操作系统体系结构,以及linux 的体系结构,特作此报告。 实验内容: 计算机操作系统体系结构 一、模块组合结构 操作系统刚开始发展时是以建立一个简单的小系统为目标来实现的,但是为了满足其他需求又陆续加入一些新的功能,其结构渐渐变得复杂而无法掌握。以前我们使用的MS-DOS 就是这种结构最典型的例子。这种操作系统是一个有多种功能的系统程序,也可以看成是一个大的可执行体,即整个操作系统是一些过程的集合。系统中的每一个过程模块根据它们要完成的功能进行划分,然后按照一定的结构方式组合起来,协同完成整个系统的功能。如图1所示: 在模块组合结构中,没有一致的系统调用界面,模块之间通过对外提供的接口传递信息,模块内部实现隐藏的程序单元,使其对其它过程模块来说是透明的。但是,随着功能的增加,模块组合结构变得越来越复杂而难以控制,模块间不加控制地相互调用和转移,以及信息传递方式的随意性,使系统存在一定隐患。 二、层次结构 为了弥补模块组合结构中模块间调用存在的固有不足之处,就必须减少模块间毫无规则的相互调用、相互依赖的关系,尤其要清除模块间的循环调用。从这一点出发,层次结构的设计采用了高层建筑结构的理念,将操作系统或软件系统中的全部构成模块进行分类:将基础的模块放在基层(或称底层、一层),在此基础上,再将某些模块放在二层,二层的模块在基础模块提供的环境中工作;它只能调用基层的模块为其工作,反之不行。严格的层次结构,第N+l层只能在N层模块提供的基础上建立,只能在N层提供的环境中工作,也只能向N 层的模块发调用请求。 在采用层次结构的操作系统中,各个模块都有相对固定的位置、相对固定的层次。处在同一层次的各模块,其相对位置的概念可以不非常明确。处于不同层次的各模块,一般而言,不可以互相交换位置,只存在单向调用和单向依赖。Unix/Linux系统采用的就是这种体系结构。 在层次结构中,强调的是系统中各组成部分所处的位置,但是想要让系统正常运作,不得不协调两种关系,即依赖关系和调用关系。 依赖关系是指处于上层(或外层)的软件成分依赖下层软件的存在、依赖下层软件的运行而运行。例如,浏览器这部分软件就依赖GUI的存在和运行,GUI又依赖操作系统的存在和运行。在操作系统内部,外围部分依赖内核的存在而存在,依赖内核的运行而运行,内核又依赖HAL而运行。处在同层之内的软件成分可以是相对独立的,相互之间一般不存在相互依赖关系。 三、虚拟机结构 虚拟机的基本思想是系统能提供两个功能:①多道程序处理能力;②提供一个比裸机有更方便扩展界面的计算机。操作系统是覆盖在硬件裸机上的一层软件,它通过系统调用向位于

《UNIX常用命令大全》word版

UNIX常用命令大全[分享] apropos 用途:apropos查找使用说明的名称。 举例:apropos print(等价于man -k prink)。 arch 用途:arch获得机器体系结构的描述信息。 举例:arch。下面是arch输出的结果: sun4 将这个命令与uname进行比较。 ash 用途:ash是外壳,只用于某些系统。 举例:ash。这个命令启动ash外壳的一个实例。 at 用途:at用于确定命令执行的时刻。 举例:at 9:00am December 31。 awk 用途:awk是一种模式扫描和执行语言。 举例:awk\'{print $1}\'file.txt。这个命令执行后将打印出file.txt的第一个区域。bash 用途:bash是GNU Bourne-Again外壳。 举例:bash[options]。这个命令启动bash外壳,它是一个增强的和sh兼容的外壳。bash 的提示符为$。 biff 用途:biff通知你是否收到了邮件。 举例:biffy。这个命令叫biff通知你新邮件什么时候到达(注意,要想让biff工作,你必须同时运行 sendmail)。 cancel 用途:cancel取消挂起的打印作业。 举例:cancel23。这个命令取消23号打印作业。 cal 用途:cal显示无格式文本日历。 举例:cal。以下是命令执行后输出的列表: August 1998 cat 用途:cat将文件连接在一起并显示这些文件中的内容。 举例:cat myfile.txt。这个命令执行后显示myfile.txt中的内容。 cc 用途:cc是用于许多系统的C编译器。 举例:cc myfile.c -o myfile。这个命令执行后对myfile.c源文件进行编译并输出一个名为myfile的可执行文件。 cd 用途:cd用来改变当前目录。 举例:cd/usr/bin。这个命令执行后将当前目录更改为/usr/bin。

网络存储实验报告

湖北文理学院《网络存储》 实验报告 专业班级:计科1211 姓名:*** 学号:*** 任课教师:李学峰 2014年11月16日

实验01 Windows 2003的磁盘阵列技术 一、实验目的 1.掌握在Windows 2003环境下做磁盘阵列的条件和方法。 2.掌握在Windows 2003环境下实现RAID0的方法。 3. 掌握在Windows 2003环境下实现RAID1的方法。 4. 掌握在Windows 2003环境下实现RAID5的方法。 5. 掌握在Windows 2003环境下实现恢复磁盘阵列数据的方法。 二、实验要求 1.在Windows 2003环境下实现RAID0 2.在Windows 2003环境下实现RAID1 3.在Windows 2003环境下实现RAID5 4.在Windows 2003环境下实现恢复磁盘阵列数据 三、实验原理 (一)磁盘阵列RAID技术的概述 RAID是一种磁盘容错技术,由两块以上的硬盘构成冗余,当某一块硬盘出现物理损坏时,换一块同型号的硬盘即可自行恢复数据。RAID有RAID0、RAID1、RAID5等。RAID 技术是要有硬件来支持的,即常说的RAID卡,如果没RAID卡或RAID芯片,还想做RAID,那就要使用软件RAID技术,微软Windows系统只有服务器版本才支持软件RAID技术,如Windows Server 2003等。 (二)带区卷(RAID0) 带区卷是将多个(2-32个)物理磁盘上的容量相同的空余空间组合成一个卷。需要注意的是,带区卷中的所有成员,其容量必须相同,而且是来自不同的物理磁盘。带区卷是Windows 2003所有磁盘管理功能中,运行速度最快的卷,但带区卷不具有扩展容量的功能。它在保存数据时将所有的数据按照64KB分成一块,这些大小为64KB的数据块被分散存放于组成带区卷的各个硬盘中。 (三)镜像卷(RAID1) 镜像卷是单一卷的两份相同的拷贝,每一份在一个硬盘上。它提供容错能力,又称为RAID1技术。 RAID1的原理是在两个硬盘之间建立完全的镜像,即所有数据会被同时存放到两个物理硬盘上,当一个磁盘出现故障时,系统仍然可以使用另一个磁盘内的数据,因此,它具备容错的功能。但它的磁盘利用率不高,只有50%。 四、实验设备 1.一台装有Windows Server 2003系统的虚拟机。 2.虚拟网卡一块,类型为“网桥模式”。 3.虚拟硬盘五块。 五、实验步骤 (一)组建RAID实验的环境 (二)初始化新添加的硬盘 (三)带区卷(RAID0的实现)

UNIX操作系统实验1

UNIX操作系统 实验 首都师范大学信息工程学院 系统分析与管理实验室

目录 1、UNIX安装及基本操作……………………………………… 2、UNIX编程基础………………………………………. 3、UNIX进程实验………………………………………. 4、UNIX进程间通信…………………………………….. 5、UNIX文件系统实验……………………………………….. 6、UNIX综合实验………………………………………..

实验一 UNIX安装及基本操作 一、背景知识 UNIX操作系统是一种精良的OS,可完成系统赋予OS的所有任务,与用户有良好的交互界面,在资源管理中有独到的算法和策略,开源软件使其技术有了长足发展。 UNIX核心部分设计简单且功能全面,支持多用户、多任务,文件系统可装卸,有良好的开放性及可移植性,具有强大的命令功能,具有完善的安全机制,具有网络特性等。 Linux 不同于WindowsNT、UNIX等系统,它的源代码是公开的,具有类UNIX的特点,安装和使用与UNIX相似,它实现了虚拟存贮管理,进程管理,多处理器,多文件系统,可以运行在PC平台,是一个先进的,具有生命力的操作系统,因此,课程将主要以Linux操作系统作为安装和实验的平台,UNIX操作系统的安装和使用可以参照Linux实验来完成。 二、实验目的 1) 通过安装Linux,掌握Linux安装的一般程序,了解Linux安装的发展。 2) 通过学习和练习基本命令操作,掌握Linux下命令的特点,掌握基本命令的使用。 三、工具/准备工作 在开始本实验之前,请回顾教科书的相关内容。 需要做以下准备: 1) 一台个人计算机。 2) Linux介质(光盘,网络镜像或下载网址及网络通信联接) 四、实验内容与步骤 1. Linux简介 Linux是一种能运行于多种平台(PC机、ALPHA工作站、SUN Sparc 工作站)的功能强大、与UNIX兼容的操作系统。 Linux的内核及应用软件的源代码是公开的,也是免费的。它具有众多的自由组织和商业公司的支持和参与。 学习和使用Linux要遵守GPL规则。GPL即General Public License通用公共许可协议的缩写。GNU是GNU’s Not Unix 的缩写。FSF是自由软件基金会(Free Software Foundation)的缩写。

UNIX 常用命令

6.dd 删除一行文本所用的操作符 7.10x 删除10个字符所用的操作符 8.. 点重复用户最近一次文本修改 9.$ 移动光标到当前行尾 10.W 将光标向右移动一个字 11.K 将光标向上移动 12.j 将光标向下移动 13.h 将光标向左移动 14.l 将光标向右移动 15.A 在当前行尾输入文本 16.O 在当行上面添加一行 17.o 在当前行下面添加一行 18.U 撤销对当前行所做的所有修改 19.r 替换光标所在位置的字符 20./ 向前搜索指定的字符串 21.?向后搜索指定的字符串 22.:q! 不保存文件,退出vi 23.a 将输入的文本插到光标位置处 24.0(零)将光标移到当前行首 25.ls 列出当前目录的内容 26.pwd 显示当前目录的路径名 27.cd 改变当前目录到主目录 28.mkdir xyz 在当前目录下创建xyz 目录 29.ls-l 以长格式列出当前目录 30.cd.. 改变当前工作目录到当前目录的父目录(改变到了另一个目录) 31.ls-a 列出所有文件包括隐藏文件 32.cat xyz 在屏幕上显示xyz 文件的内容 33.lp xyz 在默认打印机上打印xyz文件 34.rm xyz 删除xyz文件 35.rmdir xyz 删除xyz 目录 36.cancel lp1 取消lp1打印机上的打印作业 37.lpstat 显示默认打印机的状态 38.rm-i 在删除文件之前要求确认 39.rm 删除文件 40.rmdir 删除目录 41.lp 打印文件 42.Cancel 取消打印请求 43.Lp-n 打印文件的多份副本 44.cd 改变到主目录 45.mkdir 创建目录 46.mkdir-p 创建两层目录结构 47.cd 改变到根目录下 48.cat- 在屏幕上显示文件 49.cat-- 在屏幕上显示两份文件 50.G 将光标放在文件的最后一行上 51./most查找字most 52.[Ctrl-g] 显示当前的行号 53.2dw 删除两个字 54.“x4yy 复制4行到缓冲区x中 55.66G 将光标定位到第66行 56.rx 用字母xti替换光标处的字符 57.“lp 查看缓冲区的1的内容 58.:set number 设置行号选项 59.“x5yy 保存5行到缓冲区X 60.:r!date 将日期串读入(输入)用户文件中 61.:!ls 列出当前目录 62.:ab 创建缩写 63.:unab 取消缩写68.mv xxx yyy 将xxx重命名为yyy 69.rm* 删除当前目录下的所有文件 70.ls*[1-6] 列出所有文件名以数字1-6结尾的文件 71.cp file??source 复制所有文件名以file开头,后面跟两个字符的文件 72.pr-2 myfile 以两列格式化myfile 73.pg myfile 以逐屏显示的方式浏览myfile 74.cat myfile>yyy 复制myfile到yyy 75.cat?myfile>>yyy 将所有文件名为myfile前加一个字符的文件内容加到yyy文件中 76.find.-name“file*”-print 查找所有文件名以file开头的文件 77.find-name xyz-size20-print 查找所有文件名为xyz大小为20块的文件 78.cut-f2 xyz>xxx 保存xyz文件的第2个域到xxx文件中 79.more zzz 逐屏读zzz文件 80.alias 该命令创建命令的别名 81.ls-i 列出当前目录下的文件名及其i节点号 82.echo 该命令在输出设备上显示其输出参数 83.\a 警报(响铃) \n 回车换行 \b 回退 \r回车不换行 84.echo A>>B 把A追加到B 1.编辑器:编辑器是一个工具,可以方便的创建新文件或修改旧文件 2.UNIX操作系统支持的编辑器:(行编辑器)Emase,ex,ed,(全屏编辑器)vi,view /* 3.x 删除光标出的字符 r 替换光标所在位置的字符 / 向前搜索指定的字符串 ? 向后搜索指定的字符串 h 将光标向左移动一行 A 将输入文本放在当前行的行尾 q! 不保存文件,退出vi wq 保存文件并退出vi a 将输入的文本插入到光标位置后 $ 将光标移到当前行行尾 0 将光标移到当前行行首 K 将光标向上移动一行 4.dd 删除一行 dw 删除1个字 yy 复制1行 yw 复制1个字 d$ 删除到当前行尾 :z2yy 将两行保存到缓冲区z “zp 将缓冲区z的内容复制到当前行后 “2p 将缓冲区2的内容复制到当前行后 5.G 将光标放到文件的最后一行上 /most 查找字most [Ctrl-g] 显示当前行的行号 2dw 删除两个字 j 将光标向下移动一行 “x4yy 复制4行到缓冲区x $ 将光标定位到当前行尾 0(零)将光标定位到当前行首 66G 将光标定位到第66行 x 删除光标出的字符 rx 用字母x替换光标出的字符

unix实验报告

实验报告 ( 2014-- 2015年度第1学期) 名称:UNIX/LINUX体系及编程 院系:信息工程系 班级: 学号: 学生姓名: 指导教师:姜丽梅 设计周数: 3 成绩: 日期:2014年12 月10日

任务书 一、目的与要求 1.掌握UNIX/Linux系统的目录和文件管理命令。 2.掌握shell的输入输出重定向,编写shell脚本文件。 3.编写C语言程序,使用GCC编译,使用GDB调试。 4.掌握make工具,撰写makefile文件,完成C程序的自动编译。 5.要求每人能独立完成实验。 二、主要内容 1.用pwd命令显示用户主目录的路径名,用date命令查看当前日期和时间,用who 命令查看当前登录在系统中的用户列表,利用who命令选项查看当前系统中的用 户总数和系统启动时间。比较whoami 和who am i显示的结果区别,熟练使 用cat、cd、chmod、ls、cp、ln、df、ps等命令。 2.用vi编辑器,先在用户主目录中创建文件,编辑文件。并作统计文件大小,重新编辑文件。字符串替换等工作 3.用find命令查找名为passwd的文件。从用户主目录开始,查找所有1天前创建的文件。查找文件属主的文件。查找1天前被访问过的文件。 4.用重定向符和cat命令创建一个 flower脚本文件,完成如下功能。 4.1 显示用户名。显示用户当前系统中的进程。 4. 2 判断当前用户是否为root用户:若是root用户,则根据命令行参数n,清 除/var/log目录下的某个文件的内容但保留其最后的n行的内容,若没有参数, 则保留10行;若不是root用户,提示出错。 5.编写C程序,编译、运行、调试程序。用C语言程序编程实现:将输入的十进制数输出为相应的十六进制数。 6.利用UNIX的软中断信号编写一段C语言程序完成:显示数字1到100,在程序运行中如果捕获到一个SIGINT信号,则转去执行一段显示当前系统时间的程序。 考虑信号复位的情况,使程序能够实现多次被打断而多次恢复执行。 三、进度计划 四、实验成果要求 1.将操作截图贴报告中,包括命令、脚本、C代码、makefile文件及运行结果。五、考核方式 1.以实验报告作为实验成绩。 学生姓名: 指导教师: 2014年12月10日

unix-linux实验报告 华北电力大学 阎蕾

科技学院 实验报告 ( 2012—2013年度第1学期) 名称:UNIX/LINUX体系及编程 院系:信息工程系 班级: 学号: 学生姓名: 指导教师:阎蕾 设计周数: 3 成绩: 日期:2012年9 月9日

实验正文 一.实验目的和要求: 1.1.掌握UNIX/Linux系统的目录和文件管理命令。 2.掌握shell的输入输出重定向,编写shell脚本文件。 3.编写C语言程序,使用GCC编译,使用GDB调试。 4.掌握make工具,撰写makefile文件,完成C程序的自动编译。 5.要求每人能独立完成实验。 二.实验主要内容: 1.用pwd命令显示用户主目录的路径名,用date命令查看当前日期和时间,用who 命令查看当前登录在系统中的用户列表,利用who命令选项查看当前系统中的用 户总数和系统启动时间。比较whoami 和who am i显示的结果区别。 命令:pwd:查看当前工作路径 命令:date:查看日期时间 命令who –a 查看登陆系统中的所有用户,同时显示启动时间 命令:whoami 和 who am i 的区别:whoami只显示当前用户的名字 2. 用vi编辑器,先在用户主目录中创建文件,编辑文件。并作统计文件大小,重新 编辑文件。字符串替换等工作 命令:创建qq文件:vi qq 命令:统计创建文件大小:du –h qq 命令:字符串的替换:在命令模式下输入 cat qq 查看文件 可以把文件中所有的huangjinlong替换成Mk:1,$s/huangjinlong/Mk/g 1表 示第一行,$s表示最后一行。内容如下: 3.运用find命令查找passwd文件

相关主题
文本预览
相关文档 最新文档