Linux核心笔记
深入理解linux内核笔记1
郑重声明:未经本人允许,不得用于商业或非商业的转载和使用,如有需要请联系:yrj1978@hotmail.com引子为什么要写这个笔记:1,这本书的中文版翻译了太垃圾,没法阅读。
阅读英文原版,可以很好的理解作者的思路。
作此笔记备忘2,一直以来学习LINUXkernel的知识缺乏系统化,借对这本书的学习,系统化的学习一下LINUXkernel。
3,自己一直在做一个toosmall,toosimple的单进程,特权模式,64bit保护模式的称不上OS的OS,已经做完了bootloader,构思kernel的实现的时候,困惑在内存管理的实现上,阅读这本书,希望能有利于自己的OS的编写。
4,克服惰性,多读书,希望一天能阅读5页,争取半年内阅读完这本原版700多页的巨著。
不足:我不可能完全理解LINUX内存管理的精髓,肯定有很多地方理解错误。
希望大家能够指正,以便提高,谢谢。
学习方法:可能您第一次阅读的时候很多地方都不理解,不用担心。
那您可能需要阅读一些文件系统的知识。
或者阅读全部笔记后,再回头阅读,有些地方您就理解了。
言归正传:一、概要可用工具CodeViz:生成代码调用关系图的工具,这个工具我现在还没有去使用,有兴趣的可以自己试试去建立调用关系图。
http://www.csn.ul.ie/ ̄mel/projects/codeviz/Linuxcrossreference(LXR):以web的方式阅读和查找LINUX内核源代码的工具。
这个工具安装相当麻烦,我建议直接到它的官方网站直接读代码。
http://lxr.linux.no/linux+v2.6.24/模块LINUX内存管理代码模块主要分为4个部分:1.Outofmemory代码在mm/oom_kill.c貌似用于杀进程的时候对内存的操作2.虚拟内存的分配代码在mm/vmalloc.c3.物理内存页面分配代码在mm/page_alloc.cVMA(virtualmemoryaddresses)的创建和进程内的内存区域的管理4.这些模块,贯穿与其他kernel代码之中,形成更复杂的系统模块,如页面替换策略,buffer的输入输出等中间插段广告Linux文化T恤,淘宝销售,有兴趣的可以购买。
linux笔记全(无图版)
linux笔记全(⽆图版)1、ls 查看当前⽬录下的所有内容⿊⾊的是⽂件,蓝⾊的是⽂件夹,也就是⽬录2、rm -f anaconda-ks. cfg 彻底删除⽂件(如不确定,则需要先保存备份,也就是快照)3、ifconfig 查看⽹卡的配置信息(ip地址等)4、ifconfig ens33 192.168.18. 201 /24(⽹络地址/⼦⽹掩码)更改ip地址5、systemctl restart network 重启⽹络服务6、桥接模式,直接可以进⾏通信(同⼀⽹段,配置ip)7、能不能通信的2个条件:在同⼀个物理⽹络内,ip地址也在同⼀⽹段内8、仅主机模式,虚拟机和物理机不能进⾏通信,相当于虚拟机和物理机进⾏了隔离与笔记本(真机)通信截图9、NAT模式,⾃动分配⽹络地址和⽹关,以及dns,可以直接上⽹可以访问互联⽹内的主机,但互联⽹内的主机不能访问本机(max特点)10、route -n 查看⽹关11、cat /etc/resolv. conf 查看dns(注意cat后⾯有⼀个空格,空格不可少)12、验证nat模式可以直接上⽹13、shell:通常指linux的字符界⾯,图形界⾯和字符界⾯都属于shell,但图形界⾯的shell常称为gui,字符界⾯的shell常称为cli14、cat /etc/shells 查看⽂件内容(linux⾥⾯提供的所有的shell)15、linux默认使⽤的shell是bash的shell16、echo $SHELL 查看当前使⽤的shell17、shell默认指的是bash,它的应⽤是最⼴泛的18、linux是彻底的多⽤户多任务,它可以直接多个⽤户同时进⾏操作19、ctrl+alt+f2-f6 对应5个shell ctrl+alt+f1 开始图形界⾯shell 作⽤:如何开始shell(也就是如何打开命令界⾯)20、虚拟终端的缩写为tty, 在字符界⾯下执⾏“tty"命令就可以显⽰⽤户⽬前所在的终端编号(终端名称)。
linux操作系统课程学习笔记,我的Linux学习笔记·Linux操作系统基础
linux操作系统课程学习笔记,我的Linux学习笔记·Linux操作系统基础今天的笔记主要是关于Linux操作系统根底的相关学问。
那就从我⾯前的电脑开端讲起。
计算机和操作系统计算机主要包括五个部分:运算器,控制器,存储器,输⼊设备和输出设备。
通常,运算器,控制器再加上其他⼀些部件如寄存器等构成了我们通常所说的CPU(central processing unit),存储器则主要是内存。
运算器,控制器和存储器可以实现数据的处理.但是数据从何⽽来,运算之后的结果去往哪⾥?这就需要输⼊设备和输出设备(I/O设备)。
我们通常⽤到的输⼊设备包括键盘⿏标等,输出设备为屏幕,打印机等。
值得⼀提的是,计算机中有个叫做硬盘的东西,它并不是存储器,⽽是⼀个I/O设备。
在将数据读取到内存时,它是⼀个输⼊设备;⽽将结果保存到磁盘时,它就变成了⼀个输出设备。
这么多设备整合在⼀起,就成了⼀台计算机。
它可以接收我们的指令(键盘⿏标),通过运算(CPU),把结果展⽰给我们(屏幕,硬盘等)。
但是这么多硬件是如何协调作⽤,共同完成⼀个任务⽽不会我⾏我素地乱来呢?我们需要⼀个东西,它可以控制硬件有序地⼯作,各⾃执⾏⾃⼰的任务,这个东西就是操作系统(Operating System)。
操作系统是⼀个特殊的软件,它的任务就是硬件管理—控制CPU的运算,控制内存的分配,控制计算机的⼏乎⼀切。
假如⼀台电脑没有操作系统,它可能只是⼀个艺术品,或者⼀堆废铁。
⼀个完整的操作系统包括内核和⼀些辅助软件。
内核的主要任务就是进⾏硬件管理,它是⼀个操作系统最基础最底层的东西。
内核若想很好地控制硬件并使其发挥相应的功能,需要和硬件相识相知相爱,他俩可以成为完美的⼀对,全都仰仗于驱动的帮忙。
驱动是硬件的灵魂,它向操作系统提供了访问和使⽤硬件的接⼝,以便在某项任务中最⾼效地调⽤硬件。
什么是LinuxLinux就是⼀个操作系统,它可以管理整个计算机硬件,并且可以接收我们的指令,来指挥硬件完成相应的任务,并把结果反馈给我们。
Linux学习笔记——rmdir命令和rm命令
■ rmdir命令[只适合删除空目录]功能是删除一个空的目录。
● -v 选项
提示删除操作成功,如图所示:
● -p 选项
如果一个目录及其子目录都是空的,其中在删除最子目录的时候,使用-p选项,则这些相关的目录都会被删除掉。
如图所示:
■ rm命令[多用于删除分空目录/文件]
功能是删除文件或者目录。
如果目录不为空的话,使用rm命令,配置必要的选项就能够实现删除非空目录。
● -v 选项
可以直接删除一个或者多个文件,并且使用-v选项给予提示。
如图所示:
当然,也可以使用通配符来指定要删除的文件。
例如删除文件名以c结尾,扩展名为dic的文件,如图所示:
● -f 选项
不管要删除的目录是否存在,都执行,不给予提示。
假设/mydir/noedir 根本不存在,但是删除时指定为这个目录,使用-f选项就可以不提示目录不存在的错误。
如图所示:
● -r 选项
该选项实现删除指定目录下的所有文件。
如图所示:
● 组合选项
如果要删除一个非空的目录,就需要使用-r和-f选项组合,或者直接使用-rf选项。
一个例子,如图所示:。
linux学习笔记5--命令rmdir和rm
linux学习笔记5--命令rmdir和rm昨天学习了创建⽬录的命令mkdir ,接下来学习⼀下linux中删除⽂件和⽬录的命令: rm命令。
rm是⼀个危险的命令,使⽤的时候要特别当⼼,尤其对于新⼿,否则整个系统就会毁在这个命令(⽐如在/(根⽬录)下执⾏rm * -rf)。
所以,我们在执⾏rm之前最好先确认⼀下在哪个⽬录,到底要删除什么东西,操作时保持⾼度清醒的头脑。
rm命令可以删除⼀个⽬录中的⼀个或多个⽂件或⽬录,也可以将某个⽬录及其下属的所有⽂件及其⼦⽬录均删除掉。
对于链接⽂件,只是删除整个链接⽂件,⽽原有⽂件保持不变。
注意:使⽤rm命令要格外⼩⼼。
因为⼀旦删除了⼀个⽂件,就⽆法再恢复它。
所以,在删除⽂件之前,最好再看⼀下⽂件的内容,确定是否真要删除。
rm命令可以⽤-i选项,这个选项在使⽤⽂件扩展名字符删除多个⽂件时特别有⽤。
使⽤这个选项,系统会要求你逐⼀确定是否要删除。
这时,必须输⼊y并按Enter键,才能删除⽂件。
如果仅按Enter键或其他字符,⽂件不会被删除。
rmdir命令⽤来删除空⽬录。
当⽬录不再被使⽤时,或者磁盘空间已到达使⽤限定值,就需要删除失去使⽤价值的⽬录。
利⽤rmdir命令可以从⼀个⽬录中删除⼀个或多个空的⼦⽬录。
该命令从⼀个⽬录中删除⼀个或多个⼦⽬录,其中dirname表⽰⽬录名。
如果dirname中没有指定路径,则删除当前⽬录下由dirname指定的⽬录;如dirname中包含路径,则删除指定位置的⽬录。
删除⽬录时,必须具有对其⽗⽬录的写权限。
1.命令格式:rm [选项] ⽂件…2.命令功能:删除⼀个⽬录中的⼀个或多个⽂件或⽬录,如果没有使⽤- r选项,则rm不会删除⽬录。
如果使⽤ rm 来删除⽂件,通常仍可以将该⽂件恢复原状。
3.命令参数:-f, --force 忽略不存在的⽂件,从不给出提⽰。
-i, --interactive 进⾏交互式删除-r, -R, --recursive 指⽰rm将参数中列出的全部⽬录和⼦⽬录均递归地删除。
linux操作系统知识点
Linux 操作系统基础知识概览以下是一些关于Linux 操作系统的常见知识点:1.Linux 基础:●Linux 的起源和发展历史●Linux 的主要组成部分:内核、Shell、文件系统等●常见的Linux 发行版(如Ubuntu、Debian、CentOS 等)●常用的命令行工具和基本命令(如ls、cd、mkdir、rm 等)2.用户和权限管理:●用户账户的创建和管理●用户组的概念和使用●文件和目录的权限设置和管理●sudo 权限和root 用户的重要性3.文件系统:●Linux 文件系统的层级结构●常见的文件系统类型(如ext4、XFS、Btrfs 等)●挂载和卸载文件系统●磁盘和分区管理工具(如fdisk、parted 等)4.进程管理:●进程的概念和属性●进程的创建、终止和管理●进程状态的了解和监控●进程间通信的方式(如管道、信号、共享内存等)5.网络和安全性:●网络配置和网络接口管理●网络命令和工具(如ifconfig、ping、ssh 等)●防火墙和安全性措施(如iptables、SELinux 等)●远程访问和远程管理(如SSH、SCP、rsync 等)6.软件包管理:●软件包管理系统(如apt、yum、dnf 等)●软件包的安装、升级和卸载●软件包的依赖关系和解决依赖问题●软件源和仓库的管理7.Shell 脚本编程:●Shell 脚本的基础语法和结构●变量、条件语句、循环和函数的使用●Shell 命令和管道的组合●脚本的调试和错误处理以上只是Linux 操作系统知识的一些常见方面,涵盖了基础知识、用户和权限管理、文件系统、进程管理、网络和安全性、软件包管理以及Shell 脚本编程等。
要深入学习Linux,建议进一步学习和实践这些知识点,并探索更多高级主题,如网络服务配置、系统性能优化等。
Linux学习笔记一(文件和目录操作)
Linux学习笔记⼀(⽂件和⽬录操作)1.基本shell操作命令解析器--根据命令的名字,调⽤对应的可执⾏程序shell--unix操作系统bash--Linux操作系统(⽂件系统)Linux⽂件系统的存储单元是块在磁盘上存储的时候每个⽂件都有⼀个inode--i节点,保存了⼀些⽂件信息,通过iNode找到对应的⽂件a.快捷键b.虚拟终端history--查询命令的历史记录ctrl+p == 向上的箭头,查询上⼀个命令ctrl+n == 向下的箭头,查询下⼀个命令ctrl+b 向左移动backctrl+f 向右移动forwardctrl+a 移动到⾏⾸ctrl+e 移动到⾏尾ctrl+h 刪除光标前⾯的字符ctrl+d 刪除光标覆盖的字符ctrl+u 刪除光标前⾯的所有字符ctrl+k 删除光标位置到⾏尾的字符ctrl+l或者clear命令清理屏幕c.命令和路径补齐tab智能提⽰键,按⼀次没反应说明有很多符合条件的命令,再按⼀次出现符合条件的命令列表cd ⽬录 + 连续两次tab,显⽰⽬录下⼀级的所有路径d.centos7防⽕墙操作systemctl start firewalld.service 启动systemctl enable firewalld.service 开机启动systemctl stop firewalld.service 停⽌systemctl disable firewalld.service 禁⽌开机启动systemctl status firewalld.service 查看状态firewall-cmd --state 查看状态2.Linux系统⽬录结构ls 路径(查询当前路径下的所有⽂件)/根⽬录下的⽬录说明:/bin bin是binary的缩写,这个⽬录存放着经常使⽤的命令可执⾏程序/boot 存放的是启动Linux时的⼀些核⼼⽂件,包括⼀些连接⽂件以及镜像⽂件(开机启动项)/dev 是Device(设备)的缩写,该⽬录存放的是Linux的外部设备,在Linux中访问设备的⽅式和访问⽂件的⽅式是相同的(Linux奉⾏⼀切皆⽂件,它会把所有硬件外设抽象成设备⽂件存到dev⽬录之下,⽐如⿏标键盘)/etc ⽤来存放所有系统管理所需要的配置⽂件和⼦⽬录/home ⽤户的主⽬录,在Linux中,每个⽤户都有⼀个⾃⼰的⽬录,⼀般该⽬录名是以⽤户的账号命名。
Linux学习笔记之常用命令
重启命令立刻重启(root用户使用)rebootshutdown -r nowinit 610分钟后自动重启(root用户使用)shutdown -r 10在时间为20:35时候重启(root用户使用)shutdown -r 20:35如果是通过shutdown命令设置重启的话,可以取消重启shutdown -c关机命令立刻关机(root用户使用)haltpoweroffshutdown -h nowinit 010分钟后自动关机shutdown -h 10hostname命令查看主机名hostname设置主机名临时修改hostname 主机名永久修改vi /etc/hostname网络服务查看IP信息ip a网络连通性测试ping [选项] 目标主机设置网络信息vi /etc/sysconfig/network-scripts/ifcfg-ens32重启network网络服务service network restart防火墙设置查看防火墙状态systemctl status firewalld关闭防火墙systemctl start firewalld禁止开机启动systemctl disable firewalld主机映射文件修改主机名与IP映射关系vi /etc/hosts目录操作命令查看工作目录(Print Working Directory)pwd切换工作目录(Change Directory)cd [目录位置]列表(List)显示目录内容ls [选项]... [目录或文件名]常用命令选项-l :详细信息显示-a:显示所有子目录和文件的信息,包括隐藏文件-A:类似于“-a”,但不显示“.”和“…”目录的信息-R:递归显示内容创建新的目录(Make Directory)mkdir [-p] [/路径/]目录名统计目录及文件的空间占用情况(estimate file space usage)du [选项]... [目录或文件名]常用命令选项-a:统计时包括所有的文件,而不仅仅只统计目录-h:以更易读的字节单位(K、M等)显示信息-s:只统计每个参数所占用空间总的大小文件操作命令新建空文件,或更新文件时间标记touch 文件名查看文件类型file 文件名复制(copy)文件或目录cp [选项] 源文件或目录… 目标文件或目录常用命令选项-r:递归复制整个目录树-p:保持源文件的属性不变-f:强制覆盖目标同名文件或目录-i:需要覆盖文件或目录时进行提醒删除(Remove)文件或目录rm [选项] 文件或目录常用命令选项-f:强行删除文件,不进行提醒-i:删除文件时提醒用户确认-r:递归删除整个目录树移动(Move)文件或目录mv [选项]... 源文件或目录… 目标文件或目录如果目标位置与源位置相同,则相当于改名显示系统命令所在目录which <选项> command(命令名称)常用命令选项-a:将所有由PATH路径中可以找到的指令均列出,而不止第一个被找到的指令名称文件内容操作命令显示出文件的全部内容cat全屏方式分页显示文件内容more交互操作方法按Enter键向下逐行滚动按空格键向下翻一屏、按b键向上翻一屏按q键退出与more命令相同less查看文件开头的一部分内容(默认为10行)head -n 文件名查看文件结尾的少部分内容(默认为10行)tail -n 文件名统计文件中的单词数量(Word Count)等信息wc [选项] 目标文件常用命令选项-l:统计行数-w:统计单词个数-c:统计字节数查找文件里符合条件的字符串grep [选项] <关键字> <文件…>常用选项-c:计算匹配关键字的行数-i:忽略字符大小写的差别-n:显示匹配的行及其行号-s:不显示不存在或不匹配文本的错误信息-h: 查询多个文件时不显示文件名-l:查询文件时只显示匹配字符所在的文件名–color=auto:将找到的关键字部分加上颜色显示压缩命令压缩(解压)文件或目录,压缩文件后缀为gzgzip [选项] 压缩(解压缩)的文件名常用选项-d将压缩文件解压(decompress)-l显示压缩文件的大小,未压缩文件的大小,压缩比(list)-v显示文件名和压缩比(verbose)-num用指定的数字num调整压缩的速度,-1或–fast表示最快压缩方法(低压缩比),-9或–best表示最慢压缩方法(高压缩比)。
凯哥Linux笔记,精华!
for i in `seq 504` ; do echo -n " $i" ;done
行末加504个空格。//for(i=0;i<=504;i++);do;echo -n " $i";done
数组定义:a=(1 2 3 4 5) a[2]=3,用小括号定义shell数组,其中a=(1 2 3 4 5)可以用a=(`seq -s " " 5`)来代替。注:a=`seq -s " " 5`这样不加小括号的话,a就是一个常量,不再是数组。就对数组全体赋值,最好小括号!!!
crontab文件中的神秘符号“%”
可能会遇到的一个问题是,在第六段中需要使用date生成日志文件名,比如:
0 4 * * * /opt/cron/mysql_dump.sh > /srv/logs/`date +%y-%m-%d`.dump.log
这时会发现crontab怎么也不运行这个mysql_dump.sh,也看不到有日志生成。这是因为在crontab文件中,”%”是有特殊含义的。假如不需要“%”的特殊作用,需要使用转义符转义。上面应该写成:
exp username/password@orcl file=bak.dmp log=bak.log buffer=10240
oracle 备份的关键。
-------------------------------------------------------------------------------------------\
鸟 数字1/数字2 最大各8位,可能有小数
linux知识点整理
Linux实用教程第一章⏹Linux是在GPL(General Public License,通用公共许可证)版权协议下发行的操作系统,是一种类Unix的操作系统,其版权属于Linus Torvalds.⏹GNU是“GNU's Not Unix”的递归缩写。
Stallman宣布GNU应当发音为Guh-NOO以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚,发音与new相同)。
UNIX是一种广泛使用的商业操作系统的名称。
由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。
GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。
不过GNU 计划也开发了大批其他的自由软件。
⏹Linux的应用主要有4个方面:服务器、嵌入式、软件开发、桌面应用。
Linux的长处主要在于服务器端和嵌入式两个领域。
⏹Linux系统的特点:1.开放性2.多用户3.多任务4.良好的用户界面5.设备独立性6.丰富的网络功能7.可靠的系统安全8.良好的可移植性⏹Linux系统一般有4个主要部分:内核、Shell、文件系统、应用程序。
内核版本是在Linus领导下的开发小组开发出的系统内核版本号,由三个数字组成kernel的主版本号x: 次版本号,偶数:表示稳定版本;奇数:开发中版本y: 修正号,表示错误修补次数。
如:稳定版本; 测试版本:什么是发行版本:答:一些组织和厂家,将Linux系统的内核、应用软件和文档包装起来,并提供安装界面、系统配置管理工具等,就构成了Linux发行版本。
第二章Linux通过字母和数字的组合来标识硬盘分区,如“hda1”,其具体含义是:前两个字母表明分区所在设备的类型,例如hd指IDE硬盘,sd指SCSI硬盘;第三个字母表示分区所在的设备,如/dev/hda表示第1个IDE硬盘,/dev/sdb表示第2个SCSI硬盘。
linux学习笔记(系统管理篇)
shell 命令的敲法: 命令 参数 1 参数 2 参数定界:用到” ‘ ‘”(单引号) 用单引号括起的如’abc def ‘是告诉 shell 消 除语法歧义 如要建一文件叫 jack’s daily 却不能用单引号了 ,此时得用 ”\”应写为: 例 如: touce jack\’s\ daily “\”为转意字符,取消反斜杠后一个字符的特殊含义 文件系统 在 unix 中”.”无特殊含义 unix 下区分文件类型的命令 file unix 下是靠文件的头部说明来区分文件格式,所以操作系统不会理会扩展名的 (exe 文件头两字母是 MZ) mount 直接回车是显示当前所 mount 的状态 df 察看磁盘利用状态 磁盘分区 du –h +子文件名 检测文件系统子目录所占空间 pwd 查看当前子目录 unix 下一个文件可以不可读而可执行,对于子目录而言 x 就是另外一层含义了, 称之为检索。对子目录而言 r 就是列表权 (经验:不要安装基于文本界面的多媒体应用程序) 如何修改权限 修改属主: chown [-R] 新属主 文件 -R: 将文件夹中的所有文件也更改掉 修改属组: charp [-R] 先属组 文件 修改权限: chmod [-R] 新权限 文件 新权限有两种表示方法: (1) 直观: 如 rw-r—r— 数字 6 4 4 110100100 (2)字母法: 如 rw-r--r-u g o 修改文件的访问权限不必非得是 root,文件属主也可以 windows 文件权限策略是 ACL,侧重与灵活性; unix 文件系统策略是权限位, 侧重用效率; linux 所有权限都放于一个 16 位的短整数里 linux 特有功能(ext2 ext3 所体现的) :列出所有权限命令:lsattr 设置特殊权限: chattr 连接: 硬连接: 硬连接本质使一个文件有两个文件名和 windows 不同 windows 中文
Linux学习笔记系列(1)
Linux学习笔记系列(1)据说linux很厉害;⼀、 Linux的发展史。
了解⼀个东西,⾸先就要了解他的历史,emmmm,了解,就是不⽤记得,所以,我也只是知道个⼤概,于是乎,我去别⼈的博客复制⼀下他的历史来这⾥放着。
UnixUnix操作系统是⼀个强⼤的多⽤户、多任务操作系统,⽀持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。
⽬前它的商标权由国际开放标准组织所拥有,只有符合单⼀Unix规范的Unix系统才能使⽤Unix这个名称,否则只能称为类Unix(Unix-like)。
GNUGNU是⾃由软件之⽗Richard Stallman在1984年组织开发的⼀个完全基于⾃由软件的软件体系,与此相应的有⼀分通⽤公共许可证(General Public License,简称GPL)。
Linux以及与他有关的⼤量软件是在GPL的推动下开发和发布的。
⾃由软件之⽗ - Richard Stallman 像⼀个神态庄严的传教⼠⼀样喋喋不休地到处传播⾃由软件的福⾳,阐述他创⽴GNU的梦想:“⾃由的思想,⽽不是免费的午餐”。
这位⾃由软件的“顶级神甫”为⾃⼰的梦想付出了⼤半⽣的努⼒,他不但⾃⼰创作了许多⾃由软件,如:GCC、和GDB,在他的倡导下,⽬前⼈们熟悉的⼀些软件如BIND、Perl、Apache、TCP/IP等都成了⾃由软件的经典之作。
如果说Richard Stallman创⽴并推动了⾃由软件的发展,那么,Linus Torvalds毫不犹豫奉献给GNU的Linux,则把⾃由软件的发展带⼊到⼀个全新的境界。
BSD386BSD因为法律问题直到1992年还不能发布,NetBSD和FreeBSD是386BSD的后裔,⽐Linux早。
Linus Torvalds说,当时如果有⾃由的基于386的Unix-like操作系统,他就可能不会创造Linux。
Linux笔记(狂神说)
Linux笔记(狂神说)笔记关注狂神公众号1、概述及环境搭建1.11)我们为什么要学习LinuxLinux诞⽣了这么多年,以前还喊着如何能取代windows系统,现在这个⼝号已经⼩多了,任何事物发展都有其局限性都有其天花板。
就如同在国内再搞⼀个社交软件取代腾讯⼀样,想想⽽已基本不可能,因为⽤户已经习惯于使⽤微信交流,不是说技术上实现不了解⽽是⽼百姓已经习惯了,想让他们不⽤,即使他们⾃⼰不⽤亲戚朋友还是要⽤,没有办法的事情。
⽤习惯了windows操作系统,再让⼤家切换到别的操作系统基本上是不可能的事情,改变⼀个⼈已经养成的习惯太难。
没有办法深⼊到普通⽼百姓的⽣活中,并不意味着Linux就没有⽤武之地了。
在服务器端,在开发领域Linux倒是越来越受欢迎,很多程序员都觉得不懂点Linux 都觉得不好意思,Linux在开源社区的地位依然岿然不动。
尤其是作为⼀个后端程序员,是必须要掌握Linux的,因为这都成为了你找⼯作的基础门槛了,所以不得不学习!2)Linux 简介Linux 内核最初只是由芬兰⼈林纳斯·托⽡兹(Linus Torvalds)在赫尔⾟基⼤学上学时出于个⼈爱好⽽编写的。
Linux 是⼀套免费使⽤和⾃由传播的类 Unix 操作系统,是⼀个基于 POSIX(可移植操作系统接⼝)和 UNIX 的多⽤户、多任务、⽀持多线程和多 CPU 的操作系统。
Linux 能运⾏主要的 UNIX ⼯具软件、应⽤程序和⽹络协议。
它⽀持 32 位和 64 位硬件。
Linux 继承了 Unix 以⽹络为核⼼的设计思想,是⼀个性能稳定的多⽤户⽹络操作系统。
3)Linux 发⾏版Linux 的发⾏版说简单点就是将 Linux 内核与应⽤软件做⼀个打包。
⽬前市⾯上较知名的发⾏版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
Linux知识点总结
第一章1. Linux 是多用户、多任务操作系统。
2. 程序是计算机完成一项任务的指令集合。
3. 数据是由程序使用或者生成的不同类型的信息。
4. 软件分为三大类:(1) 系统软件(2) 应用软件(3) 支撑软件5. 系统软件包括操作系统、编译程序、汇编程序、数据库管理系统、网络软件等。
系统软件对计算机系统的资源进行控制、管理,并为用户的应用和其他程序的运行提供服务。
6. 支撑软件包括编辑程序、查错程序、项目管理程序等。
辅助软件技术人员从事软件开辟和项目管理人员进行项目管理工作的软件。
7. 应用软件是为解决某一类应用需要或者某个特定问题而设计的程序。
8. Linux 提供4 种不同的用户接口:(1) 命令行接口(2) 菜单(3) 图形用户接口(4) 程序接口9. 命令解释程序称为shell。
10. 程序接口也称为系统调用接口。
系统调用时操作系统内核与用户程序、应用程序之间的接口。
11. 内核之外的程序都必须经由系统调用才干获得操作系统的服务。
系统调用只能在C 程序中使用,不能作为命令在终端上执行。
由于系统调用能直接进入内核执行,所以执行效率很高。
12. Linux 解决资源使用过程中的冲突,保证资源最后能被系统再次使用所采取的方法:(1) 通过记录和文件加锁,保证数据的完整性(2) 利用调度进程和审计系统(3) 当系统浮现错误时,提供错误诊断信息(4) 终止运行不正常的进程,甚至在最坏的情况下住手系统13. 软件以是否以营利为目的分为三种模式:(1) 商业软件(2) 共享软件(3) 自由软件14. Linux 用户分为:(1) 个人用户(2) 专业用户(3) 商业用户15. Linux 的特点:(1) 与unix 系统兼容(2) 自由软件和源码公开(3) 性能高和安全性强(4) 便于定制和再开辟(5) 互操作性高(6) 全面的多任务和真正的32 位操作系统16. Linux 的两种版本:(1) 核心版本(2) 发行版本17. 核心版本的序号:major.minor.patchlevelmajor 主版本号minor 次版本号共同构成核心版本号。
高俊峰linux高级架构师笔记
高俊峰linux高级架构师笔记
(实用版)
目录
1.高俊峰的背景和职位
2.Linux 云计算的概念和重要性
3.高俊峰的 Linux 架构实战笔记的主要内容
4.Linux 服务器安全与运维的建议
5.高俊峰对 Linux 高级架构师的职责和要求的看法
正文
高俊峰是一位 Linux 云计算高级架构师,他的工作地点位于黑龙江省大庆市高新技术开发区。
作为一名高级架构师,他的职责主要是负责设计、实现和维护 Linux 云计算平台,确保平台的高性能、高可用性和高安全性。
Linux 云计算是一种基于 Linux 操作系统的云计算技术,它具有开源、免费、可定制性强等特点,因此在近年来得到了广泛的应用。
作为一种新兴的计算模式,云计算对数据中心的硬件、软件和网络等方面都提出了新的挑战,因此需要有专业的人员来进行架构设计和运维管理。
在高俊峰的 Linux 架构实战笔记中,他分享了自己的一些经验和心得。
他认为,一个优秀的 Linux 架构师需要具备扎实的 Linux 基础知识,熟悉各种 Linux 命令和工具的使用,了解 Linux 系统的性能优化和调试技巧,同时还需要掌握云计算的相关技术,如 Docker、Kubernetes 等。
除了技术能力外,Linux 架构师还需要具备良好的沟通能力和团队协作精神,因为云计算平台的建设是一个系统工程,需要多个部门的合作和协调。
在实际工作中,高俊峰也积累了许多关于 Linux 服务器安全与运维
的经验。
他建议,要保障服务器的安全,首先要做好账户和登录安全,删除默认无用的用户和组,限制用户的权限,避免账号被恶意使用。
此外,还要关闭不需要的服务,避免服务器被攻击。
linux学习笔记
4、rm命令(常用)
作用:删除文件或目录,相当于dos下的delete命令;
格式:rm [option] file...
常见形式:rm file1 file2 file3(删除文件123)
f 指明操作对象;
eg:tar cvf /dev/rmt0 file_list
tar cvf a.tar /usr/a(将/usr/a目录下的文件打包成一个文件a.tar)
tar xvf a.tar (将tar文件解开)
16、ftp命令(常用)
eg:chmod a+x file (a+x所有的(u,g,o)都设置可执行的属性)
chmod +r file (为用户(u)设置可读的属性)
chmod u=rwx,g=rx,o-r file (分别为不同的用户和组设置不同的属性)
12、chmod命令(常用)
格式:more filename
eg:more mirro.txt(把文件mirro.txt送到屏幕分屏显示)
3、cp命令(常用)
作用:复制文件或目录,相当于dos下的copy命令;
格式:cp [option] source_file dest_file
常见形式:cp source_file dest_file(拷贝文件)
格式:touch filename
13、prtconf命令(常用,用于sunos)
作用:显示系统的配置信息,包括存储器和外围设备配置;
格式:prtconf
14、lsconf命令(常用,用于AIX)
学习韩顺平Linux系统笔记(经典)
韩顺平LINUX系统笔记第0天开山篇1、linux是一个开源免费的操作系统。
2、学习linux的流程:(1)linux平台上的开发和linux基本操作(2)加强C语言功底:《C专家编程》或者Java语言(3)学习unix环境高级编程(4)Linux应用系统开发/linux嵌入式开发3、书籍推荐:鸟哥的linux私房菜、linux入门到精通、linux内核完全剖析4、学习方法推荐:(1)高效而愉快的学习(2)先建立一个整体框架,然后细节学习(3)用到什么再学什么(4)计算机是做了、练了才会(5)适当的跳过(6)学习linux系统是在琢磨别人怎么做,而不是我认为怎么做第一天1、linux的特点:(1)linux系统时免费开源的(2)linux支持多线程,多用户(3)安全性优良(4)内存和文件管理性能优越2、Linux用户:root(相当于windows的administrator),建议使用普通用户登录,通过su–root切换为身份为管理员3、startx:启动图形用户界面,ctrl+alt+break:切换到控制台环境下4、shutdown now:立即关机shutdown–r now和reboot:立即重启计算机5、注销:logout6、熟悉vi编辑器:vi相当于windows的记事本7、在linux下进行简单的java开发:(1)vi hello.java//创建一个hello.java的文件(2)按"i"进入insert状态,进行文档编辑//编辑一个java文档(3)按"Esc"键退出编辑状态,转换为命令行模式(4)按shift输入冒号,在输入"wq"保存退出,若不保存退出则输入:q!(5)编译java文件:javac hello.java(6)运行java文件:java hello8、ls:列举当前文件夹,参数-l:显示当前目录的详细信息9、ccp程序的编译:编辑过程同上面的java程序,下面只记录编译和运行方式:(1)编译:gcc hello.cpp(2)运行:./a.out//默认编译出的文件为a.out(3)编译时更名:gcc–o hello.out hello.c,编译后的名字变为:hello.out10、set nu:在文件中每行行首加入行号set nonu:取消行号输入数字:直接输入数字,按"Esc"键,将光标移至该行行首/字符串:查找特定字,按"n"继续查找?字符串:查找特定字,按"n"继续查找11、linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录,详细结构图解:12、linux显示当前路径:pwd13、用户管理:(1)添加用户:只有root用户或者拥有root权限的用户才能创建useradd用户名passwd用户名(2)删除用户:只有root用户或者拥有root权限的用户才能删掉userdel用户名(保留用户相关的文件)userdel–r用户名(删除用户及其相关的文件)14、Linux运行级别:init[0,1,2,3,4,5,6]注释:(1)0:关机(2)1:单用户(3)2:没有网络服务的多用户状态(4)3:有网络服务的多用户状态(5)4:系统未使用保留给用户(6)5:图形界面(7)6:系统重启常用级别为3和5,修改运行级别:vi/etc/inittab,修改id:5:inittabdefault中的数字,即可修改运行等级。
linux学习笔记
切换X Window与命令行模式:linux login :rootTab 按键具有命令补全与文件补全在线帮助:man page /info page[root@linux^]LANG="man"[root@linuxx]#man dataDATA(1)以root的身份封入Linux之后输入“ls-al”-rwx rwx文件拥有者与文件所属用户组对文件的权利。
linu的发展主要分为哪两种核心版本、文件属性-rwxrwxrwx表示这个文件的意义是什么?要将一个文件的属性改为-rwxr-xr--采用什么命令?若需要更改一个文件的拥有者与用户组,该用什么命令?linux传统的文件系统是什么?常用的文件登陆格式是那些?文件和目录管理:cd切换目录dmtsai 用户的家目录是/home/dmtsai,root家目录是/root,假设一root身份在linux 系统中,这儿个特殊目录的意义是:[root@linux~]# cd【相对路径或绝对路径】[root@linux~]#cd ~dmtsai#表示去dmstai用户的家目录,及/honme/datsai[root@linux~]#[root@linux~]#[root@linux~]#[root@linux~]#[root@linux~]#[root@linux~]#[root@linux~]#pwd(显示当前所在多的目录)[root@linux~]#pwd [-p]参数:-p :显示出十几路径,而非食用连接(link)路径dmtsai用户的家目录是/home/dmtsai root家目录是/rootpwd显示当前所在目录例:[root@linux~]#pwd [-p]pwd显示当前所在目录mkdir(建立新目录)rm 删除文件或目录mv移动文件与目录,或重命名[root@linux~]#mv [fiv]source dmstination[root@linus ]#mv [options] source1 souroe2 souroe2 .....directory-f;force,强调的意思,强制直接移动而不询问。
linux系统学习笔记
linux系统学习笔记==============================智能娱乐系统===================硬件:中控:UI,⾳视频数据处理能⼒操作:显卡,声卡、LED、游戏机、触控屏ARM :cortex - A软件:开发环境:vmware + linux(ubuntu)程序开发:linux C程序移植:交叉开发效果:⾃动处理程序⼀、Linux 命令linux : 图形简陋---> 追求效率⾼移植性强,开源性linux :命令⾏形式进⾏交互ls: 查看全部⽂件名/ --->根⽬录pwd: 打印当前的路径/home/gec 等于~ ---> 家⽬录cd : 直接回到/home/geccd / : 回到根⽬录/cd ..: 回到上⼀级的⽬录ls -l类型权限链接数创建者⼯作组⼤⼩⽇期⽬录名d rwxrwxr-x 2 gec gec 4096 Jul 2 2013 Desktop d:⽬录(第⼀个字母:-:普通⽂件d:⽬录)rwxrwxr-x:⽂件的权限r:读权限w:写权限x:执⾏权限⽤户权限:rwx(创建者的权限)rwx(同组⼈)r-x(其他⼈)clear: 清除屏幕信息touch 创建⽂件touch xxxx ----> 因为⾝份是gec,所以必须在/home/gec中创建rm 删除⽂件/⽬录rm xxxx(⽂件名) ----> 因为⾝份是gec,所以必须在/home/gec中删除rm xxxx(⽬录名) -rfgedit 编辑⽂件gedit xxxxcat 查看⽂件内容cat xxxxmkdir 创建⽬录mkdir xxxx ----> 因为⾝份是gec,所以必须在/home/gec中创建cp 拷贝命令cp ⽂件名⽬录名---> cp abc.c 123/chmod 修改⽂件的权限-rw-rw-r-- 1 gec gec 20 Apr 14 19:43 abc.c4214214216 6 4希望三个⼈都是可读可写可执⾏7 7 7chmod 777 xxxxchmod 777 abc.c-rwxrwxrwx 1 gec gec 20 Apr 14 19:43 abc.c⼆、linux与windows间的共享⽬录1,在windows系统中的D:\创建⼀个名字为share的⽬录2, "虚拟机" --- "设置" ---- "选项" --- "共享⽂件夹" --- "总是启⽤" ---"确定" 3,在linux系统输⼊以下命令来进⼊共享⽬录cd /mnt/hgfs/share/4,在linux与windows分别创建⽬录和⽂件,观察两个系统的变化=====================开发板的使⽤=========================⼀、核⼼板CPU:ARM - cortex -A8名字:S5PV210内存:4块4 * 128MB = 512MBnandfalsh: 1G ---〉linux系统⼆、底板电源线插⼝:5V按键⾳频输⼊(红⾊)输出(绿⾊)串⼝:连接PC机与开发板⽹⼝:快速传输数据三、使⽤GEC210板⼦1,接上电源线2,串⼝线⼀端接在开发板上,另⼀端接在USB转串⼝上,USB⼝接在电脑的USB⼝上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wolves 2014.3.20 总结Linux前提:1保证Linux 和window 可以ping通(ps:原因window上的防火墙没有关闭、或者Linux 上的防火墙和强制安全策略)2.保证安装Linux的时候选择了网络配置,现在定制(gcc 的默能安装)3.命令分析:tar -cvf a.tar a 和 tar -czvf a.tar.gz a 要是a是普通的文件那么a.tar和a.tar.gz的大小都会比a要大(物极必反).那么要是a文件的或那么a.tar的大小比a要大,但是a.tar.gz的大小比a要小.4.-rw-r--r--:第一个-表示是普通文件rw-表示当前账户的权限r--表示同一组的权限,最后一个r--表示不同组的用户的权限chmod (u,g,o,a) +/-/= filename或者chmod 777 filenamer=4 w=2 x=15.ln a b 表示的是硬连接(测试是往其中一个写代码) ln -s a c 表示的是符号连接(c-->a)6.ls -al tftp*表示的是看tftp*的内容而ls -al | grep tftp表示的是把前面的结果集中找出tftp文件不能和*连用.Tftp服务1.Linux和window可以ping通.2.Setenforce 0和service iptables stop3.在mnt下面mkdir cdr再mount /dev/cdrom cdr4.cd Server 再ls -al | grep tftp (发现客户端和服务器)5.安装tftp发现要先安装xinetd服务(tftp是xinetd的子类)6.先安装xinted.语法:rpm -ivh xinetd....再重启服务service xinetd restart7.再次安装tftp.语法:rpm -ivh tftp...再重启服务chkconfig tftp on(因为是小服务不能用service) 8.最后cd / 看是否有个tftpboot的文件夹.进入里面创建一个down.txt。
9.在windows这边的dos中写入:tftp Linux_ip get down.txt 【e:\1.txt】即可.10.测试tftp客户端.在cd /下面建立day02.在day02里面创建up.txt.再tftp-->localhost-->put up.txt(发现错误是file not found 是因为默能不支持tftp的上传.)解决方式:cd /etc/xinetd.d 里面有个tftp服务。
gedit tftp&在tftpboot 后面加上-c 保存退出后一定要重启xinetd和tftp服务。
11.在put up.txt发现没有权限,解决方式修改该tftpboot权限chmod 777 tftpboot.再次上传即可.12.卸载rpm -e tftp-server-../rpm -e tftpNFS服务1.测试Linux上面是否安装了nfs.语法:rpm -qa |grep nfs 结果是有的.但是没有启动.2.进入cd 下面的etc找 exports,并打开写入:3./home 192.168.1.*(rw,sync,no_root_squash) (home:共享的目录,ip前面的路由ip).4.保存之后要重启nfs语法:service nfs restart5.进入mnt下面新建mynfs.语法:mkdir mynfs6.挂载:mount -t nfs 自己或者人家的linux_ip:/home mynfs7.测试。
当在home中的东西存在和mynfs一样的时候那么成功.SMB服务1.VM--->install vmtools(注意一定要卸载cdr不然进去就是乱码语法:umount cdr)2.在进cdr ls一下发现有两个VM文件,安装一个一般安装rpm -ivh VM这个.3.再运行最后出现的pl脚本:/usr/bin/vmware-config-tools.pl4.最后重启语法reboot.会发现分辨率和鼠标可以共享了即可.IDE安装1.利用上面的smb服务。
将window上面的eclipse 和jdk放到Linux上面的/wp/tools下面.2.重命名jdk-6u16-linux-i586.bin改成jdk63.再执行jdk发现没有执行权限.给上语法:chmod +x jdk1.6 再./jdk1.64.发现又出现一个蓝色的jdk1.6...改名为jdk1.65.进入jdk1.6里面的bin.pwd一下看当前自己的路径。
拷贝一下将这个路径放到cd /root下面的.bash_profile这里.语法:gedit .bash_profile &将PATH=$PATH:$HOME/bin改成PATH=/wp/tools/jdk1.6/bin:$PATH:$HOME/bin 6.重新加载.bash_profile.语法:source .bash_profile.7.在到wp/tools这里解压安装eclipse文件最后运行./eclipse但是发现没有权限。
解决办法setenforce 0再次运行即可.Vi(Vim)编辑器1.vi(vim) hello.c (注意后面没有&)2.按下a或者i或者o进入写入hello wepull.3.想退出按esc键.在按下:输入wq即可出来 .4.gcc hello.c可以出现结果.5.测试几种运行的方式并且带人gcc的语法,其中比较好的一种是PATH=$PATH:.查询PATH的语法是echo $PATHgcc语法注意gcc main.c表示运行生成 a.outgcc main.o区别而gcc -c main.c 表示连接成main.o1状态:预处理、编译、汇编、连接预处理:主要是处理#include不包含宏.编译:主要的是变量没有声明和使用了非标准的C库函数.例如用sqrt.但是没有导入#include<math.h>这样的.汇编:一般没有错误连接:该方法(add)没有使用gcc文档上的方案.#include <stdio.h>int main(){double d=sqrt(4);printf(“hello wepull:%lf\n”,d);return 0;}这个例子那么gcc -S hello.i -o hello.s是有问题的。
因为在生成汇编语言的时候。
找不到sqrt的函数。
所以在上面加上#include<math.h>重新上面的步骤就可以了。
语法 gcc -E hello.c -o hello.igcc -S hello.i -o hello.sgcc -c hello.s -o hello.ogcc hello.o -o hello注意可以写成gcc -c hello.c [-o hello.o][]可以默能生成.o文件。
表示的意思是只是编译没有连接.2.说明””和<>这样的include 的区别.””表示在当前的文件夹下面有个”add.h”这样的文件gedit add.h若是写成<add.h>那么需要把add.h放到/usr/include下面. 要是把add.h放到某个文件夹下面(OK),那么语法是:gcc hello.c -IOK或者在头文件前面加上#include<./OK/add.h>静态链接库(.a)和动态链接库(.so)1.所有的的动态库都会在/usr/lib 和/lib这个找2.生成静态的语法:gcc -static hello.c体积大原因是把许多库的头文件都包含进去了3.生成动态的语法:gcc hello.c4.生成自己的静态连接库例如:第一步:add.h add.c sub.h sub.c main.c第二步:gcc -c add.c 、gcc -c sub.c第三步: ar -cr libaddsub.a add.o sub.o第四步: gcc main.c -laddsub -L./第五步: ./a.out(l表示手动连接的库但是这个库不是标准的C库函数,L表示找自己写的函数的位子.)5.生成自己的动态连接例如:第一步:add.h add.c sub.h sub.c main.c第二步: gcc -shared -fpic -o libaddsub.so add.c sub.c第三步: gcc main.c -laddsub -L./第四步: ./a.out发现有问题。
因为所有的动态的链接库都会在/usr/lib或者 /lib下面找。
解决办法: Mv libaddsub.so /usr/lib 即可.代码:add.h==>int add(int a,int b);add.c==>int add(int a,int b){ return a+b ;} sub.h==>int sub(int a,int b);sub.c==>int sub(int a,int b){ return a-b;} main.c:#include<stdio.h>#include “add.h”#include “sub.h”int main(){int m=add(1,2);int n=sub(1,2);printf(“%d,%d”,m,n);return 0;}Makefile1.首写要知道这样的一个例子:add.c main.cadd.c==>int add(int a,int b) { return a+b;} main.c==>#include<stdio.h>(注意没有add.h这样的库函数) int main(){int m=add(1,2);printf(“%d”,m);return 0;}2.测试上面的代码:gcc -c add.c 、gcc -c main.cgcc add.o main.o -o main./main3.定义目标:依赖Tab键命令4.列子all:add.o hello.ogcc add.o hello.o -o hello hello.o:hello.cgcc -c hello.cadd.o:add.cgcc -c add.cclean:rm -rf add.o hello.o hello 改造:#this is a demoobjs=add.o hello.oall:$(objs)gcc $^ -o $@hello.o:hello.c@ gcc -c $<add.o:add.c@ gcc -c $<clean:rm -rf $(objs) all$^表示的是所有依赖文件$@表示的是目标(一般是最终的可执行文件a.out)$<表示的是第一个被依赖的文件(一般是.c文件) 注意:作用域是当前的目标依赖和命令中.Shell 编程Demo1:测试基本的语法:#!/bin/shecho "this is a first test"var=wepull\ hao\ are\ youvar2=welcomeecho "$var"echo '$var'echo "this is a${var2}3"echo $#echo $*echo $1Demo2:输入用户名和密码判断是否合法登入.#!/bin/shecho "input your name:"read nameecho "input your pass:"read passif [ $name = "zs" -a $pass = "123" ] thenecho "login success~"elseecho "login error~"fiDemo3:输入两个数字比较大小#!/bin/shecho -n "input two numbers:"read a bif test $a -gt $b ;thenecho "$a > $b"elif test $a -eq $b ;thenecho "$a = $b"elseecho "$a < $b"fiDemo4:判断当前的账户是否是root#!/bin/shecho "input current runname"read userif test $user = `whoami` ; thenecho "current name is root"elseecho "current name is not root"fiDemo5:统计当前的路径有多少个文件.#!/bin/shdeclare -i mfor filename in $(ls)doif test -d $filename ; then:elseecho "filename is $filename"i=$(($i+1))m=$m+1fidoneecho "$i,$m"Demo6:设计一个shell程序,添加一个新组为class1,然后添加属于这个组的10个用户,用户名的形式为stdxx,其中xx从01到10。