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);
②passwd mytest(给mytest用户设置密码)
6.用mytest登录,用户注销或退出(logout, exit)
①logout,exit(注销或退出用户)
②输入mytest及刚才设置的密码,就登录了mytest账户
7.转换用户身份(su)
su root :切换到root用户;
su mytest:切回mytest用户
(二)文件操作命令
8.显示当前工作目录,显示当前目录下的内容,列出所有文件和目录(包括隐含文件)(pwd,dir, ls)
①pwd显示当前目录:/home/mytest
②dir显示当前目录下的所有目录:anaconda-ks.cfg Documents Music Public
Desktop Downloads Pictures Templates Videos
③ls显示所有文件及目录:anaconda-ks.cfg Documents Music Public Desktop Downloads Pictures Templates Videos
9.建立一个新目录test,并建立其子目录t1,t2和t3,进入t1子目录(mkdir, cd)
①mkdir test(新建一个test目录);
②cd test(进入test目录);
③mkdir t1 t2 t3(建立三个子目录t1 t2 t3);
④cd t1(进入t1子目录);
10.在t1目录下,建立一个空文件aa(touch)
touch aa(建立空文件aa)
11.用vi编辑器建立一个源文件bb,输入3到5行文字,然后保存并退出
①vi bb;(创建bb文件并编辑);
②i(插入);
③输入内容:aaaaa
Bbbbb
Ccccc
Ddddd
④etc(退出);
⑤:wq(保存并退出)
12.将aa和bb复制到t2目录下,将t2目录的bb文件移动到t3子目录下并改名
①cp aa bb /home/mytest/test/t2(将aa bb复制到t2目录下)
②cd /home/mytest/test/t2(先进入t2这个目录)
mv bb /home/mytest/test/t3(把bb移动到t3目录下)
13.显示aa文件和bb文件的内容(cat)
①cat /home/mytest/test/t1/aa(显示aa的内容)
②cat /home/mytest/test/t1/bb(显示bb的内容)
14.分页显示一个大文件(more, less)
cat /etc/passwd | more
cat /etc/passwd | less
15.在文件bb中查找某个特定的字符串(grep)
grep cc /home/mytest/test/t1/bb(在bb中找cc字符串)
16.查找某个特定文件(find)
find bb(在所有目录中找bb文件)
17.练习history命令,并执行其中一条历史命令;快速重复执行上一条命令
①history(显示所用过的命令)
②!44(执行历史记录中的第44条命令)
18.将ls显示文件的结果,分别覆盖写和追加写到一个新文件中(> 和>>)ls> test.txt(将显示结果覆盖写到test.txt)
ls >>test.txt(将显示结果追加写到test.txt)
19.练习压缩命令和解压缩命令(gzip 和gunzip)
①gzip bb压缩bb文件
②gunzip bb 解压bb文件
20.删除一个文件(rm命令)
rm bb.gz(删除刚才压缩的文件bb.gz)
21.删除一个目录,如test/t11/t3子目录
rmdir /home/mytest/test/t3(删除t3子目录)
22.删除一个用户mytest及其主目录中的内容(userdel)
userdel -r mytest
实验二
实验名称:Vi编辑器的使用
实验时间:2学时
实验目的:熟练掌握Vi编辑器的基本使用方法。
实验内容
1.练习Vi编辑器的启动、保存和退出等操作。
①vi test.txt(创建test.txt文件并编辑)
②i(插入数据)
③输入文字:i am zxy
④etc(退出编辑)
⑤:wq(保存并退出编辑器)
2.用vi编辑器建立一个源文件hello.c,打印出hello world。使用gcc进行编译。若编译不正确,则对上述文件进行修改。最后执行该程序。
①vi hello.c(创建hello.c文件并且进入vi编辑器);
②i(插入数据即开始编译);
③输入内容:#include
main()
{
printf("hello world \n");
}
④etc(退出编辑)
⑤:wq(退出vi编辑器并保存)
⑥gcc -o hello hello.gcc(gcc编译hello.c并生成可执行文件hello)
⑦./hello(执行hello,打印出hello world)
实验截图:
3.练习使用Vi编辑器在命令模式下的各种操作:移至行首、行尾、跳到指定行、文件内容的增\删\改操作(i, dd, x,#dd,#x),恢复上一次操作(u),搜索指定的字符串、复制操作等等。
①移至行首:数字"0"或者功能键"HOME"
②移至行尾:"$"或者功能键"END"
③跳到指定行:"nG"(移动到此文件的第n行)
④插入文件(增):"i"
⑤删除:dd(删除光标所在的一整行)x(向后删除一个字符)X(向前删除一个字符)
⑥#dd(注释掉dd这一行)
⑦恢复上一次操作:"u"
⑧搜索制定字符串:"/word"(向下寻找一个名为word的字符串)
"?word"(向上寻找一个名为word的字符串)
4.用vi编写一个count.cpp文件,进行简单的四则运算,例如“2+3=?”,可以接受键盘输入的两个数和一个运算符号,并在控制台输出结果。
①vi count.cpp(编辑count.cpp)
②i(插入数据即编辑内容)
③输入c++源码:
#include
using namespace std;
void add(int a, int b)
int main()
{
int x,y,sum;
count<<"Enter two numbers:"<<'\n';
cin>>x;
cin>>y;
sum=add(x,y)
}
int add (int a,int b)
{
int c;
c=a+b;
return c;
}
④etc(退出编辑模式)
⑤:wq(退出编辑器并保存)
⑥g++ -o sum count.cpp(g++编译count.cpp并生成可执行文件sum)
⑦./sum(执行可执行文件sum)
⑧输入5
输入6
输出:The sum is 11.
用GCC编译count.cpp程序,并执行。
①g++ -o sum count.cpp(g++编译count.cpp并生成可执行文件sum)
②./sum(执行可执行文件sum)
③输入5
输入6
输出:The sum is 11. 实验截图:
实验三
实验名称:文件权限的管理
实验时间:2学时
实验目的:熟练掌握用户和组的建立,文件权限的修改等方法。实验内容
1.建立2个组(神仙组,妖怪组)
在root用户下操作:
①groupadd yaoguai
②groupadd shenxian
2.建立4个用户:悟空、八戒、唐僧、沙僧,并设置用户密码
在root用户下操作:
①useradd wukong
②useradd bajie
③useradd shaseng
④useradd tangseng
⑤passwd wukong
⑥passwd bajie
⑦passwd shaseng
⑧passwd tangseng
实验截图:
3.把悟空、八戒放入妖怪组在root用户下操作
①usermod -g yaoguai bajie
②usermod -g yaoguai wukong 4.把唐僧、沙僧放入神仙组在root用户下操作
①usermod -g shenxian tangseng
②usermod -g yaoguai shaseng
实验截图:
5.用悟空建立一个文件(monkey.cpp),该文件要输出I am monkey
①登录到wukong账户下
②vi monkey.cpp
③i
④编辑内容:
#include
using namespace std;
main()
{
count<<"i am a monkey"< } 实验截图: 6.给八戒一个可以r w 的权限 用root或悟空用户改 ①chmod 770 /home/wukong(给同组用户进入wukong主文件夹的权限) ②chmod 760 /home/wukong/monkey.cpp 实验截图: 7.八戒修改monkey.cpp文件,加入一句话i am a pig ①登录八戒用户 ②vi /home/wukong/monkey.cpp ③i(修改) ④g++ -o pig money.cpp ⑤./pig 实验截图: 8.唐僧、沙僧对该文件没有权限 9.把沙僧放入妖怪组 usermod -g yaoguai shaseng 实验截图: 10.让沙僧修改文件monkey.cpp的monkey,加入”我是沙僧,我是妖怪!” ①登录shaseng ②vi monkey.cpp ③i(加入i am shaseng,i am yaoguai) ④etc(退出) ⑤:wq(保存并退出编辑器) ⑥g++ -o shaseng monkey.cpp ⑦./shaseng 实验截图: 实验四 实验名称:Shell编程 实验时间:2学时 实验目的:熟练掌握Shell程序的创建过程,能够编写Shell程序。 实验内容 1.请批量创建一个班的用户,每个班为一个组:class110608或class110609. 用户名为:学号+昵称 能够自动删除所创建的用户。每成功创建或删除一个用户,在屏幕上显示用户名 ①vi sh01.sh ②i(编辑内容) ③输入内容如下: #!/bin/sh #Program: # this program is to add 30 users at once #History: 2014/05/12 zxy first release PATH=/bin:/sbin:/usr/bin/:/usr/sbin/:/usr/local/bin:/usr/local/sbin:~/bin export PATH i=1 groupadd class110609 while [ ${i} -le 30 ] do if [ ${i} -le 9 ] then USERNAME=std0${i} else USERNAME=std${i} fi useradd ${USERNAME} echo "$USERNAME" i=$(($i+1)) done ④执行程序:sh sh01.sh ⑤查看是否创建用户成功:cat /etc/passwd ⑥实验截图: 2.输入一个数字n,并输出n的阶乘。 ①vi sh02.sh ②i(编辑内容) ③输入内容如下: #!/bin/sh #Program: # this program is to caculate the param of your input #History: # 2014/05/15 zxy first release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH read -p "please input a number to caculate its param: " nu if [ $nu -eq 0 ] then echo -e "$0 no Params.\a\n" exit 0 fi x=`echo $nu | awk '/[^[:digit:]]/ { print $0 } ' ` if [ "x$x" != "x" ] then echo -e "Input: $* error!\a" exit 1 fi fact=1 tmp=1 while [ $tmp -le $nu ] do fact=$((fact*tmp)) tmp=$((++tmp)) done echo "The result is : $fact" ④执行程序:sh sh02.sh ⑤输入:10 结果显示:The result is : 3628800 3.创建一个shell程序,计算并输出1+2+3+4+......+100的值。 ①vi sh03.sh ②i(编辑) ③输入下面程序: #!/bin/bash #Program: # Use loop to caculate "1+2+3+...+100" result. #History: # 2014/05/13 zxy first release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr:/~bin export PATH s=0 i=0 while [ "$i" != "100" ] do i=$(($i+1)) s=$(($s+$i)) done echo "the result of '1+2+3+...+100'is ==> $s" ④运行脚本:sh sh03.sh ⑤结果显示:the result of '1+2+3+...+100'is ==> 5050 实验截图: 实验五 1.建立自己的samba服务器,并实现windows到linux的访问,可以进行文件的传输。设置某个用户只读的权限。 ①挂载含samba服务器的iso镜像 ②查看是否已安装samba rpm -q samba 若未安装,继续。否则直接使用samba ③拷贝samba的rmp包到/home目录 cp samba* /home ④开始安装(顺序) a)rpm ‐ivh samba-common-2.2.7a-7.9.0.i386.rpm b) rpm –ivh samba-client-2.2.7a-7.9.0.i386.rpm c) rpm –ivh samba-2.2.7a-7.9.0.i386.rpm ⑤创建一个用户zxy useradd zxy passwd 123456 ⑥给youyou设置samba密码 --将/etc/passwd中的用户都加到smbpasswd中 cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd --设置密码 smbpasswd 123456 ⑦vi /etc/samba/smb.conf 设置read only=yes 2.写一个crontab调度程序,使得每天晚上23:30备份一个特定的文件,并注明备份日期。 Mysql数据库的备份: ①vi /backup/backupday.sh ②#!/bin/sh #basedir=/backup/dairy PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH basefile=$basedir/mysql.$(date +%Y-%m-%d).tar.bz2 basefile=$basedir/cgi-bin.$(date +%Y-%m-%d).tar.bz2 [! -d "$basedir"] && mkdir $basedir cd /var/lib tar -jpc -f $basefile1 mysql cd /var/www tar -jpc -f $basefile2 cgi-bin ③chmod 700 /backup/backupday.sh ④vi /etc/crontab 写入: 30 23 * * * root /backup/backupday.sh