首页 文章 精选 留言 我的

精选列表

搜索[linux],共10000篇文章
优秀的个人博客,低调大师

【Python Learning第一篇】Linux命令学习及Vim命令的使用

学了两天,终于把基本命令学完了,掌握以后可以当半个程序员了(^∇^*) 此文是一篇备忘录或者查询笔记,如果哪位大佬看上了并且非常嫌弃的话,还请大佬不吝赐教,多多包涵 以下是我上课做的一些笔记,非常的凌乱,(⊙﹏⊙)反正是留给自己看的 Day1学习: 以Ubuntu为例子Ctrl + Shift +‘+’ 变大Ctrl + ‘-’变小ls 能显示当前路径下的所有文件名及文件夹名的命令Ubuntu没有盘符的概念,只有一个根目录 bin 放的是程序相关的boot 和Ubuntu的启动项相关,开机项相关cdroom 光盘相关dev 和设备相关 deviceetc 几乎所有程序 配置的地方lib 库存放的地方home 里面有个图标为家的目录 ls查找的默认目录即为home中家目录Sakura的文件夹下ls默认显示的是根目录下的home文件下的Sakura文件夹下的所有文件名及文件夹名 /斜杆\反斜杠-横杆_下划线|竖杠 pwd命令 查看当前所处的目录路径clear 清屏cd 切换目录touch 文件名 创建文件命令mkdir 文件夹名 创建文件夹命令 创建的文件名如果以.开头,说明该文件为隐藏的文件例如 touch .123.txt ls -a 显示所有文件(包括隐藏文件) ls -l 显示列表ls -l -h 显示文件的单位大小ls -a -l -h 以列表的方式显示 并且每个文件单位显示 并且隐藏的文件也显示 (-a -l -h先后顺序无要求)ls -alh / -lah /...这样写效果一致 vi 文件名 编辑文件 ls(命令) --help 查看ls的帮助文档 200-300个命令man ls 查看ls命令的文档 上下键可以调整文档的字幕,f键可以往后(下一个)屏幕的切换,b键可以往前(上一个)屏幕的切换press h for help or q to quit gedit 文件名 编辑文件内容命令tab 自动补全命令 cat 文件名 查看文件内容命令history 显示你之前执行过的所有命令 !行数 执行该行数对应的命令(可以从历史中去找对应行数) rm 文件名 删除命令 ls 1* 列出以1开头的所有文件 通配符 *替换的是N位还有一种是位数的通配符比如我们有文件如下:23 234 2333 23.txt ls 2?(一个问号代表一位数)显示结果为23ls 1?3.txt 在第1位和第3位相同的情况下列出满足的所有文件 ls 1[12345]3 中括号也是一种通配符 在第1位和第3位相同的情况下列出满足当前的第2位范围在1-5的所有文件写法和ls 1[1-5]3一样 都是正则表达式的写法 重定向把原本显示在终端的内容写入文件中,这就是重定向 demo 示例 ls > xxx.txt 把当前显示的文件名写入xxx.txt文件中,相当于是把ls显示内容存入到xxx.txt文件中,gedit xxx.txt打开可以查看结果ls -alh > xxx.txt 也是一样的意思 ls >> xxx.txt 如果当前xxx.txt文件里面有内容,>>的意思是追加内容,就是在原内容的基础上增加新内容而>的意思是删除原来的内容,添加一个新的内容到该文件中 more xxx.txt 查看文件内容命令more命令和cat命令的区别:cat命令一次性把所有内容都显示出来而more命令显示一屏幕,f键可以往后(下一个)屏幕的切换,b键可以往前(上一个)屏幕的切换。more命令对于大文件(内容比较多)会很方便 ls -alh /bin | more 把显示的所有内容存到|里面,然后通过more去调用|来去显示出分屏的效果|称之为管道 如果你想同时运行两个命令,例如ls和ls -alh那么我们对于这种情况可以用分号来进行隔开操作 即ls;ls -alh cd /根目录/其他目录/.../ cd ./桌面 点.表示当前路径cd .. 表示当前路径的上一路径 cd ../..表示当前路径的上一路径的上一路径比如当前路径/home/sakura/桌面cd ../..的结果是/home cd / 直接跳到根目录下cd - 传送到上一次工作所在的路径(只记忆一次)cd ~ 回到用户主目录,即默认原始路径/home/sakura 目前理解概念:带颜色的为文件夹 不带颜色的为普通文件 Ctrl+C不执行,终止,相当于换行 rm *.txt 删除文件类型为.txt的所有文件(利用到通配符) tree 以目录树的方式显示内容 mkdir A/B/C/D/E -p 表示递归创建目录 p表示parents如果你想创建A并且在A目录下创建B子目录,没有-p是行不通的 rmdir 文件夹名 删除当前路径下的文件夹 rmdir不能删除非空文件夹而rm既可以删除文件,还可以删除文件夹删文件夹时需要加一个选项,为-rrm 文件夹名 -r 递归处理,将指定目录下的所有文件与子目录一并处理 mv 原文件名 新文件名 重命名命令 既可以重命名文件,也可以重命名文件夹 软链接 硬链接 文件中的数据 -> 1.txt <-- 1.softlink.txt -> 1.hardlink.txt ln -s 源文件 目标文件 ln -s 1.txt 1-softlink.txt 某一个文件(源文件)在另外一个位置建立一个不同的链接(目标文件),-s 是software的意思,加上-s以后,这个链接称为软链接,相当于Windows中的快捷方式一旦删除了源文件 软链接文件找不到源文件以后就会报错 ln 1.txt 1-hardlink.txt 创建一个硬链接 即使删除了源文件 硬链接相当于拷贝了一份源文件 仍然能够打开并读取到源文件中的内容 grep "内容" 文件名 搜索当前文件中的"内容"相关的东西grep -v "内容" 文件名 搜索当前文件中不包含"内容"相关的东西 -v是否的意思 例如 grep "ntfs" xxx.txt 表示搜索xxx.txt文件中含有ntfs内容的东西而grep -v "ntfs" xxx.txt 表示搜索xxx.txt文件中不包含ntfs内容的东西 而搜索ntfs开头的内容 我们采用的命令如下:grep "^ntfs" xxx.txt^向上箭头表示从头开始而我们如果要搜索以ntfs结尾的内容时,我们采用的命令如下:grep "ntfs$" xxx.txt$表示结尾内容为当前内容 mv 文件名 文件夹名/ 把当前文件剪切并粘贴到目标文件夹里面 顺带功能前面已经给出,给文件或者文件夹改名 mv 原文件名 新文件名 重命名命令 既可以重命名文件,也可以重命名文件夹 cp 文件名 文件夹名 将当前文件复制并粘贴到目标文件夹下如果要拷贝文件夹,只需要在末尾加上-r即可如:cp A B/ -r 将A文件夹拷贝到B文件夹下 Day2学习: find 用来在特定目录下搜索符合条件的文件find / -name "*name*" *是通配符,意思是去查找当前目录下符合有name字样条件的文件,-name的意思是按照名字去查找这样查找会出现有些文件显示权限不够,我们可以加上sudo增加权限,命令为sudo find / -name "*name*" find / -name "name" 查找当前目录下全名为name的文件 sudo find / -size 1G 搜索当前目录下大小为1G的文件 sudo find / -size +1G 搜索当前目录下大小大于1G的文件sudo find / -size -1G 搜索当前目录下大小小于1G的文件 ll 该命令相当于ls -la命令 tar -cvf 包名 需要打包的文件 把当前路径下需要打包的文件打包到指定的包中,仅仅只是打包tar -xvf 包名 把当前路径下的包进行解压 tar -cvf test.tar *.py 把当前路径下以.py结尾的文件打包到test.tar文件中tar -xvf test.tar 将test.tar这个包进行解压,解压路径为当前所在的路径 tar -zcvf xxx.tar.gz *.py 把当前路径下需要打包的文件(.py文件)打包到指定的包(xxx.tar)中,并压缩 -z表示要进行一个压缩,所以打包的文件后缀应加上.gztar -zxvf xxx.tar.gz 将xxx.tar.gz压缩包进行一个解压缩 -z是针对.gz结尾的压缩文件进行的操作 tar -jcvf yyy.tar.bz2 *.py 将*.py文件打包并压缩到yyy.tar.bz2文件中 -j是针对.bz2结尾的压缩模式的命令tar -jxvf yyy.tar.bz2 将yyy.tar.bz2压缩包进行一个解压缩 -j是针对.bz2结尾的压缩模式的命令 zip zzz.zip *.py 把*.py文件打包并压缩到zzz.zip文件中unzip zzz.zip 把 zzz.zip文件进行解压缩 总结一点 .gz结尾的文件<.bz2结尾的文件<.zip结尾的文件 .rar结尾的文件 .zip文件的解压缩指定路径为 -d ./目录upzip -d ./test myzip.zip .gz文件的解压缩指定路径为 -C 指定目录/tar -zxvf test.tar.gz -C dongge/ 我们所敲的所有命令都是 bin/ 文件夹下的一个文件 which的作用是用于查找并显示给定命令的绝对路径 which ls显示结果为/bin/ls cal 显示当前的某年某月某日 cal -y 年份 显示指定年份的全年的日历 date 查看当前的时间 date "+%Y=====%m=====%d" 显示当前的年月日 +代表显示结果为2018=====02=====26date "+%y=====%m=====%d" 显示当前的年月日 +代表显示结果为18=====02=====26两者区别在这 date "+%Y年%m月%d日"结果为2018年02月26日 date可以修改时间 ps(process进程) 查看进程信息 ps -aux 查看当前所有进程的信息 从头到尾显示一遍 top 显示当前电脑进程的运行情况 htop 查看电脑当前的运行情况 ps top htop 均用来查看电脑当前的运行情况 kill -9 9822 首先-9的意思是强制性 强制关闭代号为9822的进程,我们要查看代号只需要敲击ps命令即可查看 reboot 重启命令 shutdown -h now 立刻关机shutdown -h +10 十分钟以后关机shutdown -h 20:20 今天晚上8:20电脑自动关机 init 0 关机init 6 重启 df df -h 显示当前整个硬盘的使用情况 ifconfig 可以查看ip地址 还可以改IP地址ping IP地址 可以测某一网段是否是通的 sudo useradd 账户名字 -m 添加新账号命令 -m的意思是顺便在/home目录下创建一个文件夹,文件夹的名字为账户的名字 ls /home/ home里面包含了用户信息,可以查看用户信息 cat /etc/passwd 最后一行可以查看用户数量及信息 su 用户 切换用户命令 sudo passwd 用户名 更改用户的密码 whoami 显示当前的用户名 exit 退出当前用户 Ubuntu有多用户的功能 ssh 用户名@ip地址 远程登陆电脑 Ctrl+Shift+t 打开多个终端并合并 Alt+数字键(非小键盘) 切换终端 who 查看当前登陆的用户 当远程登陆一个用户时,这边也会显示有一个用户登陆 userdel 删除用户 userdel 用户名 删除用户 而一般操作是 sudo userdel -r 用户名 删除指定用户的用户名及家目录/home -r是删除家目录下的文件 su - xxxx 登陆xxxx用户,-表示会切换目录 例子:sudo useradd xxxx -msudo passwd xxxx输入新的UNIX密码:123456重新输入新的UNIX密码:123456passwd:已成功更新密码su xxxx密码:123456 pwd/home/python exit pwd/home/python 路径没有切换 su - xxxx pwd/home/xxxx 路径切换了 sudo -s 切换root权限(超级管理员权限) ifconfig 网卡型号(例如ens33) IP地址(例如172.16.7.33) 对网卡的IP地址进行修改 ~$ 该符号为普通用户的账户~# 该符号为root权限用户的账户 文件拥有者 用户组 cd ~ 跳到根目录 sudo groupadd YYY 创建或添加组 cat /etc/group 可以查看组是否创建 sudo groupdel YYY 删除组 groupmod+多敲几次Tab 查看当前所有组组名所以总结一点:两种方式查看组名 cat /etc/group | grep sudosudo:x:27:python <--- cat/etc/group | grep admadm:x:4:syslog,python <---lpadmin:x:113:python sudo usermod -a -G adm 用户名 usermod是修改用户的意思,-a是添加的意思,-G是指定账户 指定adm这个组的账户sudo usermod -a -G sudo 用户名 usermod是修改用户的意思,-a是添加的意思,-G是指定账户 指定sudo这个组的账户 chgrp修改文件所属组命令格式如下:chgrp 我们所需要修改成的用户组名 文件名 chown修改文件拥有者命令格式如下:chown 我们需要修改成的文件拥有者名 文件名 ll显示以后的第一列有十个字母的位置第一个位置用来标识文件和文件夹-表示的是普通文件,d表示的是文件夹,这是真正区分文件和文件夹的方式,不能用文件的颜色去区分是否是文件夹后面每三个字母为一组分别表示为以下权限:文件拥有者的权限(u) 同组者的权限(g) 其他人的权限(o) rwx r是读入 w是写入 x的意思是可执行r - - 只能读入r - x 可读 可执行 但是不能写入带-说明没有权限 举个栗子:以Ubuntu 14.04为例子,当前pwd路径为:/home/sakura/桌面drwxr-xr-x 我们先进行拆分:d rwx r-x r-xd表示这个是一个文件夹 rwx说明该文件夹的文件拥有者有可读可写可执行的权限r-x说明该文件夹同组者的权限有可读可执行但是不能写入r-x说明该文件夹其他人的权限有可读可执行但是不能写入 chmod u=rwx 1.py 对1.py文件的文件拥有者的权限进行修改,修改为可读可写可执行 chmod u=r,g=r,o=r 2.py 对1.py文件的文件拥有者权限 同组者权限 其他人权限都修改为只可读 数字法: r------->4w------->2x------->1 1 x2 w3 wx4 r5 rx6 rw7 rwx 编辑器讲解 Sublime Text3Ctrl+Shift+t 快速复制 代码移动 选中你需要移动的代码 然后按tab键就好了(向右移动) 按住Shift+tab(向左移动) Vim编辑器讲解 按ESC退出编辑(插入)模式,进入命令模式然后写入 : 进入末行模式 按下大写的 I 在行首插入按住i可以进入插入代码格式(写入文本) 插入光标前一个字符 按下大写的 A 在行末插入a:插入光标后一个字符 按下大写的 O 在上一行插入按下小写的o(小写字母)进入下一行编辑模式 yy:复制光标所在的这一行4yy:光标所在的行开始向下的4行 p:粘贴 dd:剪切光标所在的这一行2dd:剪切光标所在的行开始向下的2行D:从当前的光标开始剪切 一直到行末d0:从当前光标开始剪切,一直到行首x:删除当前的光标(从后删) 每次只会删除一个(都是剪切的一些命令)X:删除当前的光标(从前删) 每次只会删除一个(都是剪切的一些命令)dw:删除光标开始位置的字 包含光标所在字符 其实就是删掉一个单词的字母(都是剪切的一些命令) 代码上下左右键:h 左 j 下 k 上 l 右 H:当前屏幕的最上方M:当前屏幕的中间L:当前屏幕的最下方 Ctrl+f 向下翻一页代码Ctrl+b 向上翻一页代码 Ctrl+d 向下翻半页代码Ctrl+u 向上翻半页代码 行号 -G 移动到指定行20G:快速的定位到第20行代码G:快速的回到 整个代码的最后一行gg:快速的回到 整个代码的第一行 w:向后跳一个单词的长度 即跳到下一个单词的开始处b:向前跳一个单词的长度 即跳到上一个单词的开始处 u:撤销上一步的操作 Ctrl+r:反撤销 选中一片v:按字符移动 选中文本V:按行移动 选中文本可视模式可以配合d,y,>>,<<实现对文本块的删除(剪切),复制,左右移动 >>:向右移动代码(整段文本)<<:向左移动代码(整段文本).:重复上一次的命令 {:按段移动 上移 代码一片一片的跳}:按段移动 下移 代码一片一片的跳代码是一片一片的写,不是挨在一起的 r:替换一个字符R:替换当前光标以及后面的字符 搜索命令末行模式下输入:/str/str 查找字符 str为任意字符比如我们搜索/hello 我们发现文本中有10个hello的字样,我们可以通过按n/N去进行上下的查看n:下一个N:上一个 替换命令:末行模式下输入::%s/原字符串/将要替换成的新字符串/gExample:%s/hello/world/g 将文本中的hello字样全部替换成world这种方式是将当前文本中所有的原字符串替换成新字符串 末行模式下,将第1行至第10行之间的hello替换成world,命令如下::1,10s/hello/world/g 末行模式下敲:w为保存,:q为退出,:wq为保存并退出 如果文本有编辑,但是未保存,直接写入:q,会提示未保存如果我们想强制退出,在末行模式下输入:q! 这样就行了 命令模式下:Shift+zz 相当于:wq 全部掌握以后就是初级大神了啦啦啦(^∇^*) 您可以考虑给博主来个小小的打赏以资鼓励,您的肯定将是我最大的动力。thx. 微信打赏 支付宝打赏 作 者: Angel_Kitty 出 处:http://www.cnblogs.com/ECJTUACM-873284962/ 关于作者:潜心机器学习以及信息安全的综合研究。如有问题或建议,请多多赐教! 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。 特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我 声援博主:如果您觉得文章对您有帮助,可以点击右下角【推荐】推荐一下该博文。您的鼓励是作者坚持原创和持续写作的最大动力!

优秀的个人博客,低调大师

马哥2016全新Linux+Python高端运维班第五周作业

1、显示当前系统上root、fedore或user1用户的默认shell; 系统中没有fedore和user1用户,所以先创建 如下图所示,列出用户的默认shell,用egrep过滤出用户的默认shell 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); 3、使用echo命令输出一个绝对路径,使用grep取出其基名; 扩展:取出其路径名 4、找出ifconfig命令结果中的1-255之间数字; 5、挑战题:写一个模式,能匹配合理的IP地址; A类地址范围:1.0.0.1—126.255.255.254B类地址范围:128.0.0.1—191.255.255.254 C类地址范围:192.0.0.1—223.255.255.254D类地址范围:224.0.0.1—239.255.255.254 E类地址范围:240.0.0.1—255.255.255.254127.X.X.X是保留地址,用做循环测试用的 匹配范围为1-255.0-255.0-255.1-254 6、挑战题:写一个模式,能匹配出所有的邮件地址; 先创建邮箱地址 7、查找/var目录下属主为root,且属组为mail的所有文件或目录; #find/var-userroot-groupmail-ls 8、查找当前系统上没有属主或属组的文件; 新建几个,效果明显 进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录; 9、查找/etc目录下所有用户都有写权限的文件; #find/etc/-perm-222 -ls | head 10、查找/etc目录下大于1M,且类型为普通文件的所有文件; #find/etc/-size+1M-typef -ls 11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;#find/etc/init.d-perm-113-ls 12、查找/usr目录下不属于root、bin或hadoop的文件; #find/usr!\(-userroot-o-userbin-o-userhadoop\) 13、查找/etc/目录下至少有一类用户没有写权限的文件; find/etc!-perm-222 -ls | head 14、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文 #find/etc-mtime-7!\(-userroot-o-userhadoop\) 本文转自xinrenbaodao 51CTO博客,原文链接:http://blog.51cto.com/11832904/1846181,如需转载请自行联系原作者

优秀的个人博客,低调大师

Linux CentOS 7 Shell基础(命令历史,管道,作业控制,变量及环境变量)

一、 shell介绍 shell是一个命令解释器,提供用户和机器的交互。 支持特定语法,比如逻辑判断,循环。 每个用户都有特定的shell centos7默认shell 为bash(Bourne Agin Shell) 还用zsh,csh,ksh等 二、 命令历史history history 命令历史 history -c 清空内存缓存命令。 ~/.bash_history 命令历史的存储文件 HISTSIZE=1000 默认命令历史记录1000条 /etc/profile-----HISTORY=10000 source/etc/profile HISTTIMEFORMAT="%Y%m%d %H:%M:%S " 显示命令历史的执行时间 chattr +a ~/.bash_history 永久保存命令历史, !! 上一条命令 !1320 序号为1320条命令历史 !mkdir 最近的以mkdir开关的命令 三、 命令补全和别名 tab键 敲一下,敲两下 参数补全,安装bash-completion alias 命令别名 aliasrestartnet="systemctlrestartnetwork.service" unalias restartnet 用户自己的别名配置文件~/.bashrc ls /etc/profild.d/*.sh 也定义了一部分别名 四、 通配符 ls*.txt匹配多个字符 ls?.txt匹配单个字符 ls[1-3].txt匹配范围 ls[0-9a-zA-Z].txt匹配非特殊字符 ls{1,3,4}.txt匹配部分 [root@0~]#ls*.txt #fxq.txt1.txt111.txt22.txt3.txt4.txt\fxq.txtip.txtsed.txt [root@0~]#ls?.txt1.txt3.txt4.txt [root@0~]# 五、 输入输出重定向 cat 1.txt > 2.txt 重定向 cat 1.txt >> 2.txt 追加重定向 ls aaa.txt 2>error.txt错误重定向 ls aaa.txt 2>>error.txt 错误追加重定向 wc -l < 1.txt 输入重定向 &> ,&>>结合了正确和错误 ls 1.txt aaa.txt 1> 1.txt 2>error.txt ls 1.txt aaa.txt >1.txt 2&>1 ls 1.txt 2.txt &> 1.log ls 1.txt 2.txt &>> 1.log 六、 管道符和作业控制 (1)管道| cat 1.txt | grep "root" [root@0~]#cat/etc/passwd|greproot root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin [root@0~]# find ./ -type f |wc -l: 查找当前目录有多少个文件 [root@0~]#find./-typef|wc-l171 [root@0~]# (2)作业控制 vim /etc/passwd 打开文件进行编辑 ctrl + Z 暂停程序 [root@0~]#vim/etc/passwd [1]+Stoppedvim/etc/passwd [root@0~]# fg 调回前台 bg 放到后台运行 jobs 查看作业 [root@0~]#jobs[1]-Stoppedvim/etc/passwd [2]+Stoppedvi/etc/fstab [root@0~]#[root@0~]#jobs[1]-Stoppedvim/etc/passwd [2]+Stoppedvi/etc/fstab [root@0~]#fg1 [root@0~]#sleep1000^Z [4]+Stoppedsleep1000[root@0~]#jobs[1]Stoppedvim/etc/passwd [2]Stoppedvi/etc/fstab [3]-Stoppedvmstat1[4]+Stoppedsleep1000[root@0~]#jobs2000-bash:jobs:2000:nosuchjob [root@0~]#sleep2000^Z [5]+Stoppedsleep2000[root@0~]#jobs[1]Stoppedvim/etc/passwd [2]Stoppedvi/etc/fstab [3]Stoppedvmstat1[4]-Stoppedsleep1000[5]+Stoppedsleep2000[root@0~]#bg5[5]+sleep2000& [root@0~]#jobs[1]Stoppedvim/etc/passwd [2]Stoppedvi/etc/fstab [3]-Stoppedvmstat1[4]+Stoppedsleep1000[5]Runningsleep2000& [root@0~]#fg1vim/etc/passwd [1]+Stoppedvim/etc/passwd [root@0~]#sleep3000&[6]3723[root@0~]#jobs[1]+Stoppedvim/etc/passwd [2]Stoppedvi/etc/fstab [3]Stoppedvmstat1[4]-Stoppedsleep1000[5]Runningsleep2000& [6]Runningsleep3000& [root@0~]# 七、 shell变量 (1)变量: env 查看系统变量 [root@0~]#envXDG_SESSION_ID=62201HOSTNAME=0TERM=xterm SHELL=/bin/bash HISTSIZE=6000SSH_CLIENT=27.189.212.188861622SSH_TTY=/dev/pts/0QT_GRAPHICSSYSTEM_CHECKED=1USER=root LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36: MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin/:/usr/local/apache2/bin/:/usr/local/php/bin/:/root/bin PWD=/root LANG=C QT_GRAPHICSSYSTEM=native SHLVL=1HOME=/root LOGNAME=root SSH_CONNECTION=27.189.212.188861610.186.46.18822LESSOPEN=||/usr/bin/lesspipe.sh%s PROMPT_COMMAND=history-a XDG_RUNTIME_DIR=/run/user/0HISTTIMEFORMAT=%F%T _=/usr/bin/env [root@0~]# set 还可以查看用户自定义变量 a=1 自定义变量 变量名规则:不能以数字开头 变量里有特殊符号的话,得用''引起来 [root@0~]#a=111 [root@0~]#echo$a111 [root@0~]#a='a$bc' [root@0~]#echo$aa$bc [root@0~]#a="a$bc" [root@0~]#echo$aa [root@0~]# 变量的累加: [root@0~]#a=1[root@0~]#b=2[root@0~]#echo$a$b12[root@0~]#a='a$bc'[root@0~]#echo$a$ba$bc2[root@0~]#c="a$bc"[root@0~]#echo$ca [root@0~]#c=a"$b"c[root@0~]#echo$ca2c [root@0~]# 全局变量:export b=222 w 查看登录终端: echo $SSH_TTY [root@0~]#w 22:05:44up36days,4:57,2users,loadaverage:0.00,0.01,0.05USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT rootpts/127.189.212.18821:3728:380.03s0.03s-bash rootpts/027.189.212.18821:220.00s0.15s0.00sw [root@0~]#echo$SSH_TTY/dev/pts/0[root@0~]#[root@0~]#w 22:06:03up36days,4:58,2users,loadaverage:0.00,0.01,0.05USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT rootpts/127.189.212.18821:373.00s0.03s0.00sw rootpts/027.189.212.18821:2211.00s0.15s0.11s-bash Youhavenewmailin/var/spool/mail/root [root@0~]#echo$SSH_TTY/dev/pts/1[root@0~]# export 全局向下子shell 中生效,bash unset a 删除自定义变量. 八、 环境变量配置文件 (1)系统层次: /etc/porfile 用户环境变量,交互,登录才执行 /etc/bashrc 用户不用登录,执行shell (2)用户层次: ~/.proflie ~/.bashrc . ~/.bash_profile . ~/.bash_logout . ~/.bash_history (3)PS1、PS2 PS1=[\u@\h \W]$ PS2----> 一个非常长的命令可以通过在末尾加“\”使其分行显示。多行命令的默认提示符是“>”。 我们可以通过修改PS2 ,将提示符修改为 >> :export PS2='>>' <root@0>#foriin`seq110` >do >echo$i >done; 1 2 3 4 5 6 7 8 9 10 <root@0># (4)扩展 bashrc和bash_profile的区别http://ask.apelearn.com/question/7719 bash_profile和bashrc区别 【.bash_profile与.bashrc的区别】.bash_profileisexecutedforloginshells,while.bashrcisexecutedforinteractivenon-loginshells. 【loginshell与non-loginshell的区别】 1、当你直接在机器login界面登陆、使用ssh登陆或者su切换用户登陆时,.bash_profile会被调用来初始化shell环境 Note:.bash_profile文件默认调用.bashrc文件.bash_profile中有如下内容if[-f~/.bashrc];then.~/.bashrc fi 2、当你不登陆系统而使用ssh直接在远端执行命令,.bashrc会被调用 3、当你已经登陆系统后,每打开一个新的Terminal时,.bashrc都会被再次调用。 测试准备工作 hclient2主机hadoop用户家目录下执行[hadoop@hclient2~]$echo"invokehclient2:~/.bashrc">>.bashrc[hadoop@hclient2~]$echo"invokehclient2:~/.bash_profile">>.bash_profile LoginShell 1、窗口登陆 RedHatEnterpriseLinuxServerrelease6.3(Santiago)Kernel2.6.32-279.el6.x86_64onanx86_64 hclient2login:hadoop Password: Lastlogin:MonFeb2523:03:45ontty1invokehclient2:~/.bashrcinvokehclient2:~/.bash_profile[hadoop@hclient2~]$ 2、SSH登陆[hadoop@hserver~]$sshhclient2 Lastlogin:MonFeb2522:42:192013fromhserverinvokehclient2:~/.bashrcinvokehclient2:~/.bash_profile[hadoop@hclient2~]$ 3、su登陆[root@hclient2~]#su-hadoopinvokehclient2:~/.bashrcinvokehclient2:~/.bash_profile Non-loginShell: Note:ssh...[user@]hostname[command] Ifcommandisspecified,itisexecutedontheremotehostinsteadofaloginshell.[hadoop@hserver~]$sshhclient2hostnameinvokehclient2:~/.bashrc hclient2 【故】若要配置环境变量之类,最保险是写在.bashrc文件中。因为不管是登陆还是不登陆,该文件总会被调用! 本文转自 枫叶云 51CTO博客,原文链接:http://blog.51cto.com/fengyunshan911/1962430

优秀的个人博客,低调大师

梳理Linux下OSI七层网络与TCP/IP五层网络架构

作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识。 废话不多说!下面就逐一展开对这两个网络架构知识的说明:------------------------------------------------------------一、OSI七层网络协议OSI是Open System Interconnect的缩写,意为开放式系统互联。 OSI参考模型各个层次的划分遵循下列原则: 1)根据不同层次的抽象分层 2)每层应当有一个定义明确的功能 3)每层功能的选择应该有助于制定网络协议的国际标准。 4)各层边界的选择应尽量节省跨过接口的通信量。 5)层数应足够多,以避免不同的功能混杂在同一层中,但也不能太多,否则体系结构会过于庞大 6)同一层中的各网络节点都有相同的层次结构,具有同样的功能。 7)同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。 8)七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。 9)不同节点的同等层按照协议实现对等层之间的通信。 根据以上标准,OSI参考模型分为(从上到下):物理层->数据链路层->网络层->传输层->会话层->表示层->应用层。 1)物理层涉及在信道上传输的原始比特流。 2)数据链路层的主要任务是加强物理层传输原始比特流的功能,使之对应的网络层显现为一条无错线路。发送包把输入数据封装在数据帧,按顺序传送出去并处理接收方回送的确认帧。 3)网络层关系到子网的运行控制,其中一个关键问题是确认从源端到目的端如何选择路由。 4)传输层的基本功能是从会话层接收数据而且把其分成较小的单元传递给网络层。 5)会话层允许不同机器上的用户建立会话关系。 6)表示层用来完成某些特定的功能。 7)应用层包含着大量人们普遍需要的协议。 各层功能见下表: 七层模型的每一层都具有清晰的特征。基本来说: 1)第七至第四层(应用层->表示层->会话层->传输层)处理数据源和数据目的地之间的端到端通信, 2)第三至第一层(网络层->数据链路层->物理层)处理网络设备间的通信。 另外:OSI模型的七层也可以划分为两组: 1)上层(层7、层6和层5,即应用层->表示层->会话层)。上层处理应用程序问题,并且通常只应用在软件上。最高层,即应用层是与终端用户最接近的。 2)下层(层4、层3、层2和层1,即传输层->网络层->数据链路层->物理层)。下层是处理数据传输的。物理层和数据链路层应用在硬件和软件上。最底层,即物理层是与物理网络媒介(比如说,电线)最接近的,并且负责在媒介上发送 -----------------------------------------------------------------------------第7层-应用层 定义了用于在网络中进行通信和数据传输的接口 - 用户程式; 提供标准服务,比如虚拟终端、文件以及任务的传输和处 理; 应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。 第6层-表示层 掩盖不同系统间的数据格式的不同性; 指定独立结构的数据传输格式; 数据的编码和解码;加密和解密; 压缩和解压缩 这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。 第5层-会话层 管理用户会话和对话; 控制用户间逻辑连接的建立和挂断; 报告上一层发生的错误 这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。 第4层-处理信息的传输层 管理网络中端到端的信息传送; 通过错误纠正和流控制机制提供可靠且有序的数据包传送; 提供面向无连 接的数据包的传送; 第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP、UDP、SPX等。 第3层-网络层 定义网络设备间如何传输数据; 根据唯一的网络设备地址路由数据包; 提供流和拥塞控制以防止网络资源 的损耗 在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。如 果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP)。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的代表包括:IP、IPX、RIP、OSPF等。 第2层-数据链路层(DataLinkLayer): 定义操作通信连接的程序; 封装数据包为数据帧; 监测和纠正数据包传输错误 在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。 第1层-物理层(PhysicalLayer) 定义通过网络设备发送数据的物理方式; 作为网络媒介和设备间的接口; 定义光学、电气以及机械特性。 规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械 特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率 距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组 操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。在这一层,数据的单位称为比特(bit)。属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。 ----------------------------------------------二、TCP/IP TCP/IP(传输控制协议/网间网协议)是目前世界上应用最为广泛的协议,它的流行与Internet的迅猛发展密切相关。 TCP/IP最初是为互联网的原型ARPANET所设计的,目的是提供一整套方便实用、能应用于多种网络上的协议,事实证明TCP/IP做到了这一点,它使网络互联变得容易起来,并且使越来越多的网络加入其中,成为Internet的事实标准。 TCP/IP协议族包含了很多功能各异的子协议。为此我们也利用上文所述的分层的方式来剖析它的结构。 TCP/IP层次模型共分为四层:应用层->传输层->网络层->数据链路层。 各层功能见下表 TCP(Transmission Control Protocol:传输控制协议)和UDP(User Datagram Protocol:用户数据报协议)协议属于传输层协议。其中: 1)TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送; 2)UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。 -------------------------------------------------------------------应用层 应用层是所有用户所面向的应用程序的统称。ICP/IP协议族在这一层面有着很多协议来支持不同的应用,许多大家所熟悉的基于Internet的应用的实现就离不开这些协议。如我们进行万维网(WWW)访问用到了HTTP协议、文件传输用FTP协议、电子邮件发送用SMTP、域名的解析用DNS协议、远程登录用Telnet协议等等,都是属于TCP/IP应用层的;就用户而言,看到的是由一个个软件所构筑的大多为图形化的操作界面,而实际后台运行的便是上述协议。 传输层 这一层的的功能主要是提供应用程序间的通信,TCP/IP协议族 在这一层的协议有TCP和UDP。 网络层 TCP/IP协议族中非常关键的一层,主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅地传输,IP协议就是一个网络层协议。 网络接口层 这是TCP/IP软件的最低层,负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 ------------------------------ TCP支持的应用协议主要有:Telnet、FTP、SMTP等; UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。 TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点。 -----------------------------------------------------TCP连接建立-断开的过程说明: TCP连接的端点叫做套接字(socket)或插口,即(IP地址:端口号),每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。 TCP的运输连接有三个阶段,即连接建立、数据传送、连接释放。 TCP连接建立的过程要使每一方能够确定对方的存在:主动发起连接建立的应用进行叫做客户(client),被动等待连接建立的应用进程叫做服务器(server),连接建立的过程叫做三次握手。 假设A为客户,B为服务器,A发送一个报文给B,B发回确认,然后A再加以确认,来回共三次,成为“三次握手”。三次握手建立连接~ 所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示: 1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。 3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。 ---------------------------------------------------SYN攻击解释: 三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行: #netstat -nap | grep SYN_RECV--------------------------------------------------- 连接的释放需要发送四个包,因此成为“四次挥手”,四次挥手断开连接。客户端或服务器都可以主动发起挥手动作。 所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示: 由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。 1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。 3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。 4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。 上面是一方主动关闭,另一方被动关闭的情况(由一方发起挥手),实际中还会出现同时发起主动关闭的情况,具体流程如下图(同时挥手): ----------------------------------------------------为什么连接的时候是三次握手,关闭的时候却是四次握手? 这是因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。 但是关闭连接时,当Client端发送FIN报文仅仅表示它不再发送数据了但是还能接收数据,Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。 ----------------------------------------------------三、OSI七层网络与TCP/IP五层网络的区别与联系 除了层的数量之外,开放式系统互联(OSI)模型与TCP/IP协议有什么区别? 开放式系统互联模型是一个参考标准,解释协议相互之间应该如何相互作用。TCP/IP协议是美国国防部发明的,是让互联网成为了目前这个样子的标准之一。 开放式系统互联模型中没有清楚地描绘TCP/IP协议,但是在解释TCP/IP协议时很容易想到开放式系统互联模型。 两者的主要区别如下: 1)TCP/IP协议中的应用层处理OSI模型中的第五层、第六层和第七层的功能。 2)TCP/IP协议中的传输层并不能总是保证在传输层可靠地传输数据包,而OSI模型可以做到。 3) TCP/IP协议还提供一项名为UDP(用户数据报协议)的选择。UDP不能保证可靠的数据包传输。 ***************当你发现自己的才华撑不起野心时,就请安静下来学习吧*************** 分类: 常规运维实录, LB+HA, 性能调试及安全防范 本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/5909719.html ,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册