还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
中央民族大学操作系统实验报告姓名黄越伶学号21011656年级2021级院系信息工程学院专业软件工程2023年4月6日U21:45teacher@teacher-VirtualBox:~/桌面teacher^teacher-VtrtualBox:$chmoda+xhello.shteacher®teacher-VtrtualBox:$./hello.shb.cdxs.chello.exelab.ctcprint.cb.odxs.exehello.shla.c挂载共享文件夹c.hecpl.cHelloWorld.cla.exeIc.h.gchecpl.exeHelloWorld.oMakefiledx.cgnome-termtnal.desktopke.cpress.cdx.exehello.cke.exepress.exeIs命令显示完毕/home/teache「/桌面▲▲—八——Welocme!teacherthetimeis:21:44:27thecalofthemonthcEdttFileeComputerExitInputyourchoice:eShowafile©Enterfilename:bthefilenoexister-VtrtualBox:Welocme!teacherthetimeis:21:46:27thecalofthemonthEditFileComputeExitInputyourchoice:rAdd:n=7theend!Qteacher@teacher-VirtualBox:〜/桌面Inputyourchoice:Welocme!teacherthetimeis:21:46:42thecalofthemonthEditFileComputeExitInputyourchoice:Bye
4、编写Makefile文件1简单的makefile文件,并执行建立多个c生成一个链接文件a建立下面三个源程序HelloWorld.c源程序#includestdio.h#include“b.c”#includec.hintmainvoidprintfHHelloWorld!yangxing\nH;bb;cc;return0;b.c源程序如下bbprintfHasasasasas\nn;c.h源程序如下:ccprintfncccccccccccccccccccc\nn;b创建Makefile文件仅拷贝下面代码内容到Makefile文件中:CC=gccEXEC=HelloWorldOBJS=HelloWorld.oall:$EXEC$EXEC:$OBJS$CC$LDFLAGS-o$@$OBJSclean:-rm-f$EXEC*.elf*.gdb*.oc)在linux终端,输入make命令此命令将执行Makefile文件.make将生成HelloWorld可执行程序.〜/桌面$makegcc-c-oHelloWorld.oHelloWorld.cInfileincludedfromHelloWorld.c:2:0:b.c:l:l:warning:returntypedefaultstotnt[-Wtnplicit-tnt]bbAInfileincludedfromHell.oHorld.c:3:0:c.h:l:l:warning:returntypedefaultstotntccAgcc-oHelloWorldHelloWorId.o_teacherQteacher-VirtualBox:**/桌面$./HelloWorId实验结果:teacherQteacher-VtrtualBox:〜/桌面$./HelloWorIdHelloWorld•yangxingasasasasascccccccccccccccccccc.teacher@teacher•VtrtualBox:〜/臬面$♦
5、实现定时启动为当前用户创建cron服务
(1)键入crontab-e编辑crontab服务文件,选择第二项编辑器teacherQteacher-VirtualBox/桌面$crontab-enocrontabforteacher-usinganemptyoneSelectaneditor.TochangelaterrunSelect-editor1•1/bin/ed/bln/nano•—easiest/usr/bin/vimatinyChoose1-3
[2]:2crontab:installingnewcrontab-/tnp/crontab-jgX37W/crontabH:23:badhourerrorsincrontabfilecan*tinstall.Doyouwantto「et「ythesameedity/ny-文件内容如下*/2****/bin/sh/home/admin/deleteFile.sh表示每隔2分钟间隔执行一次3010***ls/home/demo/a.txt表示10:30执行此命令3510***./a.exe/home/demo/b.txt用ctrl+X保存文件并退出#daemonsnotionoftimeandtimezones#:Outputofthecrontabjobsincludingerrorsissentthrouah#emailtotheuserthecrontabfilebelongstounUsse5rected.祟5TM工犬烧工,backupofauyouruseraccounts**1ta「-zcf/var/backups/home.tgz/hone/noreinformationseethemanualpagesofcrontab5andcron8/btn/sh/home/admtn/deleteFile.shls/home/demo/a•txt•/a•exe/home/demo/b.txt2查看该用户下的crontab服务是否创建成功,用crontab-1命令teacher@teache「・VirtualBox:桌面teache「@teacher・VlrtualBox:-/桌面$crontab・lEditthisfiletointroducetaskstoberunbycron.nEachtasktorunhastobedefinedthroughasinglelineindicatingwithdifferentfieldswhenthetaskwillberunandwhatcommandtorunforthetask#Todefinethetimeyoucanprovideconcretevaluesforminutemhourhdayofmonthdonmonthmonanddayofweekdoworusetnthesefieldsforany#Noticethattaskswillbestartedbasedonthecron1ssystemdaemon1snotionoftimeandtimezones.#Outputofthecrontabjobsincludingerrorsissentthrough:emailtotheuserthecrontabfilebelongstounlessredirected.Forexampleyoucanrunabackupofallyouruseraccountsat5a.meveryweekwith:e5••1tar-zcf/var/backups/home.tgz/home/jFormoreinformationseethemanualpagesofcrontab5andcron8mhdomnondowcommand/2****/btn/sh/home/admtn/deleteFlle.sh3010***ls/home/demo/a.txt四_弛一★★■/a・exe/home/demo/b.txt3启动crontab服务一般启动服务用/sbin/servicecrondstart若是根用户的cron服务可以用sudoservicecrondstart这里还是要注意下不同版本linux系统启动的服务的命令也不同,像虚拟机里只需用sudoservicecronrestart即可,若是在根用户下直接键入servicecronstart就能启动服务servicecronstart七“小e「@1:已己11^「・\/1「53180乂~/桌面$sudoservicecronrestart[sudo]teacher的密码teacherQteacher-VirtualBox:*/^®$sudoservicecronrestartteacher@teacher-VtrtuaflLBox:~/M@$ps-ax|grepcron4721Ss6:00/usr/sbin/4728pts/4S+0:00grep••color=autocror4查看服务是否已经运行用ps-ax|grepcronteacher@teacher-VtrtualBox:^/MS$ps-ax|grepcron4721Ss0:00/usr/sbin/cron4728pts/4S+0:00grep--color=autocron
四、结果分析
1、编写shell脚本文件分析运行结果11secho”Is命令显示完毕”//将会显示目录下的所有文件2pwdechopwd命令显示完毕”〃回打印出当前终端所在的目录3readchoice输入自己的选择c||e||r||q4:类似c语言中的swicth语句C:选择c会执行以下语句c|Cechonentermonth:nreadmonthechonenteryearnreadyearcal$month$yearsetn+=l••输入一个可读月份,然后再输入一个可读年份,最后在用cal命令打印输入的年份和月份,然后n=n+loE选择e会执行以下语句e|Eecho”ShowafileoEnterfilename:readfileif[-f$file];thenmore$fileelseechothefilenoexist”exit1fi••需要输入一个文件名如果文件存在就执行more$flle语句,不存在就打印thefilenoexist然后结束进程R选择r会执行以下语句r|Rn=ln=n+6echoAdd:n=$n〃••打印结果为Add:n-7Q选择q会执行以下语句:qlQechoBye1exit1;;打印结果为Bye
2、编写Makefile文件运行结果分析定义一个常量CC来表示gcc命令定义一个常量EXEC来表示HelioWorld文件定义一个常量OBJS来表示HelloWorld.o文件选择目标文件HelioWorld可执行目标文件HelioWorld依赖于HelloWorld.o$CC$LDFLAGS-o$@$OBJS表示gccpwd-oHelioWorldHelloWorld.oclean:-rm-f$EXEC*.elf*.gdb*.o
3.编译c程序打印语句为HelloWorld!
五、实验心得经过上机实验后我完成了实验目的,掌握了Linux的基本命令,学会在终端运行c语言程序、shell脚本程序,同时还学习了Makefile的一些的一些基础编写规则以及学会如何实现定时启动,收获了知识和实验经验实验一Linux的初步认识
一、实验目的
1、熟练使用linux常用命令
2、编译C程序
3、编写shell脚本文件
4、编写Makefile文件
5、实现定时启动
二、实验原理linux常用命令c语言编程语法,shell脚本语法,Makefile编写语法规则lLDFLAGS是告诉链接器从哪里寻找库文件
2.makefile的命令行以[tab]键开始©makefile的目标必须放在第一个命令行,如果有多个目标,可以使用:all:target1targettarget
34.VPATH可以设置源文件搜索路径5通配符;
三、实验程序及实验结果
1、熟练使用linux常用命令PS-查看系统的进程tty-查看当前使用的终端df--查看系统的文件系统的空间使用情况du-查看具体某个文件和目录的磁盘空间的占用情况free-查看使用的内存资源的情况一些其他常用的Linux命令cal--显示日历clear--清屏cd--改变当前目录命令chmod--变更档案属性rmdir--删除子目录命令rm--删除文件命令cp-文件复制命令find-查找文件groups查看当前登录用户的组内成员whoami查看当前登录用户名date--显示系统的日期和时间passwd--更改密码的指令pwd--显示目前所在目录的指令mkdir-建立子目录touch-建立一个文件mv-文件改名命令1s一列出指定目录的内容muc@muc:*/lab-lPIDTTY2562pts/O2707pts/0Operationnotpermittedmuc@muc:-*/lab-l$tty/dev/pts/0muc@muc:*/lab-l$dfdf:/run/user/lO00/doc:muc@muc:-/lab-l$du
4.muc@muc:-/lab-l$freemuc@muc:*/lab-l$calbash:cal:commandnotmuc@muc:-/lab-l$datemuc@muc:*/lab-l$calbash:cal:commandnotfoundmucamuc:*/lab-l$dateTue04Apr202308:04:05AMEDTmuc@muc:*/lab-1$passwdChangingpasswordformuc.Currentpassword:1muc@muc:-/lab-l$pwd/home/muc/lab-1muc@muc:-/lab-l$chmodchmod:missingoperandTry1chmod--help1formoreinformation.muc@muc:-/lab-l$rmdirrmdir:missingoperandTry1rmdir--help1formoreinformation.mucamuc:*/lab-l$rmrm:missingoperandTry1rm--help1formoreinformation.|muc@muc:-/lab-l$cpcp:missingfileoperandTry1cp--help1formoreinformation.muc@muc:-/lab-l$findmuc@muc:-/lab-l$Ismuc@muc:-/lab-l$mvmv:missingfileoperandTry1mv--help1formoreinformation.mucamuc:-*/lab-l$imuc@muc:*/lab-l$mvmv:missingfileoperandTry*mv--help*formoreinformation.jnuc@muc:-/lab-l$mkdirmkdir:missingoperandTry1mkdir--help*formoreinformation.smuc@muc:*/lab-l$touchtouch:missingfileoperandTry•touch--help*formoreinformation.muc@muc:*/lab-l$groupsmuccdromfloppyaudiodipvideoplugdevnetdevbluetoothIpadminscannermuc@muc:*/lab-l$whoamimucmuc@muc:*/lab-l$Is显示目录统计指定文件中的字节数、字数、行数,并将统计结果显示输出查看进程pid号功能杀死进程重定向写入amoreamoreb.txt»aIs|head-2head-10***.txt显示文件前10行tail-2a.txthistory显示执行命令的历史./a.out(c执行程序)b(无moreb(无显示文件内容./a.outw执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序su切换用户的工具pstree显示系统进程树wc(WordCount)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出wc-cfilename显示一个文件的字节数wc-mfilename显示一个文件的字符数wc-1filename显示一个文件的行数wc-Lfilename显示一个文件中的最长行的长度wc-wfilename显示一个文件的字数muc@muc:*/lab-l$cd**bash:cd:♦♦:Nosuchfileordirectorymuc@muc:-/lab-l$cd/usr/src/muc@muc:/usr/src$muc@muc:-/lab-l$cd/muc@muc:/$.mucamucIs|wc2265muc@muc:-/lab-l$wca.txt1739a.txtmuc@muc:-/lab-l$la|grepabash:la:commandnotfoundmuc@muc:-/lab-1$Is|grepaa.txtmuc@muc:-/lab-l$psPIDTTYTIMECMD3598pts/000:00:00bash3655pts/000:00:00psmucamuc:-*/lab-l$s|mucamuc:-/lab-l$Is|wc65mucQmuc:-/lab-l$wca.txt1739a.txtmuc@muc:-/lab-l$la|grepabash la:commandnotfoundmucamuc:*/lab-l$Is|grepaa.txtmucamuc:-/lab-1$psPIDTTYTIMECMD3598pts/O00:00:00bash3655pts/O00:00:00psmuc@muc:*/lab-l$kill-9pidbash:kill:pid:argumentsmustbeprocessorjobIDsmucamuc:-/lab-l$kill-9pidhaobash:kill:pid:argumentsmustbeprocessorjobIDsbash:kill:hao:argumentsmustbeprocessorjobIDsmuc@muc:*/lab-l$morea.txtamuc@muc:*/lab-l$moreanihaoyanihaothisismytextoflab.muc@muc:-/lab-l$moreb.txtamore:cannotopenb.txt:Nosuchfileordirectorymucamuc:*/lab-l$Is|head-2aa.txtmucamuc:--/lab-l$|mucamuc:-/lab-l$head-10a.txtnihaoyanihaothisismytextoflab.mucamuc:-/lab-l$tail-2a.txtnihaoyanihaothisismytextoflab.mucamuc:*/lab-l$historysshifconfigyumapt-getinstallbuild-essential5apt-getinstallyumsudo-sapt-getinstallyumsudorootsudo-ssu-ssudo-scd/etc/Is-Ivisudoersmuc@muc:*/lab-l$./a.outJI]3790muc@muc:-*/lab-l$bash:./a.out:Nosuchfileordirectoryw08:43:19up1:121userUSERTTYFROMmuctty2tty2
[1]+Exit127^muc@muc:-/lab-l$suPassword:root@muc:/home/muc/lab-1#|@Dcbian32(备•1江在.一视图网nunic
2.编译c程序代码#includestdio.hintmain{printfHelloworid!;return0;6|运行结果:vihello.cvihello.cgcchello.c-ohello.exe./hello.exeHelloworld!muc@muc:-/lab-l$
3、编写shell脚本文件#scriptname:shell_one#writer:xxxx#selectwhatyoudo#!/bin/bashIsechoIs命令显示完毕”pwdechopwd命令显示完毕”echonWelocme!$LOGNAMEthetimeis:$date+%Techonechonthecalofthemonthcecho“EditFileenecho”ComputernechoExitq#choice为定义的变量名echoInputyourchoice:readchoicecase$choiceinc|Cechoentermonth:1readmonthechoenteryear”readyearcal$month$yearsetn+=l••e|Eecho“ShowafileEnterfilename:readfileif[-f$file];thenmore$fileelseechonthefilenoexistexit1fir|Rn=ln二n+6echoAdd:n=$n〃q|Qecho“Bye”exit1;;*echoillegaloption1echon$choiceisnotofthechoices!esacechontheend!”
(2)存盘后,在命令行终端设置权限:chmoda+xhello.sh$chmoda+xhello.shWelocme!teacherthetimeis:21:44:27thecalofthemonthEditFileComputeExitInputyourchoice:
(3)执行:./hello.sh每次运行时,输入ecq三个字母之一,去完成相关任务FilesystemudevIK-blocks494228UsedAvailableUse%Mountedon04942280%/devtmpfs10240411401012642%/run/dev/sdal7173040614715664014491%/tmpfs51201205120120%/dev/shmtmpfs5120451161%/run/locktmpfs1024001401022601%/run/user/1000。