🌈个人主页:Sarapines Programmer
🔥 系列专栏:《操作系统实验室》
🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。
目录
🪐1 初识Linux OS
🪐2. Linux 操作系统的解密与实战
🌍1. 实验目的
🌍2. 实验准备
🌍3. 实验内容
🌍4. 实验心得
📝总结
🪐1 初识Linux OS
Linux是一种开源的Unix-like操作系统内核,它是基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。Linux内核最初是由芬兰程序员Linus Torvalds在1991年创建的,之后成为自由软件和开源社区的一个主要项目。
以下是Linux操作系统的一些主要特点和组成部分:
内核(Kernel): Linux内核是操作系统的核心,它管理系统资源,如处理器、内存、设备驱动程序等。Linus Torvalds最初编写了Linux内核,它是Linux操作系统的基础。
Shell(命令解释器): Linux操作系统使用命令行界面(CLI),用户与系统交互通过Shell。用户可以通过输入命令执行各种任务,管理文件、进程、权限等。常见的Shell包括Bash(Bourne Again SHell)和Zsh。
文件系统: Linux支持多种文件系统,包括Ext4、XFS、Btrfs等。文件系统负责管理存储设备上的文件和目录,以及文件的权限、所有权等信息。
用户界面: 虽然Linux以CLI为主,但也支持图形用户界面(GUI)。常见的Linux桌面环境有GNOME、KDE、XFCE等,它们提供了直观的用户体验。
软件包管理系统: 大多数Linux发行版都有自己的软件包管理系统,用于安装、更新和删除软件。常见的包管理工具有APT(Debian/Ubuntu)、YUM(Red Hat/CentOS)、Pacman(Arch Linux)等。
网络功能: Linux具有强大的网络功能,支持各种网络协议和服务。它可以作为服务器运行各种网络服务,如Web服务器(Apache、Nginx)、邮件服务器(Postfix、Sendmail)、文件服务器(Samba)等。
多用户和多任务: Linux是一个多用户系统,多个用户可以同时访问同一台机器。它也是一个多任务系统,可以同时运行多个进程。
安全性: Linux以安全性而闻名,系统管理员可以设置用户权限、访问控制列表(ACLs)等来确保系统的安全性。
开源和自由: Linux是开源软件,其源代码可以被任何人查看、修改和分发。大多数Linux发行版是免费提供的,用户可以自由选择、使用和分发。
发行版(Distribution): 由于Linux内核是开源的,不同的组织和社区创建了各种Linux发行版,例如Ubuntu、Debian、Fedora、CentOS、Arch Linux等。每个发行版都有自己的特点和包管理系统。
总体而言,Linux操作系统是一个强大、灵活且可定制的操作系统,广泛应用于服务器、嵌入式系统、超级计算机等各种领域。
🪐2. Linux 操作系统的解密与实战
🌍1. 实验目的
-
掌握 shell 的基本功能和概念。
-
熟悉 Linux 系统的基本操作。
-
实现 Linux 系统的基本管理。
🌍2. 实验准备
-
获取 L inux 镜像文件:下载适用于虚拟机的 Linux 镜像文件,比如 Ubuntu 21.04,从 Ubuntu 官方网站 获取。
-
安装虚拟化软件:安装 VMware Workstation 或 Virtualbox,两者提供简便的虚拟机管理和配置。
-
创建 Linux 虚拟机:打开虚拟化软件,按照指引创建新虚拟机。设置内存为 2GB 或更多,其余选项选择默认值。加载下载好的 Linux 系统 ISO 镜像文件,启动虚拟机完成 Linux 系统安装。
🌍3. 实验内容
(1)在UNIX/Linux系统中,用户登录到系统后,可以看到一个shell提示符(#或$)。用户可以在提示符后面输入任何命令及参数如
$date #以默认方式显示日期和时间
$date -u #传统UNIX风格选项
$date --utc #GNU风格选项
$ls -l /etc/passwd #默认式或-u。传统UNIX风格
$ls -l -n /etc/passwd #传统UNIX风格选项
$ls -l --numeric-uid-gid /etc/passwd #混合使用
$ls -ln --time-style=iso /etc/passwd #同上
(2)Bash,为每个用户在~/.bash_history文件内预设了1000条记录的历史,并为每条记录一个编号,使用history [num]命令查询历史记录。
history 20
而使用history则可以输出所有的指令记录。
history
(3)单击“继续”按钮,选择“正常安装”和“安装 Ubuntu 时下载更新”。若要重新执行某条历史记录的命令则可以使用格式: $ !记录编号
(4)指把命令的标准输出保存到文件中。有两种方式:覆盖方式(>)和追加方式(>>)。例如:
$ ls > mylist.txt #覆盖方式
$ ls /usr >> mylist.txt #追加方式
(5)标准输入重定向指让命令的标准输入从指定的文件中读取,也就是说,输入不来自键盘,而来自一个指定的文件。
$ wc /etc/passwd #统计/etc/passwd的信息。
$ wc < /etc/passwd #标准输入定向到/etc/passwd
$ wc < /etc/passwd >> usercount #标准输入重定向/etc/passwd,标准输出重定向到文件usercount
$ wc #交互方式,从键盘数据,按^D结束
(6)实现管道机制的符号是“|”,其方法为:
cmd1 | cmd2 | … | cmdn
例如:
$ ls -l /dev | wc -l
$ cat /etc/passwd | grep "root:"|wc -l
(7)tee命令读取标准输入,并将其内容同时写到标准输出和指定文件,其用法为:tee [-ai] [files].#将当月日历表显示到屏幕的同时也保存到文件calendar中
$ cal | tee calendar #将根目录短式列表显示到屏幕上的同时也保存到文件f1和f2中
$ ls / | tee f1 f2
(8)单击“继续”按钮,进入正式的安装界面,安装过程中需要在线下载
软件包。在UNIX/Linux系统中,用户可以定义自己的变量。定义后的变量就像在其他程序设计语言里一样被引用。引用变量时需要使用“$”作为变量名的前导字符。
变量的定义方法如下:
var_name=var_value
变量的定义和使用示例如下:
$ x=18 #定义变量x,其值为18
$ y='I am a student' #定义变量y,值为'I am a student'
$ echo $x $y $HOME #显示变量x,y和环境变量HOME的值
$ z="$y, I am $x ." #由变量x和y定义变量z
$ echo $x $y $z
(9)环境变量可用命令env、export或set来查询,比如:
$ export #显示所有的环境变量
$ env #同上。
问题:这里由于前面已有$,再次输入$env或$export所以没反应
解决:只需输入env或export即可显示输出.
(10)返回值可在命令刚刚执行完毕后,通过$?来访问。比如:
$ ls /dev/sd* #显示系统中的SCSI硬盘设备
$ echo $? #显示返回状态(值)
1.列目录内容(ls) dir
2.建立目录(mkdir) md / mkdir
3.删除目录(rmdir) rd / rmdir
4.改变工作目录(cd) cd / chdir
5.显示当前目录(pwd) cd
(11)将命令行参数中的字符串或变量的值写到标准输出。默认情况下,每个echo命令执行完毕后会产生一个换行符,如果不带参数执行此命令,将输出一个空行。用法为:
echo [options] string ...
参数说明-e:用于处理转义字符;-n:用于抑制默认的换行符;-E:用于抑制对转义字符的处理
$ echo Hell I am echo . #显示字符串常量
#不处理转义字符
$ echo -E "My cell phone number is:\n13903750000"
#处理转义字符
$ echo -e "My cell phone number is:\n\t13903750000"
$ echo -n "I am student, " #不处理换行
$ echo "My name is Bill Joy" #以上命令的输出在同一行上
(12)read从标准输入上读入一行,并将它读到的内容按分隔符分隔的字符串传递给相应变量。若值的个数大于变量个数,则多余的部分赋给最后一个变量;若值的个数小于变量个数,则后面多余的变量被置空。如果没有指定变量名,则默认使用REPLY作为变量名。用法为:
read [-d delim] [ -n num] [-p prompt] [-r] [-s] [-t time] var1 var2 …
(13)进程树及进程状态查询(pstree)
# pstree #显示系统进程树
# pstree -p| more #分屏显示系统进程树
# pstree -p | grep vsftpd #查询进程vsftpd
# pstree user #显示指定用户(比如root)的进程
🌍4. 实验心得
-
基础掌握与操作熟练 通过本次实验,我成功掌握了shell的基本功能与基本概念,初步熟悉了Linux系统的基本操作,并成功实现了对Linux系统的基本管理。在操作中,我发现了同一个显示日期可以有多个不同的指令,同时使用history [num]时,不论指令是否可运行,都能够正确显示出来。
-
命令结合与输入输出处理方法 实验过程中,我深刻理解了将一个程序或命令的输出作为另一个程序或命令的输入的两种方法。通过临时文件将多个命令或程序结合在一起,以及通过通道机制,我能够更灵活地组织和执行多个命令,提高了操作效率。在此过程中,我注意到环境变量输入时,使用命令$env和$export未能正确显示结果,后来发现只需输入env和export即可,因为已经包含了$符号。
-
细致观察与细节注意 在实验中,我发现了一些细微但重要的差异,例如在使用echo [options] string ...时,-e与-E的区别。我学到了-e可以识别转义字符,而-E则无法识别,将其视为普通字符串处理。这种对细节的敏感观察帮助我更加准确地使用命令,防止由于遗漏细节而产生错误。
📝总结
Linux操作系统的领域就像一片未被勘探的信息大海,引领你勇敢踏入开源系统的神秘领域。这是一场独特的学习冒险,从基本概念到系统架构,逐步揭示更深层次的操作系统原理、命令行工具和高级系统管理的奥秘。
渴望挑战Linux操作系统的学习路径和掌握系统管理技术?不妨点击下方链接,一同探讨更多Linux操作系统的奇迹吧。我们推出了引领趋势的💻 Linux专栏:《探秘Linux | 操作系统解密》,旨在深度探索Linux的实际应用和创新。🌐🔍