linux操作系统实验

时间:2024-03-20 15:07:07

一、实验实习目的及要求
通过练习Linux操作系统的基本操作和进行Shell程序设计,使得学生能掌握Linux操作系统的使用,通过设计Linux设备驱动,帮助学生深入理解Linux内核工作原理和实现方法,巩固和加深对现代操作系统原理的理解,培养学生的自主实践和自主学习能力。
二、实验实习设备(环境)及要求(软硬件条件)
Ubuntu18.04
三、实验实习项目、内容与步骤及实验实习所得结果及分析
Linux shell程序设计
1.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。
(1)fileback.sh
#!/bin/bash
#在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下
形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。
if [!-e “/root/bak”];
then
mkdir /rootbak
fi
cd /root/bak //回到目录/root/bak
d1=‘date+%d’ //判断是否为每月特定的日子
//提取日期中的年月日
yymmdd=‘date+%Y%m%d’
if [ d 1 = = ′ 0 1 ′ ] t h e n b a c k f i l e n a m e = d1=='01'] then backfilename= d1==01]thenbackfilename=yymmdd’_etc.tar.gz’
echo $backfilename
tar zcvf $backfilename /etc/ echo “fileback finished!”
fi

(2)crontab使用 crontab -e //添加一个计划任务
在末尾加上0 0 1 * * /usr/bin/fileback.sh

(3)crontab -l //查看我们添加了哪些任务

(4)ps aux|grep cron //任务在创建之后便创建了一个当时时间的文件

(5)sudo tail -f /var/log/syslog //查看到执行任务命令之后在日志中的信息反馈

(6)crontab -r //删除当前的crontab文件

  1. 用Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到/dev目录下。
    (1)创建cdev文件

(3)写cpdev.sh文件
#! /bin/bash
#cpdev.sh
#用Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到/dev目录下。
echo “please input filename:”
read FILENAME
if [ -c $FILENAME ]
then
echo “It’s c device file”
cp $FILENAME /dev/
elif [ -b $FILENAME ]
then
echo “It’s b device file”
cp $FILENAME /dev/

else
echo “It’s not c or b device file”
fi

(4)运行cpdev.sh

3.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。
(1)class1.sh
#!/bin/bash
#class1.sh
#设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的
形式为stdxx,其中xx从01到30。
sudo groupadd class1
for i in $(seq 1 30)
do
if [ i − l t 10 ] ; t h e n u s e r n a m e = " s t d 0 " i -lt 10 ]; then username="std0" ilt10];thenusername="std0"i
else
username=“std”$i
fi
sudo useradd -G class1 $username
done

(2)运行结果

(3)查看用户和组,cat /etc/passwd

(4)查看用户所在的组,id std30

遇到的问题及解决方案:
(1)循环出现错误。
linux操作系统实验

因为我在执行.sh文件时采用命令sh class1.sh。
linux操作系统实验

(2)无法锁定/etc/passwd
linux操作系统实验

权限问题,在添加组和用户命令前加sudo

四、实验实习结果分析和(或)源程序调试过程
(1)写0 0 1 * * /usr/bin/fileback.sh时中间没空格

linux操作系统实验
linux操作系统实验

(2)Char.c中,read/ioctl不符合头文件定义的格式

linux操作系统实验

(3)在插入模块时遇到权限问题,用了sudo还是不行,最后发现是因为自己装的双系统,需要进入BIOS页面将security boot改为disabled
linux操作系统实验
linux操作系统实验

(4)编译test.c文件是打开文件不允许,说权限不够。需要给字符设备改写的权限
linux操作系统实验
linux操作系统实验