首页> 搜索结果页
"虚拟机2003 dns" 检索
共 155 条结果
Git相关知识
1 Git global setupgit config --global user.name "xianggu625" git config --global user.email "xianggu625@126.com"2 Create a new repository git clone https://github.com/xianggu625/ebussiness.git cd multibrach touch README.md git add README.md git commit -m "add README" git push -u origin master3 Push an existing folder cd existing_folder git init git remote add origin https://github.com/xianggu625/ebussiness.git git add . git commit -m "Initial commit" git push -u origin master4 Push an existing Git repository cd existing_repo git remote rename origin old-origin git remote add origin http://192.168.0.114/jerrygu625/mytest.git git push -u origin --all git push -u origin --tags5 Git更新代码 cd existing_folder git clone https://github.com/xianggu625/ebussiness.git git status       1、查看当前的git仓库状态,可以使用git status       2、如果是在刚才新建的文件夹输入git status 会提示你git目录不对       3、先用cd命令切换到gubai这个repository目录       4、再输入git status可以看到On branch master,这个说明已经在master分之上了更新代码git add *接着输入git commit -m "更新说明",commit只是提交到缓存区域git commit -m "更新说明”git push origin master问题1 全局变量失败       1、配置用户信息 git config --global user.name [username] git config --global user.email [email]       2、查询用户信息git config --list       3、如果push遇到在输入密码错误后,就会报这个错误fatal: Authentication failed for       解决办法:git config --system --unset credential.helper       之后你在push就会提示输入名称和密码2 发现git config --list内容有错误 git config -–global user.name "xxx" git config –-global user.email "xxx@xxx.com"或者运行 C:\Users\xiang>git config --list --show-origin file:"C:\\ProgramData/Git/config" core.symlinks=false file:"C:\\ProgramData/Git/config" core.autocrlf=true file:"C:\\ProgramData/Git/config" core.fscache=true file:"C:\\ProgramData/Git/config" color.diff=auto file:"C:\\ProgramData/Git/config" color.status=auto file:"C:\\ProgramData/Git/config" color.branch=auto file:"C:\\ProgramData/Git/config" color.interactive=true file:"C:\\ProgramData/Git/config" help.format=html file:"C:\\ProgramData/Git/config" rebase.autosquash=true file:C:/Program Files/Git/mingw64/etc/gitconfig http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt file:C:/Program Files/Git/mingw64/etc/gitconfig http.sslbackend=openssl file:C:/Program Files/Git/mingw64/etc/gitconfig diff.astextplain.textconv=astextplain file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.clean=git-lfs clean -- %f file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.smudge=git-lfs smudge -- %f file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.process=git-lfs filter-process file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.required=true file:C:/Program Files/Git/mingw64/etc/gitconfig credential.helper=manager file:C:/Users/xiang/.gitconfig user.name=xianggu625 file:C:/Users/xiang/.gitconfig user.email=xianggu625@126.com file:C:/Users/xiang/.gitconfig http.postbuffer=524288000 file:.git/config core.repositoryformatversion=0 file:.git/config core.filemode=false file:.git/config core.bare=false file:.git/config core.logallrefupdates=true file:.git/config core.symlinks=false file:.git/config core.ignorecase=true file:.git/config gui.wmstate=zoomed file:.git/config gui.geometry=1061x563+96+96 233 255 file:.git/config remote.origin.url=http://192.168.0.114/jerrygu625/mytest.git file:.git/config remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*直接用写字板打开文件进行修改3 GitHub.com无法访问,连接超时的问题       1、ping github网站(Ping github.com),ping不通,说明dns无法解析导致的       2.打开C:\Windows\System32\drivers\etc\hosts,在文件末尾添加如下内容,并保存: 192.30.255.112 github.com git 185.31.16.184 github.global.ssl.fastly.net       3.重启cmd窗口,继续ping一下github.com,本机已经能够正常解析github.com这个域名。       4.打开浏览器重新输入https://github.com/可以访问4 fatal: unable to access 'https://github.com/xianggu625/ebussiness.git/': OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10053网络不稳定,重新输入5 Git首次推送一直报错:Logon failed, use ctrl+c to cancel basic credential prompt.参见:https://blog.csdn.net/ZhaZha__Hui/article/details/122829072文末惊喜渗透式测试环境与代码实验代码:链接:https://pan.baidu.com/s/14XsCng6laiSiT_anuwr5dw?pwd=78dy提取码:78dy环境Windows上安装tomcat、Apache和MySQLLinux上安装tomcat、Apache和MySQL操作1、把tomcat中的sec拷贝到tomcat目录下,比如%TOMCAT-HOME%\webapps\2、把Apache中的sec拷贝到Apache目录下,比如\htdocs\3、tomcat中的sec目录下include.jsp<% String Windows_IP="127.0.0.1"; String Linux_IP="192.168.0.150"; String JSP_PORT="8080"; String PHP_PORT="8100"; %>String Windows_IP:Windows的IP地址String Linux_IP:Linux的IP地址String JSP_PORT:JSP的端口号String PHP_PORT:PHP的端口号3、Apache中的sec目录下include.php$windows_ip="http://127.0.0.1"; $linux_ip="http://192.168.0.150"; $jsp_port="8080"; $php_port="8100"; ?>$windows_ip:Windows的IP地址$linux_ip=:Linux的IP地址$jsp_port=:JSP的端口号$php_port:PHP的端口号打开浏览,输入http://192.168.0.106:8080/sec/192.168.0.106为本机IP地址数据库配置在建立MySQL下建立sec数据库,root/123456。将DB下的4个csv文件导入sec数据库中渗透测试操作系统虚拟机文件vmx文件1)Windows 2000 Professional链接:https://pan.baidu.com/s/13OSz_7H1mIpMKJMq92nEqg?pwd=upsm提取码:upsm2)Windows Server 2003 Standard x64 Edition链接:https://pan.baidu.com/s/1Ro-BoTmp-1kq0W_lB9Oiww?pwd=ngsb提取码:ngsb开机密码:1234563)Windows 7 x64链接:https://pan.baidu.com/s/1-vLtP58-GXmkau0OLNoGcg?pwd=zp3o提取码:zp3o4)Debian 6(Kali Linux)链接:https://pan.baidu.com/s/1Uw6SXS8z_IxdkNpLr9y0zQ?pwd=s2i5提取码:s2i5开机密码:jerry/123456安装了Apatche、Tomcat、MySQL、 vsftpd并且配套Web安全测试练习教案。启动Tomcat#/usr/local/apache-tomcat-8.5.81/bin/startup.sh启动MySQL#service mysql start启动Apache#/etc/init.d/apache2 start打开浏览器输入127.0.0.1:8080/sec/5)Metasploitable2-Linux (with vsftpd 2.3.4)链接:https://pan.baidu.com/s/1a71zOXGi_9aLrXyEnvkHwQ?pwd=17g6提取码:17g6开机密码:见页面提示解压后直接为vmx文件,直接可用
文章
关系型数据库  ·  MySQL  ·  应用服务中间件  ·  Linux  ·  Apache  ·  开发工具  ·  数据库  ·  数据安全/隐私保护  ·  git  ·  Windows
2023-02-15
DHCP服务2
DHCP应用DHCP安装1. 依次点击"开始→设置→控制面板→添加/删除程序→添加/删除Windows组件",打开相应的对话框。2. 用鼠标左键点击选中对话框的"组件"列表框中的"网络服务"一项,单击[详细信息]按钮,出现带有具体内容的对话框。3. 在对话框"网络服务的子组件"列表框中勾选"动态主机配置协议(DHCP)",单击[确定]按钮,根据屏幕提示放入Windows 2000安装光盘,复制所需要的程序。4. 重新启动计算机后,在"开始→程序→管理工具"下就会出现"DHCP"一项,说明DHCP服务安装成功。DHCP授权出于对网络安全管理的考虑,并不是在Windows 2000 Server中安装了DHCP功能后就能直接使用,还必须进行授权操作,未经授权操作的服务器无法提供DHCP服务。对DHCP服务器授权操作的过程如下:1. 依次点击"开始→程序→管理工具→DHCP",打开DHCP控制台窗口。2. 在控制台窗口中,用鼠标左键点击选中服务器名,然后单击右键,在快捷菜单中选中"授权",此时需要几分钟的等待时间。注意:如果系统长时间没有反应,可以按F5键或选择菜单工具中的"操作"下的"刷新"进行屏幕刷新,或先关闭DHCP控制台,在服务器名上用鼠标右键点击。如果快捷菜单中的"授权"已经变为"撤消授权",则表示对DHCP服务器授权成功。此时,最明显的标记是服务器名前面红色向上的箭头变成了绿色向下的箭头。这样,这台被授权的DHCP服务器就有分配IP的权利了。添加IP当DHCP服务器被授权后,还需要对它设置IP地址范围。通过给DHCP服务器设置IP地址范围后,当DHCP客户机在向DHCP服务器申请IP地址时,DHCP服务器就会从所设置的IP地址范围中选择一个还没有被使用的IP地址进行动态分配。添加IP地址范围的操作如下:1. 点击"开始→程序→管理工具→DHCP",打开DHCP控制台窗口。2. 选中DHCP服务器名,在服务器名上点击鼠标右键,在出现的快捷菜单中选择"新建作用域",在出现的窗口中单击[下一步]按钮,在出现的对话框中输入相关信息,单击[下一步]按钮3. 在图1所示的窗口中,根据自己网络的实际情况,对各项进行设置,然后单击[下一步]按钮,出现如图2所示的窗口。4. 在图2所示的窗口中,输入需要排除的IP地址范围。由于校园网络中有很多网络设备需要指定静态IP地址(即固定的IP地址),如服务器、交换机、路由器等,此时必须把这些已经分配的IP地址从DHCP服务器的IP地址范围中排除,否则会引起IP地址的冲突,导致网络故障。5. 单击[下一步]按钮,在出现的"租约期限"窗口中可以设置IP地址租期的时间值。一般情况下,如果校园网络中的IP地址比较紧张的时候,可以把租期设置短一些,而IP地址比较宽松时,可以把租期设置长一些。设置完后,单击[下一步]按钮,出现"配置DHCP选项"窗口。6. 在"配置DHCP选项"窗口中,如果选择"是,现在配置",此时可以对DNS服务器、默认网关、WINS服务器地址等内容进行设置;如果选择"否,稍后配置这些选项",可以在需要这些功能时再进行配置。此处,我们选择前者,单击[下一步]按钮。7. 在出现的窗口中,常常输入网络中路由器的IP地址(即默认网关的IP地址)或是NAT服务器(网络地址转换服务器)的IP地址,如WinRoute、SyGate等。这样,客户机从DHCP服务器那里得到的IP信息中就包含了默认网关的设定了,从而可以接入Internet。8. 单击[下一步]按钮,在此对话框中设置有关客户机DNS域的名称,同时输入DNS服务器的名称和IP地址。,然后单击[添加]按钮进行确认。单击[下一步]按钮,在出现的窗口中进行WINS服务器的相关设置,设置完后单击[下一步]按钮。9. 在出现的窗口中,选择"是,激活此作用域"后,单击[下一步]按钮,在出现的窗口中单击[完成]按钮,设置结束。此时,就可以在DHCP管理器中看到我们刚刚建好的作用域。注意:如果您的校园网络是以工作组的形式存在的,可以在第6步的"配置DHCP选项"窗口中选择"否,稍后配置这些选项",此时设置过程跳过第7、8步。如果您的校园网络是以域的形式存在的,建议您的网络配置顺序为:活动目录的建立→WINS的建立→DNS的建立→DHCP的建立,这样可以减少很多麻烦。DHCP测试经过上述设置,DHCP服务已经正式启动,我们需要在客户机上进行测试。只需把客户机的IP地址选项设为"自动获取IP地址",随后重新启动客户机。在客户机的"运行"对话框中键入"Ipconfig/all",即可看到客户机分配到的动态IP地址。DHCP配置DHCP服务器的架设,在安装虚拟机的时候网卡选择桥接的就可以.DHCP基于客户/服务器模式。当DHCP客户端启动时,它会自动与DHCP服务器通信,由DHCP服务器为DHCP客户端提供自动分配IP地址的服务。当然高级的DHCP,不光只是分配地址这么简单,今天我们的课程只是架设一个普通的DHCP的服务器, client端能获取到上网必须的网络配置信息安装了DHCP服务软件的服务器称为DHCP服务器,而启用了DHCP功能的客户机称为DHCP客户端,DHCP服务器是以地址租约的方式为DHCP客户端提供服务的,它有两种方式。DHCP安装在Windows Server 2003系统中安装DHCP服务组件的方法如下:第1步,在"控制面板"窗口中双击"添加或删除程序"图标,打开"添加或删除程序"窗口。单击"添加/删除Windows组件"按钮。第2步,打开"Windows组件向导"对话框,在"组件"列表中双击"网络服务"选项。第3步,打开"网络服务"对话框,在"网络服务 的子组件"列表中选中"动态主机配置协议(DHCP)"复选框。依次单击"确定"→"下一步"按钮。第4步,系统开始安装和配置DHCP服务组件,完成安装后单击"完成"按钮。DHCP服务器服务器租用选择的成功与否,可以说在一定程度上直接影响着网站建设的成功与否。这不论是对大企业,还是中小企业建网站都是一样的。但实际,很多中小企业在建设网站,并选择服务器作为其信息化基础工具时,则出现一些不正确的做法:如为了节省资金,便随便租用或购买一台服务器。结果由于服务器性能低下导致信息系统经常出问题。最终不但没有帮助企业传播信息,提升品牌,反而因系统不稳定,给企业带来负面影响。因此,拥有一款稳定、良好的服务器无疑是企业最基本的选择。那么,企业又该如何选择优秀的服务器呢。第一、资质是最基本的,一定要有齐全的IDC服务商资质。第二、对于中小企业不建议租用一线城市机房的服务器,原因很简单。像北京上海这种一线机房,都是寸土寸金,服务器好不好先不说,但是光机房的成本就比二线、三线城市的要高得多。这费用当然要算到企业的头上。而且二线、三线城市的机房其实是一样的,但是它的成本要低得多。第三、一定要考虑清楚需要什么服务器?比如说品牌、配置,或者说是需要服务器租用、服务器托管还是服务器合租等等。这些都需要根据自身企业的需求来确定。如果自己不清楚,可以选择咨询IDC服务商,不放心的话可以在网上问相关的专业人士。DHCP服务器数据库DHCP迁移在DHCP服务器迁移到Windows Server 2012 R2之前,DHCP服务器需要进行部署评估,DHCP服务器部署是什么样子的。首先,也可能是最简单的需要处理的问题是"我有多少DHCP服务器?"大多数情况下,DHCP服务器独立存在于大多数组织的网络中。DHCP服务器只有通过Windows Server 2012中的IPAM功能才可以集中管理DHCP服务器设置和范围。许多组织使用2台DHCP服务器处理单一范围内的职责,其中一台DHCP服务器托管80%的IP地址,另一台DHCP服务器托管20%。你需要查看使用的地址范围,找出它们是如何跨越现有的DHCP服务器的。你还需要确保记录范围级别选项和服务器级别选项。这是DHCP服务器迁移的一种方法,你需要记录所有的事情,否则出现错误时你必须从头开始重建。DHCP服务器从2003到2012 R2迁移DHCP服务器在确保记录了现有的DHCP服务器配置之后,你可以开始将DHCP服务器数据库从Windows Server 2003主机迁移到Windows server 2012 R2了。DHCP服务器迁移时的诀窍在于使用netsh而不是控制台。如果DHCP服务器控制台试图在两个操作系统之间进行迁移,那么你会进入迁移失败的困境。DHCP服务器从Windows Server 2003服务器上输出时,DHCP服务器需要创建一个名为c:\export的文件夹,DHCP服务器执行该命令将在c:\export文件夹中创建一个名为2k3dhcp-database的文件。DHCP服务器将这个文件复制到运行Windows Server 2012 R2的服务器中,并作为新的DHCP服务器。然后你需要在这台服务器上安装DHCP服务器角色,并在活动目录中授权该DHCP服务器。至此,DHCP数据库已经从Windows Server 2003迁移到Windows Server 2012 R2。
文章
网络协议  ·  网络安全  ·  数据库  ·  网络架构  ·  Windows
2022-12-15
web运行原理与操作系统 | 学习笔记1
目录01 网站是怎么搭建的02 常用的中间件03 网站的运行04 DNS讲解05 windows操作系统06 Linux操作系统01 网站是怎么搭建的一个网站的搭建离不开服务器、中间件、数据库、代码、静态资源这五个部分服务器 一种管理计算资源的计算机,他比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。通常利用服务器操作系统来搭建网站。数据库 按照数据结构来组织、存储和管理数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。中间件 中间件是介于应用系统和系统软件之间的一类软件,就比如apache、nginx、tomcat、iis这些中间件,网站是一个装修好的房子,中间件就是装修房子用的钢筋混凝土。是不可缺少的一部分。代码也就是后端代码,就是我们常见的C,C++,java,python,php等等,这些就属于后端代码,专门用于写网站功能,和连接数据库的。静态资源静态资源也就是前端代码,前端代码就包括html、css、js,前端就是专门用于装修网站,就和你房子装修了一样(注意:HTML是超文本标记语言,不是编程语言哦)02 常用的中间件在web渗透中,中间件的漏洞也不少,那么接下来我们详细介绍一下现在常用的几个中间件。Apache(音译为阿帕奇是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Nginx是一款轻量级的Web服务器反向代理服务器及电子邮件代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Tomcat是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。主要是用于java。IIS是Internet Information Services的缩写,是一个World Wide Web server。Gopher server和FTP server全部包容在里面。 IIS意味着你能发布网页,并且有ASP、JAVA、VBscript产生页面,有着一些扩展功能。IIS,互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和Windows Server 2003一起发行。03 网站的运行原理(一)网站的常用术语客户端:连接到互联网的应用程序,即浏览器服务器:能上网的计算机,用于接收和处理用户的请求信息IP地址:互联网协议地址,TCP/IP网络设备的数字标识符,用于识别和通信,ipv4和ipv6域名:用于标识一个或多个ip地址DNS:域名系统,用于跟踪计算机的域名及其在互联网上相应的ip地址ISP:互联网服务提供商TCP/IP:传输控制协议/互联网协议HTTP:超文本传输协议(二)运行原理1、输入网址,如www.baidu.com(http://www.baidu.com),http是协议,www是网络服务类型,baidu.com是域名;2、浏览器与ISP通信,在DNS中查找www.baidu.com的IP地址,然后发送给DNS服务,最后向www.baidu.com的IP地址发送请求;3、浏览器获取IP地址和端口,打开TCP套接字连接,实现浏览器和web服务器的连接;4、发送用户HTTP请求给服务器;5、web服务器根据请求查找相应的HTML页面,并返回。(三)运行原理图04 DNS的讲解DNS域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。为什么会有DNS呢?原因很简单,当我们在上网的时候,通常输入的是网址,我们能记住的是域名,而网络上的计算机彼此之间只能用IP地址才能相互识别。例如访问今日头条,我们可以在浏览器的地址栏中输入网址,也可输入IP地址,但是IP地址不好记,于是有了域名,这样我们可以很容易的记住。05 Windows操作系统windows操作系统,是由美国微软公司(Microsoft)研发的操作系统,问世于1985年。起初是MS-DOS模拟环境,后续由于微软对其进行不断更新升级,提升易用性,使Windows成为了应用最广泛的操作系统。Windows采用了图形用户界面(GUI),比起从前的MS-DOS需要输入指令使用的方式更为人性化。随着计算机硬件和软件的不断升级,Windows也在不断升级,从架构的16位、32位再到64位,系统版本从最初的Windows 1.0到大家熟知的Windows 95、Windows 98、Windows 2000、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11和Windows Server服务器企业级操作系统,微软一直在致力于Windows操作系统的开发和完善。06 Linux操作系统Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,Linux有上百种不同的发行版,如基于社区开发的debian、centos,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。windows和Linux有什么区别呢1、 内核不同,Linux操作系统使用Linux内核,Windows操作系统使用NT内核;Linux内核代码开源,NT内核代码闭源,也就是说任何人都可以拿着Linux内核代码改成自己喜欢的风格来用,不过前提是你得是技术大牛。2、Linux是免费的,Windows是收费的,不过不代表所有Linux都是免费的,有一部分进行商业运作的Linux是收费的,比如Redhat Linux。3、Windows软件支持丰富,而Linux软件支持就很少了,因为Windows硬件驱动厂商支持全面,Linux驱动这块不如Windows全面,比如百分之九十九的游戏都可以在Windows上运行,而Linux上只有很简陋的游戏。4、Windows易用性高,Linux操作系统有一定的门槛,Linux使用命令行字符模式为主要操作方式,Windows使用窗口、图标、鼠标点击形象化的方式为主要操作方式,如果不懂命令行,基本使用Linux是寸步难行的。5、市场和安全性,Linux市场主攻服务器市场,Windows系统主打桌面市场,Linux主要应用于网络,而Windows操作系统最开始应用于打印服务。Linux安全性比Windows安全性高,要求它更加可靠。下篇文章:虚拟机环境的搭建
文章
网络协议  ·  前端开发  ·  中间件  ·  Java  ·  Linux  ·  应用服务中间件  ·  Apache  ·  数据库  ·  nginx  ·  Windows
2022-11-11
计算机网络的应用层
6.1域名系统DNS(Domain Name System)一、DNS服务作用将http://www.91xueit域名变成192.13.14.15IP地址,计算机才可以正常的访问网站。域名解析的访问网站之前进行的。QQ能登录,但是网页打不开,这说明网络层是正常的,但是应用层的域名解析可能出现了问题。(此时QQ能够正常的登录是其可以选择IP直接登录服务器,而不用选择域名打开)总结:DNS服务的作用就是负责解析域名,将域名解析成IP8.8.8.8 是google的DNS服务器,222.222.222.222是电信的DNS服务器,能够用来帮忙解析域名地址。二、因特网的域名结构因特网采用了层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。域名的结构由标号序列组成,各标号之间用点隔开:各标号分别代表不同级别的域名。域名必须全球唯一,需要注册。域名层次结构如下:根 .顶级域名 com, edu, net,cn,org,govcom 代表商业性网站edu 代表教育性质网站net 代表服务信息类.cn 表示中国,.us 表示美国,.uk 表示英国org 代表组织gov 代表政府部门二级域名 91xueit, inhe,例如91xueit.com是全球唯一的域名。网站习惯用www来标识三级域名 dba,例如www.dba.91xueit.com操作1:使用Ping解析域名命令:Ping www.baidu.com分析:可见,域名解析的结果是14.215.177.39。故www.baidu.com的ip地址就是14.215.177.39.验证:操作2:使用nslookup解析域名命令:nslookup www.baidu.com.分析:同样可以解析出百度的ip地址,其中14.215.177.39与14.215.177.38均可以使用。三、域名解析过程  计算机一律将需要查询的域名询问com这个顶级域名,如果巧合这个域名刚好在com域名下,会直接返回结果。否则com会询问根DNS,得知在其他的顶级域名例如net,net会返回查询结果给com,在转会计算机。这个过程得益于域名的分布式存储查询。四、安装自己的DNS服务器1、几个需要安装自己DNS服务器的场景解析内网自己的域名降低到Ineternet的域名解析流量内网有域环境,必须通过DNS来找到内网的控制器2、安装配置过程以下两步需要windows服务器版本,最好使用虚拟机来测试。3、DNS服务器的使用6.2动态主机配置协议DHCP一、静态IP与动态IP1、静态IP地址设置2、动态IP地址设置二、DHCP客户端请求IP地址的过程这是一个动态IP地址的请求和分配过程。客户机在网中发广播请求地址,目标IP是4个255,目标MAC地址是全FF。DHCP收到后,会从地址池里选一个给客户机。如果网络中有2个DHCP服务端且都给了反馈,此时计算机还需要返回一个数据通知他选择了谁提供的地址。另一个DHCP客户端发现没要他的,于是收回他提供的。从这个角度看,网络中不能有太多的DHCP服务端。三、DHCP服务的安装DHCP必须是固定的IP地址。释放租约命令:ipconfig /release重新获得IP地址命令:ipconfig /renev查看网络状态信息:ipconfig /all四、跨网段地址分配1、对于同一个网段的IP地址分配如果是同一个网段计算机想DHCP服务器申请地址,DHCP服务器就会查看自己的IP地址确定自己所处于的网段,然后在IP池中找一个本网段IP分配给计算机。2、对于不同一个网段的IP地址分配如果不是同一个网段计算机想DHCP服务器申请地址,这时必须在其所在网段的路由器的网关上配置写上DHCP服务器的IP地址,命令为:Iphelper address 192.168.0.100,这时广播包才可以访问到DHCP服务器。DHCP服务器接受到了广播包,就查看该计算机所处于的网段挑选一个合适的IP地址返回。五、DHCP跨网段分配地址的具体介绍1、DHCP创建作用域对两个网段分别设置作用范围和网关等信息第一个作用范围第二个作用范围此时是请求不到地址的,因为路由器收到了请求也不知道找谁,没有设置地址。2、设置跨网段请求192.168.2.0/24网段的设置命令:interface fastEthernet 6/0 (该网段对应的路由器接口是6/0)ip helper-address 192.168.0.100192.168.1.0/24网段的设置命令:interface fastEthernet 1/0 (该网段对应的路由器接口是1/0)ip helper-address 192.168.0.1006.3文件传输协议FTP(File Transfer Protocol)一、FTP协议的概述与特点1、FTP协议概述文件传送协议 FTP (File Transfer Protocol) 是因特网上使用得最广泛的文件传送协议。FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。2、FTP协议特点文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。3、网络环境下复制文件的复杂性(1) 计算机存储数据的格式不同。(2) 文件的目录结构和文件命名的规定不同。(3) 对于相同的文件存取功能,操作系统使用的命令不同。(4) 访问控制方法不同。二、FTP 使用的两个 TCP 连接方式FTP的连接方式包括控制连接和数据连接。每上传/下载一个文件就会建立一个会话。控制连接:标准端口为21,用于发送FTP命令信息。数据连接:标准端口为20,用于上传/下载数据。三、FTP数据连接的建立类型涉及到主动模式和被动模式1、主动模式FTP客户端告诉FTP服务器(的21端口)它在使用什么端口侦听,然后FTP服务器(的20端口)主动地和FTP客户端的这个端口建立连接。2、被动模式FTP服务器端打开在指定范围内的某个新的端口(例如1089端口)并且进行侦听,被动地等待客户端发起连接。综上,在有防火墙的情况下,如果使用被动模式,防火墙不得不开很多端口来监听。因此应该使用主动模式来进行数据连接,并在防火墙开21和20端口。四、FTP的传输模式文本模式:ASCLL模式,以文本序列传输数据二进制模式:Binary模式,以二进制序列传输数据五、FTP服务的安装与配置1、安装流程选择好安装光驱(点击已连接)Windows组件向导–>应用程序服务器–>Internrt信息服务(IIS)–>文件传输协议(FIP)服务2、两种方式访问ftp站点利用网页访问ftp站点利用Windows资源管理器访问ftp站点传输一个文件就要建立一个会话,传输两个文件就要建立两个会话。netstat -n查看会话没有看见20端口,所以是被动模式。Ftp协议默认是被动模式。3、切换模式(主动模式与被动模式的切换)既支持主动模式,也支持被动模式,完全由客户端的选项来选择。4、只开20,21端口的ftp启动被动模式不能访问只允许20/21端口的操作Windows资源管理器访问ftp站点为空白,所以只开20,21端口的ftp启动被动模式不能访问,开主动模式就可以正常查看。6.4远程终端协议TELNET和距离没有关系,只要存在网络就可以成功通过telnet实现控制另一台计算机。默认使用TDP23端口。1、远程连接方法启用想要连接的计算机telnet服务在另外一个计算机上输入telnet + 想要控制计算机的IP,然后输入密码。net user administrator a1! 更改用户密码net user han a1! /add 添加用户可以正常控制,比如在被控制的计算机中创建一个文件夹2、远程控制操作远程添加用户和计算机组远程关机(-t 0表示立即执行关机)测试到远程的某个主机的某个端口能否打开,起到端口扫描的功能(以上实验需要telent服务端才可以使用,windows不提供,但是可以安装)6.5远程桌面协议RDP远程连接服务器进行管理,和远程终端协议类似,但是这个是图形界面的。可用于远程管理服务器,可以使用客户端直接连接,利用mstsc。一、被控制端启用远程桌面远程桌面协议RDP使用的是TCP+3389端口。服务已选中,就会进行监听。二、控制端实现控制windows+r,输入mstrc,输入IP地址输入管理员账号就可以进行操作后台连过去了,但是不会影响当前登录的人。但是当前登录的人可以查到有人连接过来了。也就是允许多用户共同操作。几点注意只能同时连接两个人,不容许第三个人。将用户添加到远程桌面组Remote Desktop Users组就能远程进行连接了。这些Server端的服务器都是多用户操作系统,启动远程桌面可以多用户同时使用服务器。XP和Windows7是单用户操作系统,不支持多用户同时登陆,只能一个退出了另外一个用户再连接。三、本地硬盘映射到远程远程连接时点击选项点击本地资源,点击详细信息选择需要映射的驱动器连接过去之后就可以在远程电脑操作本地的资源。拷贝文件非常方便。6.6超文本传输协议HTTP通过这个http协议访问网站一、WWW万维网万维网提供分布式服务www.baidu.com提供关键字的搜索服务1、简单概念介绍浏览器:都是网站的客户端服务器程序:Windows2003/2008都可以在计算机上配置服务器(IIS)万维网服务器:运行网站的硬件服务统一资源定向符URL:一个链接定位到一个页面或者是图片,也就是超链接跳转。(使用的是默认端口,所以后面不用写端口)2、网站标识方法对于一个服务器上创建的多个Web站点,需要加以区分。否者同一个IP地址的服务器再使用相同的端口,会造成网页的访问冲突。因为不知道想要访问这个服务器上面的那一个网页。网站标识方法的方法如下:可以用端口来区分80端口对于一个网站,81端口对于另外的一个网站可以用IP地址来区分为服务器添加一个IP地址,192.168.80.66地址给一个标识一个网站,192.168.80.77地址给标识另外的一个网站。可以用主机头(域名)来访问。如果地址和端口都相同会造成冲突,需要用主机头来标识。但是这时需要配置DNS服务器添加域来实现不同域名的标识3、主机头区分网站标识的具体实现给91xueit这个网站配置了两个域名,使用的是192.168.80.66:80的地址和端口,其中一个主机头域名是www.abc.com给baidu这个网站配置域名,使用同样是的是192.168.80.66:80的地址和端口。但是配置了不同的主机头。域名为www.sou.com现在想要正常的访问这两个IP地址和端口都相同的网站,需要配合DNS服务器来使用,分别为主机有配置区域,添加主机记录。如此配置,使用不同的域名就可以访问不同的网站。所以可以使用一个地址,一个端口,再配合域名来区分既可成功实现。但是此时就不能用地址来打开网页了,因为会引起冲突。二、Web服务与站点设置1、Web服务的安装Windows组件向导–>应用程序服务器–>Internet信息服务(IIS)–>万维网服务–>消息信息中的万维网服务安装完成,只有安装了这个服务,此计算机才能作为Web站点2、Web站点的创建网站就是一组网页,将html文件和对应的资源cp放在文件夹中。在网络信息服务管理器中,创建网站输入描述–>IP地址,端口,主机头设置–>设置网站的路径–>完成右键点击属性,设置网站的首页为index.html输入IP地址,可以正常的访问服务器上C盘的网页,并且通过IP地址和网页的名称可以访问其他的网页。 如下访问baoming.html网页使用域名www.abc.com来访问访问网站。需要在服务器中新建区域创建域名abc.com,然后再添加主机,写上域名想要访问的地址。这样客户端就可以使用www.abc.com访问91xueqi这个网站。3、为服务器添加IP地址此时网站有两个地址,一个是192.168.86.77和192.168.86.66。百度使用66服务器地址,91xueit使用服务器77端口就可以正常的区分,使用了两个个公网地址(使用的是网络标识的第二种方法)三、使用Web代理服务器访问网站1、使用Web代理服务器的场景节省内网访问Internet的带宽因为代理Web服务器具有缓存功能,对于内网向外的访问不需要每次路由出去找,可以在代理的缓存中找到,这样就节省了带宽。代理服务器可以饶过防火墙(fanqiang)可以避免跟踪因为计算机通过一个代理如果要进行追溯的话,是找不到的。2、代理服务器的使用查看代理服务器的IP地址个端口(由于代理服务器的IP地址就是服务器的地址,不用多管),代理服务器的端口是808。工具–>Internet选项–>连接–>局域网设置–>代理服务器(打钩)–>写上代理服务器的IP地192.168.80.66址和端口808。可见可以正常的通过代理服务器上网,netstat -n可以查看到与808端口的会话对于客户端来说,如果使用了代理的服务器,可以不需要DNS解析域名,也不需要网关路由地址。3、代理服务器具有控制上网能力可以配置密码和账号上网的时候就需要输入用户名和密码(不仅如此,代理服务器还可以控制那些IP地址或Mac地址可以上网)6.7电子邮件协议(SMTP,POP3,IMAP)SMTP发电子邮件,POP3和IMAP是收电子邮件。(IMAP功能更强大)一、收发邮箱的过程foxmial将写好的邮件发送到邮箱过程叫做中继。中继需要实名身份验证账号和密码,不能匿名。二、准备邮箱服务器实验环境配置图如下配置完成三、安装和配置邮件服务器对91xueitMail和51ctoMail安装POP3和STMP服务在网络信息服务中选择SMIP服务分布式文件系统服务其实就是POP3服务对DNS服务器安装DNS服务具体过程:安装POP3和SMTP服务以及DNS服务在DNS服务器上创建91xueit.com和51cto.com,创建主机记录mail 192.168.80.100并创建邮件交换记录 MX记录在POP3服务上创建域名,创建邮箱(收邮件pop3和imcp都可以)配置SMIP服务器,创建远程域名*.com,允许发送到远程配置outlookExpreww 指明收件的服务器和发邮件的服务器,使用POP3协议收邮件搭建能够在Internet上使用的邮件服务器在Internet上注册了域名 MX记录邮件服务器有公网IP地址 或端口映射到邮件服务器 SMIP TCP参考链接https://www.bilibili.com/video/BV17p411f7ZZ?p=130
文章
域名解析  ·  存储  ·  缓存  ·  网络协议  ·  搜索推荐  ·  网络安全  ·  数据安全/隐私保护  ·  网络架构  ·  数据库管理  ·  Windows
2022-11-10
虚拟机的IP经常变化,日期不同步
背景以前装了虚拟机后,一开始设置的是动态IP, dhcp 的,好长时间没用了;最近重新开始使用虚拟机了,一开始IP是 192.168.169.128 ,然后就三天两头的变化,每次变化都增加1,这过了大概一星期,IP已经变到了 192.168.169.131 ,就想着看怎么把这个IP固定下来。环境[root@hadoop1 local]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) [root@hadoop1 local]# uname -a Linux hadoop1 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux虚拟机的IP经常变化,怎么办?动态IP刚安装好虚拟机,CentOS7操作系统,通过 ip a 或者 ifconfig 未查看到IP地址;# 配置动态IP [root@hadoop1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 bootproto=dhcp onboot=yes # 重启 [root@hadoop1 ~]# reboot这是一开始配置的动态IP,然后就出现了在几天时间内,IP地址莫名其妙地发生变化,接着便想办法把IP固定下来。静态IP# 配置静态IP [root@hadoop1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=static IPADDR=192.168.169.130 # 重启 [root@hadoop1 ~]# rebootNote:根据操作系统版本的不同,在 /etc/sysconfig/network-scripts/ 目录下不一定有 ifcfg-ens33 这个文件,但应该有一个类似文件名的配置文件。验证:通过 ip a 或者 ifconfig 可以看到配置的IP地址,并且之后IP地址固定不变。域名ping不通了问题采用上述方式配置了静态IP后,发现NTP服务无法正常同步,接着ping了下百度。[root@hadoop1 ~]# ntpdate ntp1.aliyun.com Error resolving ntp1.aliyun.com: Name or service not known (-2) 23 Jul 12:38:40 ntpdate[118769]: Can't find host ntp1.aliyun.com: Name or service not known (-2) 23 Jul 12:38:40 ntpdate[118769]: no servers can be used, exiting [root@hadoop1 ~]# ping www.baidu.com ping: www.baidu.com: 未知的名称或服务解决方法# 配置静态IP [root@hadoop1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 DNS1=192.168.169.2 GATEWAY=192.168.169.2 # 重启网络: [root@hadoop1 ~]# service network restart Restarting network (via systemctl): [ OK ]Note:GATEWAY与DNS1必须都配置了,否则还会报错:# 不配GATEWAY [root@hadoop1 ~]# ping www.baidu.com connect: 网络不可达 # 不配DNS1 [root@hadoop1 ~]# ping www.baidu.com ping: www.baidu.com: 未知的名称或服务总结最终的配置如下,以下配置解决了我的虚拟机IP三天两头变化的问题;TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=6663e0ef-a2c8-48c7-b982-0569ba0bad8f DEVICE=ens33 ONBOOT=yes IPADDR=192.168.169.130 DNS1=192.168.169.2 GATEWAY=192.168.169.2虚拟机的日期时间与实际不一致,怎么办?使用虚拟机时,经常遇到电脑休眠后,虚拟机也休眠,导致虚拟机启动后的时间不同步,这时可通过NTP服务进行时间同步;虚拟机执行 date 命令发现日期不正确,与当前时间差了12小时,格式是 EDT 。使用 NTP (Network Time Protocol)同步后,依然不正确。此时就需要进行如下设置了。# 实际时间 2021年7月26日12:50:38 [root@hadoop2 ~]# date 2021年 07月 26日 星期一 00:50:47 EDT # NTP时钟同步 [root@hadoop2 ~]# ntpdate ntp1.aliyun.com 26 Jul 00:51:16 ntpdate[67431]: step time server 120.25.115.20 offset -2.724103 sec # NTP时钟同步后,依然不正确 [root@hadoop2 ~]# date 2021年 07月 26日 星期一 00:51:20 EDT方法一修改时区: timedatectl set-timezone Asia/Shanghai# 原来,时区设置指向了美国纽约 [root@hadoop2 ~]# ll /etc/localtime lrwxrwxrwx. 1 root root 38 7月 30 2020 /etc/localtime -> ../usr/share/zoneinfo/America/New_York # 修改时区 [root@hadoop2 ~]# timedatectl set-timezone Asia/Shanghai [root@hadoop2 ~]# date 2021年 07月 26日 星期一 12:56:13 CST # 查看新的软链接 [root@hadoop2 ~]# ll /etc/localtime lrwxrwxrwx. 1 root root 35 7月 26 12:56 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai方法二创建软链接: ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 备份 [root@hadoop2 ~]# mv /etc/localtime /etc/localtime.bak # 创建软链接 [root@hadoop2 ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime方法三直接覆写: cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 备份 [root@hadoop2 ~]# mv /etc/localtime /etc/localtime.bak # 使用新时区覆盖 [root@hadoop2 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeNote:NTP时钟同步可实现服务器时间校准:yum install ntpdatentpdate ntp1.aliyun.com 或者 ntpdate cn.pool.ntp.org 或者ntp[1-7].aliyun.com
文章
Linux
2022-06-22
Linux笔记
1. 初识Linux在前面的课程中,我们无论是开发、测试。部署、存储都在Windwos操作系统的环境中,从今天开始我们一起学习下Linux,Linux系统和Windows系统最大的区别就是图形化界面操作和用途上有所差异,除了这两点,两者有异曲同工之妙,在国内, Linux 系统更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows,也就是说Linux与Windows一样,同样也是操作系统只是在使用以及应用上有所差异,其他都是一样的; 因为Linux也是操作系统 所以在正式进入Linux学习之前,我们先简单的学习操作系统的知识,然后在讲解Linux1.1 操作系统操作系统(Operation System, OS),是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。操作系统作为接口的示意图:如上图所示,在操作系统的最上层是用户,中间层是操作系统(里面可能装了很多的应用程序),最下层是硬件的支撑,包含CPU/内存/硬盘等这就是一个完成的操作系统结构图主流操作系统按照应用领域的划分1、桌面操作系统Window 系列用户群体大macOS细节处理的更好, 没有windows软件丰富, 价格高Linux应用软件少2、服务器操作系统Linux安全、稳定、免费占有率高Windows Server付费占有率低3、嵌入式操作系统 Linux4、移动设备操作系统IOSAndroid (基于Linux)华为鸿蒙(基于linux)1.2 Linux发展历程引子 在上面,我们学习了操作系统的知识,也知道了主流操作系统按照应用领域划分了四个类型的操作系统,其中Linux操作系统在四个领域都有提名,因为它是至今开源序列最好的操作系统,下面,我们就一起看下Linux的发展历程,看看它是怎么诞生的...1984年,Andrew S.Tanenbaum 开发了用于教学的Unix系统,命名为Minix,但是仅仅用于教学1989年,Andrew S.Tanenbaum将Minix系统运行于x86的pc平台1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触Minix系统1991年,Linus Torvalds开始在Minix上编写各种驱动程序等操作系统内核组件1991年年底,Linus Torvalds公开了Linux内核源码0.02版,仅仅是内核1994年,Linux 1.0版本发行,Linux转向GPL版权协议至此,Linux开始盛行开来…Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 Unix操作系统 Minix 太难用了,于是决定自己开发一个操作系统。第 1 版本于 1991 发布,当时仅有 10 000 行代码。李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。据估计,现在只有 2% 的 Linux 核心代码是由李纳斯•托瓦兹自己编写的,虽然他仍然拥有 Linux 内核(操作系统的核心部分),并且保留了选择新代码和需要合并的新方法的最终裁定权。现在大家所使用的 Linux,我更倾向于说是由李纳斯•托瓦兹和后来陆续加入的众多 Linux 好者共同开发完成的。UnixUnix 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。Unix 的商标权由国际开放标准组织(The Open Group)所拥有。Unix操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。1.3 Linux简介引子 Linux和我们常见的Windows一样,都是操作系统, 例如:新浪、百度、淘宝等互联网公司,他们使用的服务器全都是Linux系统;全球500强企业95%的服务器使用的都是Linux系统。1.3.1 什么是 LinuxLinux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 的标志和吉祥物是一只名字叫做Tux(它克斯)的企鹅,Linux是基于Unix的。Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux操作系统不仅仅是被网络运维人员当作服务器使用,Linux既可以当作服务器,又可以当作网络防火墙是Linux的 一大亮点。Linux与其他操作系统相比 ,具有开放源码、没有版权、技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈 ,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。1.3.2 Linux的特点基本思想Linux的基本思想有两点:第一:一切都是文件第二:每个软件都有确定的用途其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近完全免费Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。完全兼容POSIX1.0标准这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。多用户、多任务Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。良好的界面Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。支持多种平台Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。优点1)Linux由众多微内核组成,其源代码完全开源;2)Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、 TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈;3)Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性;1.4 Linux和Unix区别1、开源情况Unix 是商业化的,而 Linux 是开源的,是免费、公开源代码的。2、硬件适用Unix 系统大多是与硬件配套的,也就是说,大多数Unix系统如AIX、HP-UX等是无法安装在 x86 服务器和个人计算机上的,而 Linux则可以运行在多种硬件平台上。可以先学习Linux后再学习Unix,因为Linux可以方便的在虚拟机上运行,防止新手的误操作。3、本质不同Linux是开放源代码的自由软件,用户对前者有很高的自主权,在实际的的开发是处在一个完全开放的环境之中;而Unix是对源代码实行知识产权保护的传统商业软件,用户的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型;Unix 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 Unix是操作系统中的"老大哥",后来的 Windows 和 Linux 都参考了 Unix1.5 Linux和Windows区别目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下比较WindowsLinux界面界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 Unix传承下来,基本命令和操作方法也几乎一致。驱动程序驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。使用使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。图形界面使用简单,容易入门。文字界面,需要学习才能掌握。学习系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。软件每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。大部分软件都可以自由获取,同样功能的软件选择较少。Windows与Linux在其他方面的不同开放性所谓的开放性就是Linux 操作系统是开放源码系统,可以对其程序进行编辑修改。而微软的Windows 系统是受微软版权保护,就是只能微软内部进行开发及修改。文件格式不同Windows 操作系统内核是NT,而Linux 是 shell;另外,windows 硬盘文件格式是fat32或NTFS,而Linux 需要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区免费与收费在中国,对个人用户Windows 和Linux 都是免费的,对公用户Windows 需要收费,Linux 是免费的。技术支持Windows 较普及。Linux 需要深度的Linux 版块支持。安全性Linux 相对Windows 来说安全性更高。开源开源就是指对外部开放软件源代码。Linux 开源,而Windows并不开源。使用习惯Windows 放弃了dos的字符模式,主攻图形界面,让桌面系统更易用。Linux 字符模式运行的更好,图形界面还只是附带品,可有可无。软件与支持Windows 下可以运行绝大部分软件、玩99.999%的游戏、硬件厂商近乎100%的支持。Linux 下可直接运行的软件数量和win下比起来就是1和99的区别,而且目前选择Linux 的人基本不会考虑玩游戏,同时Linux 正期待更多硬件厂商的支持1.6 Linux发行商和常见发行版Linux发行版是由个人,自由组织,以及商业机构和志愿者组织编写。它们通常包括了其他的系统软件和应用软件,以及一个用来简化系统初始安装的安装工具,和让软件安装升级的集成管理器。大多数系统还包括了像提供GUI界面的XFree86之类的曾经运行于BSD的程序。一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件Linux发行版的某些版本是不需要安装,只需通过CD或者可启动的USB存储设备就能使用的版本,他们称为LiveCD。Linux的版本号分为两部分:内核版本和发行版本。1.Linux的内核版本内核版本指的是在Linus Torvalds领导下的开发小组开发出的系统内核的版本号,通常,内核版本号的第二位是偶数表示是稳定的版本,如2.6.25;是奇数表示有一些新的东西加入,是不稳定的测试版本,如2.5.6。Linux操作系统的核心就是它的内核,Linus Torvalds和他的小组在不断地开发和推出新内核。任务:进程调度、内存管理、配置管理虚拟文件系统、提供网络接口以及支持进程间通信。像所有软件一样,Linux的内核也在不断升级。2.Linux的发行版本一个完整的操作系统不仅仅只有内核,还包括一系列为用户提供各种服务的外围程序。外围程序包括GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。所以,许多个人、组织和企业,开发了基于GNU/Linux的Linux发行版,他们将Linux系统的内核与外围应用软件和文档包装起来,并提供一些系统安装界面和系统设置与管理工具, 这样就构成了一个发行版本。实际上,Linux的发行版本就是Linux内核再加上外围的实用程序组成的一个大软件包而已。相对于操作系统内核版本,发行版本的版本号是随发布者的不同而不同,与Linux系统内核的版本号是相对独立的,例如:RedHat EnterpriseLinux 5.2的操作系统内核是Linux-2.6.18。Linux的发行版本大体可以分为两类:一类是商业公司维护的发行版本一类是社区组织维护的发行版本,前者以著名的RedHatLinux为代表,后者以Debian为代表以下为Linux的主流版本:目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等以下是主要的发行版本需要注意的: 下面的内容主要是介绍了下Linux发行家族以及发行版本的一些详细信息,虽然我们当前的课程讲解的是CentOS,但是其他的一些发行商、主流的发行版本比如Ubuntu、Redhat也需要让学生多多了解下,毕竟这是Linux体系内产品线 注意 下面的文字虽然很多,但是只要让学生知道有这么回事即可 在下面会简单的总结..1、Debian 介绍Debian名字的由来----DebianGNU/Linux是由一个叫做伊恩·默多克(IanMurdock)在1993年发起的,他的名字以Ian开头,他太太的名字Debra开头三个字母是Deb。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由 Ian Murdock于1993年创建,分为三个版本分支: stable(服务器版), testing(稳定版) 和unstable(测试版)。2、Ubuntu介绍Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。共分三个版本:基于Gnome的Ubuntu,基于KDE的Kubuntu以。基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。稳定性,其实都差不多,难易度嘛,Ubuntu 默认桌面环境采用 GNOME,一个 Unix和 Linux 主流桌面套件和开发平台。Ubuntu的版本和发布号Ubuntu的版本号是由该次发布的年份和月份组成,并未反映其实际版本。我们的首次发布是在2004年10月,因此该版本为4.10。当前版本(DapperDrake)于2006年6月发布,因此版本号为6.06 LTS。3、Redhat可能这是最著名的Linux版本了,Red Hat Linux已经创造了自己的品牌,越来越多的人听说过它。Red Hat在1994年创业,当时聘用了全世界500多名员工,他们都致力于开放的源代码体系。Red Hat Linux是公共环境中表现上佳的服务器。它拥有自己的公司,能向用户提供一套完整的服务,这使得它特别适合在公共网络中使用。这个版本的Linux也使用最新的内核,还拥有大多数人都需要使用的主体软件包。Red Hat Linux的安装过程也十分简单明了。它的图形安装过程提供简易设置服务器的全部信息。磁盘分区过程可以自动完成,还可以选择GUI工具完成,即使对于 Linux新手来说这些都非常简单。选择软件包的过程也与其他版本类似;用户可以选择软件包种类或特殊的软件包。系统运行起来后,用户可以从Web站点和 Red Hat那里得到充分的技术支持。我发现Red Hat是一个符合大众需求的最优版本。在服务器和桌面系统中它都工作得很好。Red Hat的唯一缺陷是带有一些不标准的内核补丁,这使得它难于按用户的需求进行定制。 Red Hat通过论坛和邮件列表提供广泛的技术支持,它还有自己公司的电话技术支持,后者对要求更高技术支持水平的集团客户更有吸引力4、FedoraFedora和Redhat这两个Linux的发行版放联系很密切。Redhat 自9.0以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora 这个 Linux 发行版。Fedora项目是由 Red Hat 赞助,由开源社区与 Red Hat 工程师合作开发的项目统称。Fedora 的目标,是推动自由和开源软件更快地进步。特点:1、 Fedora 是一个开放的、创新的、前瞻性的操作系统和平台,基于 Linux。它允许任何人自由地使用、修改和重发布,无论现在还是将来。可运行的体系结构包括x86(即i386),x86_64 和PowerPC!2、Fedora 可以说是Redhat 桌面版本的延续,只不过是与开源社区合作。3、Fedora 是一个独立的inux发行版本的操作系统。5、centosCentOS(Community ENTerprise Operating System)是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用(我会告诉你,以为企业想省钱,运维要靠这个东西来赚钱嘛,国内运维主流是CentOS剩下版本很少)。两者的不同,在于CentOS并不包含封闭源代码软件,CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本。每个版本的CentOS都会获得十年的支持(通过安全更新方式)。新版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境6、Slackware介绍Slackware 由PatrickVolkerding(帕特里克.沃克登)创建于1992年。算起来应当是历史最悠久的Linux发行版。尽管如此,Slackware仍然深入人心(大部分都是比较有经验的 Linux老手)。Slackware稳定、安全,所以仍然有大批的忠实用户。由于Slackware尽量采用原版的软件包而不进行任何修改,所以制造新 bug的几率便低了很多。Slackware的版本更新周期较长(大约1年),但是新版本的软件仍然不间断的提供给用户下载。7、openSUSE介绍SUSE是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统也大受好评。SUSE于2003年年末被Novell收购。SUSE在收购之后的发布显得比较混乱,比如9.0版本是收费的,而10.0版本(也许由于各种压力)又免费发布。这使得一部分用户感到困惑,也转而使用其它发行版本。最近还跟微软扯到了一起。但是瑕不掩瑜,SUSE仍然是一个非常专业、优秀的发行版。openSUSE 项目是由Novell公司资助的全球性社区计划,旨在推进 Linux 的广泛使用。这个计划提供免费的openSUSE 操作系统。这里是一个由普通用户和开发者共同构成的社区,我们拥有一个共同的目标—创造世界上最好用的 Linux 发行版。openSUSE 是 Novell 公司发行的企业级 Linux 产品的系统基础。openSUSE 项目是由Novell 发起的开源社区计划。 旨在推进 Linux 的广泛使用。提供了自由简单的方法来获得世界上最好用的 Linux 发行版,SUSE Linux。openSUSE 项目为 Linux 开发者和爱好者提供了开始使用 Linux 所需要的一切。8、中国大陆的Linux发行版红旗Linux(RedflagLinux) ,冲浪Linux(Xteam Linux) ,蓝点Linux , GNU/Linux,OpenDesktop等等 。9、 台湾地区的Linux发行版鸿奇Linux目前最著名的发行版本:Debian,ubuntu、OpenSuse(原Suse)、CentOS、fedora等。国内比较著名的红旗Linux版本对于上面的知识我们做下重点总结redhat:目前,全球最大的linux发行厂商,功能全面、稳定。Redhat 被 IBM 收购!ubuntu:目前,是linux桌面操作系统做的最好的。centos:免费版的redhat,centos基于redhat发行版基础之上,再重新编译发布的版本。目前 centos 已经被 Redhat 公司收购,但是依然免费1.7 Linux 应用领域今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位。在企业级开发中,我们通常使用Linux作为我们的服务器。比如:服务器系统Web应用服务器、数据库服务器、接口服务器、DNS、FTP等等;嵌入式系统路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器等等,高性能运算、计算密集型应用Linux有强大的运算能力。目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。巴西联邦政府由于支持 Linux 而世界闻名。有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。法国和德国同样开始逐步采用 Linux。1.8 Linux之CentOS前面章节介绍了一些Linux的基本知识,前已经对Linux有了一个初步的认识,也知道了在Linux发行版中有各个家族的发行版本;比如比较知名的ubuntu、CentOS,在今天的Linux课程中我们将采用发行版CentOS作为我们Linux课程的讲解内容。CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本;是一个稳定,可预测,可管理和可复制的免费企业级计算平台主要特点:1.主流: 目前的Linux操作系统主要应用于生产环境,主流企业级Linux系统仍旧是RedHat或者CentOS2.免费: RedHat 和CentOS差别不大,CentOS是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本3.更新方便:CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RED HAT那样需要花钱购买支持服务!我们在当前课程中的环境:Windows7 , VMware Workstation15.02, CentOS Linux release 7.6.18101.9 总结当前章节主要介绍了Linux发行的主要版本(我们使用的是CentOS Linux release 7.6.1810 )、以及与Unix、Windows系统的区别;主要让学生了解Linux是基于Unix的以及与Windows一样,Linux也是操作系统即可。2 系统与设置命令在前面的两个章节中,我们主要介绍了Linux基本知识和虚拟机的安装,从当前章节开始,我们一起学习下Linux的基本命令,在当前章节,我们先简单的学习下一些系统的基本命令,慢慢的由浅入深,在后面的章节中我们将学习其他的命令比如文件操作、备份压缩等2.1 学习命令的原因命令我们可以理解成在Windows中我们常常为了查看ip输入的ipconfig,在Linux中也有很多的命令,比如操作目录、文件、网络、磁盘等等命令Linux刚面世时并没有图形界面, 所有的操作全靠命令完成, 如 磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等在职场中,大量的 服务器维护工作 都是在 远程 通过SSH客户端 来完成的, 并没有图形界面, 所有的维护工作都需要通过命令来完成在职场中, 作为后端程序员或者运维, 必须要或多或少的掌握一些Linux常用的终端命令Linux发行版本的命令大概有200多个, 但是常用的命令只有几十个而已总结 学习终端命令的技巧: - 不需要死记硬背, 对于常用命令, 记住语法是关键,在用的时候去查下参数选项,有的很常用的命令,用的多自然就记住了 - 不要尝试一次学会所有的命令, 有些命令是非常不常用的,临时遇到,就去根据语法找参数选项2.2 Linux 用户和用户组管理2.2.1 Linux账号管理从当前章节开始,我们正式进入CentOS的学习,我们先从简单的命令开始,比如操作账号、用户组、系统管理等。 在实际使用场景中,用户账号的管理主要涉及到用户账号的添加、修改和删除操作。 现在,我们就通过命令的方式添加用户账号(账号名字可以自定义,但是是要符合书写规范) 在操作前,确保我们的SecureCRT成功连接到了虚拟机. 下面的章节不在赘述SecureCRT,默认已经成功连接。1) 添加用户我们在Windows创建账号主要是是控制面板--用户账户--创建一个新账户,这是在Windows创建账户的流程,而在Linux中,我们可以通过命令的方式进行创建账户使用者权限:管理员用户useradd 选项 用户名参数说明:选项:-c comment 指定一段注释性描述。-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。-g 用户组 指定用户所属的用户组。-G 用户组,用户组 指定用户所属的附加组。-s Shell文件 指定用户的登录Shell。-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。用户名:指定新账号的用户名(后续我们可以使用这个用户名进行系统登录)。添加用户czbk(传智播客的首拼)执行useradd czbk我们使用useradd命令创建了一个用户czbkuseradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。执行如下由上图我们发现,我们在使用useradd新增用户的时候,出现了权限不足,也就是说我们使用用户itcast没有创建用户的权限。我们通过管理员账号root进行创建,首先我们从控制台中切换到rootsu root在 密码的地方输入我们的root密码【root】即可进入到root用户下。我们在root下继续创建czbk用户以下是useradd常用选项2) 用户口令引子: 相当于我们在Windows系统中给个用户更改密码,只是我们在CentOS中是更改密码是通过命令完成的。用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用使用者权限:管理员用户指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:passwd 选项 用户名可使用的选项:-l 锁定口令,即禁用账号。-u 口令解锁。-d 使账号无口令。-f 强迫用户下次登录时修改口令。设置当前用户的口令passwd czbk此处我们设置密码和itcast账号密码一致,为【Itheima888】3) 修改用户相当于我们在Windows系统中修改一个用户,只是我们在CentOS中是修改用户是通过命令完成的。usermod 命令通过修改系统帐户文件来修改用户账户信息修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。使用者权限:管理员用户修改已有用户的信息使用usermod命令,其格式如下:usermod 选项 用户名下面命令将用户czbk用户名修改成czbk2019usermod -l czbk2019 czbk以下是usermod常用选项4) 删除用户相当于我们在Windows系统中删除一个用户,只是我们在CentOS中是删除用户是通过命令完成的。假如我们其中一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。使用者权限:管理员用户删除一个已有的用户账号使用userdel命令,其格式如下:userdel 选项 用户名-f:强制删除用户,即使用户当前已登录;-r:删除用户的同时,删除与用户相关的所有文件此命令删除用户czbk2019userdel czbk2019成功删除用户czbk2019以下是userdel常用选项2.2.2 Linux用户组引子:为了方便用户管理, 提出了 组 的概念, 如下图所示新增一个账户,它默认属于自己(账户)的组比如新建账户【张三】,那么它默认对应的组就是张三一个用户可以有一个或者多个组假如说(如上图),我们在企业级开发过程中,我们有多个组,其中一个开发组对应三个账户,张三、李四、王五、如果就像上面提到的,一个用户默认对应一个组,那么三个账户张三、李四、王五就有了三个不同的组,如果大家都操做一个文件,在进行权限分配的时候,就要对不同的三个组进行授权,显然这样是不合理的,因为太过繁琐。所以,才有了组(新建组)的概念,我们把张三、李四、王五统一放到【开发组】,在对文件授权的时候,我们只对【开发组】进行授权由此,这样的话【张三、李四、王五】都有相等的权利操作了。1) 增加用户组新增一个用户组(组名可见名知意,符合规范即可),然后将用户添加到组中使用者权限:管理员用户groupadd 选项 用户组使用的选项有:-g GID 指定新用户组的组标识号(GID)。-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同新增用户组czbk-itgroupadd czbk-it上面的命令向系统中增加了一个新组czbk-it,新组的组标识号是在当前已有的最大组标识号的基础上加1以下是groupadd常用选项2) 修改用户组使用者权限:管理员用户groupmod 选项 用户组常用的选项有:-g GID 为用户组指定新的组标识号。-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。-n新用户组 将用户组的名字改为新名字groupmod -n czbk-it-2019 czbk-it上面的命令将组czbk-it的组名修改为czbk-it-2019。以下是groupmod常用选项3) 查询用户所属组在查询用户所属的用户组前,我们先增加一个用户ituser-groupsuseradd ituser-groups要查询一个用户属于哪个用户组,使用groups命令,其格式如下groups 用户名查询用户ituser-groups属于某个用户组,执行groups命令groups ituser-groups由此可见,ituser-groups用户属于用户组ituser-groups(用户组默认与用户名一样)4) 删除用户组使用者权限:管理员用户要删除一个已有的用户组,使用groupdel命令,其格式如下groupdel 用户组删除czbk-it-2019用户组groupdel czbk-it-2019删除成功以下是groupdel常用选项2.2.3 将用户添加到组引子: 在上面我们学习如何新增用户,也学习了如何新增用户组,在当前的小节中,我们新建一个用户、新建一个用户组、然后把新建的用户添加到新的组中 在实际开发过程中,我们通常把多个用户按照业务需求归并到统一的一个组中,进行有序管理1、创建一个新的组,并添加组ID(需要切换到root用户)groupadd -g 8888 itbj2020group执行效果如下2、创建3个用户(需要切换到root用户)useradd itbeijinguser1 useradd itbeijinguser2 useradd itbeijinguser33、将上面三个用户添加到组itbj2020group我们通过passwd命令将三个用户添加到组什么是gpasswd:gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。语法gpasswd [可选项] 组名将上面的三个用户使用gpasswd添加到组(需要切换到root用户)gpasswd -a itbeijinguser1 itbj2020group gpasswd -a itbeijinguser2 itbj2020group gpasswd -a itbeijinguser3 itbj2020group执行如下查看用户组下所有用户(所有用户)注意此处的grep命令我们将在文件管理章节详细讲解,这里先使用它查看下效果grep 'itbj2020group' /etc/group执行效果如下(或者直接打开/etc/group文件都可以)由上图可知:三个用户全部都加入到了itbj2020group组。2.3 系统管理系统管理,说的就是我们的CentOS系统,它不同于Windwos,CentOS是字符界面,我们需要通过命令进行操作,在当前章节,我们先从基本命令学起,比如创建用户、设置密码、修改用户以及用户组的相关操作。也为我们后面的章节打下基础2.3.1 日期管理当前日期如果通过date进行设置,在系统重启后不会保存date的设置,常用的只是通过date命令查看日期date 可以用来显示或设定系统的日期与时间使用者权限:所有用户语法如下:date [参数选项]参数-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;-u:显示GMT;–help:在线帮助;–version:显示版本信息1、设置时间用 -s选项可以设置系统时间,如下:date -s "2019-12-11 16:15:00"2、显示时间date(1)UTC协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。。(2)GMT即格林尼治 平太阳时间,是指格林尼治所在地的标准时间,也是表示地球自转速率的一种形式**外文名:**Universal Time其他外文名G.M.T.(Greenwich Mean Time)(3)CST北京时间 (中国国家标准时间)北京时间是中国采用国际时区东八时区的区时作为标准时间。北京时间并不是北京(东经116.4°)的地方时间,而是东经120°的地方时间,故东经120度地方时比北京的地方时早约14分半钟。因为北京处于国际时区划分中的东八区,同格林尼治时间(世界时)整整相差8小时(即北京时间=世界时+8小时),故命名为“北京时间”。东八区包括的范围从东经112.5°到东经127.5°,以东经120°为中心线,东西各延伸7.5°,总宽度为15°的区域。而中国幅员辽阔,东西相跨5个时区(即东五区、东六区、东七区、东八区、东九区5个时区)授时台必须建在地理中心地带,从而也就产生了长短波授。“北京时间”与“北京当地时间”是两个概念, “北京时间”的发播不在北京,而在陕西蒲城(处于东七区)(4)东八区东八区(UTC/GMT+08:00)是比世界协调时间(UTC)/格林尼治时间(GMT)快8小时的时区,理论上的位置是位于东经112.5度至127.5度之间,是东盟标准的其中一个候选时区。当格林尼治标准时间为0:00时,东八区的标准时间为08:00总结: 上面提到了很多知识:即UTC/GMT/CST/东八区 总结一下就是,北京时间(中国国家标准时间CST)采用东八区区时,即: 协调世界时(UTC)+8 / 格林尼治时间(GMT)+8 也就是说+8后的时间才是北京时间2.3.2 显示用户logname命令用于显示用户名称。执行logname指令,它会显示目前用户的名称语法为如下:logname [--help][--version]参数:–help  在线帮助。–vesion  显示版本信息。显示登录账号的信息logname2.3.3 su切换账户引子: 比如我们在新增用户、修改用户或者操作用户组的时候常常需要切换到管理员账户,这个时候,我们就可以使用su进行快速切换su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。使用权限:所有使用者。语法如下:su变更帐号为 root 并在执行 ls 指令后退出返回原使用者su -c ls root切换到rootsu root这样的话,我们就进入到了root用户下。2.3.4 id命令我们如果需要查看当前账号详细信息的时候,比如查看它的用户id、群组id以及所属组的时候,我们就可以使用id命令进行查看id命令用于显示用户的ID,以及所属群组的ID。id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。使用者权限:所有用户语法id [-gGnru][--help][--version][用户名称]参数说明:-g或–group  显示用户所属群组的ID。-G或–groups  显示用户所属附加群组的ID。-n或–name  显示用户,所属群组或附加群组的名称。-r或–real  显示实际ID。-u或–user  显示用户ID。-help  显示帮助。-version  显示版本信息。显示当前用户信息id执行效果如下总结id命令参数虽然很多但是常用的也就是id命令,不带参数的主要看他的uid和组信息2.3.5 sudo执行比如我们使用普通用户操作用户或者操作用户组、以及修改网卡配置文件的时候,需要切换到root用户才操作,此时我们可以使用sudo命令提高普通用户的操作权限,以达到操作目的sudo:控制用户对系统命令的使用权限,root允许的操作。通过sudo可以提高普通用户的操作权限使用者权限:普通用户语法如下:sudo -Vsudo -hsudo -lsudo -vsudo -ksudo -ssudo -Hsudo [ -b ] [ -p prompt ] [ -u username/#uid] -ssudo command参数说明:-V 显示版本编号-h 会显示版本编号及指令的使用方式说明-l 显示出自己(执行 sudo 的使用者)的权限-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)-b 将要执行的指令放在背景执行-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell-H 将环境变数中的 HOME 指定为要变更身份的使用者HOME目录(如不加 -u 参数就是系统管理者 root )command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令sudo命令使用sudo ls指定root用户执行指令sudo -u root ls -l修改网卡配置文件比如,在下面的例子中,我们使用普通用户修改网卡的配置文件,在进行保存的时候,提示我们【无法打开并写入文件】,那么此时,我们可以通过sudo命令来提升自己的写入权限执行:vi /etc/sysconfig/network-scripts/ifcfg-ens33执行效果如下(保存)然后点击回车那么我们在修改上面的 命令,使用sudo进行修改sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33执行效果如下(键入itcast密码)执行保存我们发现此时就不在报错了2.3.6 top命令在企业级开发中,开发人员(运维人员也会经常使用)常常为了查看服务器上运行的程序占用的CPU情况以及占用内存情况,目的就是检测我们的程序是否在正常范围内运行top命令用于实时显示 process 的动态。使用权限:所有使用者。显示进程信息top执行效果如下各进程(任务)的状态监控属性解释说明:PID — 进程idUSER — 进程所有者PR — 进程优先级NI — nice值。负值表示高优先级,正值表示低优先级VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESRES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATASHR — 共享内存大小,单位kbS — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程%CPU — 上次更新到现在的CPU时间占用百分比%MEM — 进程使用的物理内存百分比TIME+ — 进程使用的CPU时间总计,单位1/100秒COMMAND — 进程名称(命令名/命令行)显示完整命令,与top命令不同的就是command属性像是进行了命令补全top -c执行效果如下显示指定的进程信息,以下显示进程号为6972的进程信息,CPU、内存占用率等top -p 6972执行效果如下top命令的用法很多但是常用的就是top(不带参数),有的时候,在进程比较多的时候,我们常常记住进程的pid,然后通过top -p pid进行查看也就是说,top+ top -p是经常被用到的2.3.7 ps命令ps命令类似于我们在Windows中通过任务管理器查看进程信息Linux ps命令用于显示当前进程 (process) 的状态信息使用者权限:所有用户语法如下:ps显示进程信息ps -A显示指定用户信息ps -u itcast显示所有进程信息ps -ef2.3.8 kill命令引子: 前面,我们刚刚学习完了Windows上开发,比如,我们经常遇到的要给问题就是,我们需要经常的启动或者重启tomcat,有的时候会报端口冲突,这个时候,我们可能就去Windows的任务管理器中去结束这个进程 那么在Linux中我们可以通过kill命令来实现Windwos上手工结束进程的操作Linux kill命令用于删除执行中的程序或工作(可强制中断)使用者权限:所有用户语法如下:kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]参数说明:-l <信息编号>  若不加<信息编号>选项,则-l参数会列出全部的信息名称。-s <信息名称或编号>  指定要送出的信息。[程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。杀死一个进程kill 15642强制杀死进程kill -KILL 15642彻底杀死进程kill -9 15642杀死指定用户所有进程1.方法一 过滤出itcast用户进程kill -9 $(ps -ef | grep itcast)2.方法二,直接杀死kill -u itcast注意上面列举了很多kill进程的命令但是我们我们常用的就是kill -9命令,我们常常找到进程的pid然后通过kill -9进行杀死进程2.3.9 关机命令shutdown命令可以用来进行关闭系统,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机使用者权限:管理员用户语法如下:shutdown [-t seconds] [-rkhncfF] time [message]参数说明:-t seconds : 设定在几秒钟之后进行关机程序。-k : 并不会真的关机,只是将警告讯息传送给所有使用者。-r : 关机后重新开机。-h : 关机后停机。-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。-c : 取消目前已经进行中的关机动作。-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)。-F : 关机时,强迫进行 fsck 动作。time : 设定关机的时间。message : 传送给所有使用者的警告讯息。立即关机shutdown -h now 或者 shudown指定1分钟后关机,1分钟关机并显示警告信息shutdown +1 “System will shutdown after 1 minutes”指定1分钟后重启,并发出警告信息shutdown –r +1 “1分钟后关机重启”2.3.10 重启命令reboot命令用于用来重新启动计算机使用者权限:管理员、普通(需要验证)用户语法如下:reboot [-n] [-w] [-d] [-f] [-i]参数:-n : 在重开机前不做将记忆体资料写回硬盘的动作-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)-f : 强迫重开机,不呼叫 shutdown 这个指令-i : 在重开机之前先把所有网络相关的装置先停止开始重新启动reboot重启效果如下此时我们的虚拟机正在重启**(别忘记使用root用户执行)**2.3.11 who命令在企业级开发过程中,我们使用who命令的时候常常需要快速重启服务器,在重启之前需要检测下有没有终端在连接(处理程序),如果有,可能就不会重启(会私下询问何时弄完,弄完后在重启),如果没有其他人连接,将执行快速重启who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等使用者权限:所有使用者都可使用。语法如下:who - [husfV] [user]参数说明:-H 或 --heading:显示各栏位的标题信息列;-i 或 -u 或 --idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;-m:此参数的效果和指定"am i"字符串相同;-q 或–count:只显示登入系统的帐号名称和总人数;-s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;-w 或-T或–mesg或–message或–writable:显示用户的信息状态栏;–help:在线帮助;–version:显示版本信息显示当前登录系统的用户who显示明细(标题)信息who -H由上图可知,截止到现在只有itcast在线。2.3.12 timedatectl命令引子: timedatectl是用于控制系统时间和日期。可以用来查询和更改系统时钟于设定,同时可以设定和修改时区信息。 在实际开发过程中,系统时间的显示会和实际出现不同步;我们一般为了校正服务器时间、时区的时候会使用timedatectl命令使用者权限:所有使用者都可使用,设置时间需要管理员,下面会标注。几个常见的概念,进行总结如下:显示系统的当前时间和日期,使用命令行中的timedatectl命令timedatectl status执行效果如下在上面的示例中,分别显示时区、CST时间和UTC时间,其中,RTC time就是硬件时钟的时间,硬件时间默认为UTC。查看当前时区timedatectl | grep Time 或者 timedatectl执行效果如下上图显示中国时区查看所有可用的时区timedatectl list-timezones执行效果如下(下面数据没有截全)设置本地时区timedatectl set-timezone "Asia/Shanghai"执行效果如下禁用时间同步(使用管理员账户)timedatectl set-ntp false 在执行 timedatectl set-time "2019-03-11 20:45:00"执行效果如下注意: 如果ntp时间同步为true时无法修改时间设定,下面马上介绍打开ntptimedatectl set-ntp true 在执行 timedatectl set-time "2019-03-11 20:45:00"执行效果如下(ntp时间同步为true时无法修改时间设定)报错信息 如下启用时间同步NTP即Network Time Protocol(网络时间协议),是一个互联网协议,用于同步计算机之间的系统时钟。timedatectl实用程序可以自动同步你的Linux系统时钟到使用NTP的远程服务器。要开始自动时间同步到远程NTP服务器,在终端键入以下命令。timedatectl set-ntp true比如,在上面我们使用timedatectl set-time “2019-03-11 20:45:00”,如下图此时我们执行timedatectl set-ntp true,发现时间正常同步过来了如下图要禁用NTP时间同步,在终端键入以下命令timedatectl set-ntp false执行上面的 命令即可关闭ntp总结在实际使用过程中我们经常使用timedatectl进行时区、CST、UTC的设置2.3.13 clear命令clear命令用于清除屏幕使用者权限:所有使用者都可使用。语法clear执行clear前执行clear后通过执行clear命令,就可以把缓冲区的命令全部清理干净了2.3.14 exit命令exit命令用于退出目前的shell。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。退出码(exit status,或exit code)的约定: 0表示成功(Zero - Success) 非0表示失败(Non-Zero - Failure) 2表示用法不当(Incorrect Usage) 127表示命令没有找到(Command Not Found) 126表示不是可执行的(Not an executable) >=128 信号产生语法如下exit [状态值]退出终端# exitexit会被经常在shell中使用我们在明天的课程【综合案例】中会使用到exit2.4 总结用户账号管理和用户组是我们在实际使用过程中常用的命令,学习完创建账号、创建组后,需要通过gpasswd命令将用户添加到组,这也是我们学习的最终目的系统管理的常用命令都是在开发过程中经常使用到的3 Linux目录管理注意: 在下面的讲解中,每个命令都有很多的参数说明(选项),我们只讲其中的几个,关键是让学生掌握命令的语法;学生学习完语法后,就可以自己按照参数书写各种命令,这也是我们最终的目的。常用命令,我们在企业级开发过程中,经常书写的命令。会非常被容易记住,不常用的命令,只要我们学习完了语法之后,在去查找参数手册,会非常容易的解决我们的问题,所以,每个命令不是建立在死记硬背的基础上的,要理解语法+查找参数=解决问题3.1 Linux 文件与目录管理在Linux系统中,所有的的目录结构为树状结构,最顶级的目录为根目录 /。 在实际开发过程中,文件的操作是非常频繁也是非常重要的 下面的章节我们将学习下Linux系统所有的系统目录和文件通过命令是如何进行管理的3.1.1 目录常用命令ls: 列出目录cd: 切换目录pwd: 显示目前的目录mkdir:创建一个新的目录rmdir:删除一个空的目录cp: 复制文件或目录rm: 移除文件或目录mv: 移动文件与目录或修改文件与目录的名称自动补全在敲出 文件/ 目录 / 命令 的前几个字母之后, 按下 tab键如果还存在其他 文件 / 目录 / 命令, 再按一下tab键, 系统会提示可能存在的命令1) ls (列出目录)ls命令相当于我们在Windows系统中打开磁盘、或者打开文件夹看到的目录以及文件的明细,如下图【查看磁盘下的目录与文件】【查看文件夹下的目录与文件】注意:在Linux系统当中, ls 命令算是比较常用的命令使用者权限:所有使用者都可使用。语法如下:ls [选项] 目录名称选项与参数:-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)-d :仅列出目录本身,而不是列出目录内的文件数据(常用)-l :长数据串列出,包含文件的属性与权限等等数据;(常用)将根目录下的所有文件列出来(含属性与隐藏档)ls -al ~执行效果如下ls -lls -l 可以查看文件夹下文件的详细信息, 从左到右 依次是:权限(A区域), 第一个字符如果是 d 表示目录硬链接数(B区域), 通俗的讲就是有多少种方式, 可以访问当前目录和文件属主(C区域), 文件是所有者、或是叫做属主属组(D区域), 文件属于哪个组大小(E区域):文件大小时间(F区域):最后一次访问时间名称(G区域):文件的名称ls总结 以上三种是经常被使用到的命令 它们之间的区别是 ls 显示不隐藏的文件与文件夹 ls -l 显示不隐藏的文件与文件夹的详细信息 ls -al 显示所有文件与文件夹的详细信息2) pwd显示当前目录执行pwd命令相当于我们在Windows系统路径导航栏中查看到的当前浏览位置信息如下图pwd 是 Print Working Directory 的缩写,也就是显示目前所在当前目录的命令。使用者权限:所有使用者都可使用。查看当前所在目录pwd -P执行效果如下3) cd (切换目录)Linux的cd切换目录,相当于我们在Windows中通过鼠标或者快捷键点开不同的目录注意:在Linux系统当中, cd 命令算是比较常用的命令cd是Change Directory的缩写,这是用来变换工作目录的命令使用者权限:所有使用者都可使用。语法如下:cd [相对路径或绝对路径]在正式学习cd命令前面,我们通过下面一个座位图的形式讲解下相对路径和绝对路径是怎么表现的。绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法啦!1、使用相对路径定位目标特征: 相对路径 输入路径时, 最前面不是以 “/” 开始的, 表示相对 当前目录 所在的位置缺点: 参照工作目录 发生变化 相对路径也要发生变化需求1: 当前工作目录是 /usr, 使用相对路径 切换到 /usr/tmp 目录下 需求2: 当前工作目录是 /root, 使用相对路径 切换到 /usr/tmp 目录下执行效果如下注意: cd ~ 表示回到根目录2、使用绝对路径定位目标特征: 绝对路径 在输入路径时, 最前面是以 / 开始的, 表示 从 根目录 开始的具体目录位置优点: 定位准确, 不会因为 工作目录变化 而变化需求1: 当前工作目录是 /usr, 使用绝对路径 切换到 /usr/tmp 目录下 需求2: 当前工作目录是 /root, 使用绝对路径 切换到 /usr/tmp 目录下执行效果如下总结相对路径 在输入路径时, 最前面不是以 / 开始的 , 表示相对 当前目录 所在的目录位置绝对路径 在输入路径时, 最前面是以 / 开始的, 表示 从 根目录 开始的具体目录位置4) mkdir(创建目录)引子: Linux的mkdir命令相当于我们在Windows中通过鼠标或者快捷键新建文件夹mkdir命令用于建立名称为 dirName 之子目录使用权限:于目前目录有适当权限的所有使用者语法mkdir [-p] dirName参数说明:-p 确保目录名称存在,不存在的就建一个建立一个名为jinyanlong 的子目录mkdir jinyanlong执行效果如下查看新建的 文件在工作目录下的 aaa目录中,建立一个名为 bbb的子目录。 若 aaa目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 aaa目录不存在,则产生错误。)mkdir -p aaa/bbb执行效果如下这里为了显示更直观,我们使用了tree命令后面在讲解到yum的时候,会详细讲解此处先使用由上图我们发现,aaa目录被强制创建,里面包含了bbb文件。5) rmdir(删空目录)Linux的rmdir命令相当于我们在Windows中通过鼠标或者快捷键删除文件夹。 稍微有点不同的就是在Linux中删除子目录的时候,如果主目录下没有了目录以及文件,会连同主目录同时删除了(需要写Linux带有P的参数)rmdir命令删除空的目录使用权限:于目前目录有适当权限的所有使用者。语法rmdir [-p] dirName参数:-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。将工作目录下,名为 jinyanlong 的子目录删除 :rmdir jinyanlong在工作目录下的 aaa目录中,删除名为 bbb的子目录。若 bbb删除后,aaa目录成为空目录,则 aaa同时也会被删除rmdir -p aaa/bbb总结:rmdir -p aaa/bbb也就是说在删除bbb目录完成后,发现aaa目录也是空目录了,在删除完bbb后aaa也同时被删除了。6) cp(文件复制)Linux的cp命令相当于我们在Windows中通过鼠标或者快捷键复制文件或者目录cp命令主要用于复制文件或目录。使用权限:于目前目录有适当权限的所有使用者语法cp [options] source dest或cp [options] source... directory参数说明:-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。-f:覆盖已经存在的目标文件而不给出提示。-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。-r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。-l:不复制文件,只是生成链接文件。我们将当前目录"aaa/"下的所有目录以及文件复制到新目录"ccc"下,输入如下命令:1、数据准备创建aaa目录并且aaa下包含bbb目录mkdir -p aaa/bbb mkdir -p ccc执行效果如下aaa目录下有bbbccc下面没有目录和文件2、执行复制cp –r aaa/* ccc执行效果如下我们将aaa下面的所有文件、目录复制到了目录c下面总结:用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。如果不加参数"-r"或者"-R",只复制文件,而略过目录7) rm(删除目录)Linux的rm命令相当于我们在Windows中通过鼠标或者快捷键删除文件或者目录rm命令用于删除一个文件或者目录。使用权限:于目前目录有适当权限的所有使用者语法rm [options] name...参数:-i 删除前逐一询问确认。-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r 将目录及以下之档案亦逐一删除。如果我们要删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:rm -r ccc执行删除,如下图注意文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令如果删除文件(比如.sh 、.txt)直接使用rm name.txt8) mv(移动文件)Linux的mv命令相当于我们在Windows中通过鼠标或者快捷键剪切(+重命名)+粘贴文件或者目录mv 命令用来为文件或目录改名、或将文件或目录移入其它位置语法mv [options] source dest mv [options] source... directory参数说明:-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;1、创建aaa目录、 mkdir aaa 2、开始重命名 mv aaa bbb执行后将ccc目录放入ddd目录中。注意,如果ddd目录不存在,则该命令将ccc改名为ddd。创建ccc mkdir ccc开始移动 mv ccc/ ddd由上图我们发现,由于ddd目录不存在,所以在mv的时候将ccc目录改名为了ddd。3.2 Linux 文件基本属性在Wndows系统中,我们可以选中一个文件,右键属性,可以查看到这个文件的文件类型(基本信息),以及文件的权限信息,在Linux中,它是通过不同字符的排序顺序来表示文件的类型以及权限所属信息的。Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。下面我们就一起学习下Linux系统不同权限的文件和目录在怎么表示的在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:ls -l实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。当为[ d ]则是目录当为[ - ]则是文件;若是[ l ]则表示为链接文档(link file);若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。每个文件的属性由左边第一部分的10个字符来确定(如下图)。从左至右用0-9这些数字来表示。第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-“字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用”-"字符表示,则没有执行权限。3.3 Linux文件属主和属组引子: 对于一个文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。 也就是所谓的属主,它属于哪个用户的意思。 除了属主,还有属组,也就是说,这个文件是属于哪个组的(用户所属的组)。 文件的【属主】有一套【读写执行权限rwx】 文件的【属组】有一套【读写执行权限rwx】 还有它权限,下面我们在介绍在以上实例中,aaa文件是一个目录文件,属主和属组都为 itcast,属主有可读、可写、可执行的权限(rwx);与属主同组的其他用户有可读可写和可执行的权限(rwx);其他用户也有可读和可执行的权限(r-x)。3.3.1 chgrp更改属组实际开发中我们经常会创建新建目录和文件,一般情况下,通过命令进行新建, 在创建完成后,使用不同的用户访问,可能就会出现报错,无法访问等等问题。 然后经过一番这查找,发现该有的文件都在,大小写也没问题,路径也没问题 其实并不是这些问题。而是权限问题导致我们无法访问!是因为一个文件默认隶属于一个属组,而使用其他用户访问这个文件肯定无法访问(因为访问用户所属的组和文件所在的不是同一个组) 那么怎么可以正常访问呢?其实就是通过更改用户组(用户组、文件组)来解决这些问题chgrp命令用于变更文件或目录的所属群组。文件或目录权限的的拥有者由所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可为了方便初学者记忆,可以将 chgrp 理解为是 “change group” 的缩写语法如下chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]改变文件的群组属性我们通过root用户进入(如下图),上接上面的例子我们的aaa文件的属主和属组都属于itcast(如下图)我们现在通过chgrp命令将文件aaa的属组更改成root(其他也可以)chgrp -v root aaa执行效果如下我们通过下面的命令查询文件aaa的属组是否发生了变化,执行ls -l由上图我们发现,文件aaa的属组由itcast变成了root这样的话,文件的属组就发生了变化。3.3.2 chown更改属主和属组**我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限(属主) 我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组(属组),然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的Linux是多任务操作系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限使用权限 : 管理员账户语法如下chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名我们通过root用户进入(如下图),上接上面的例子我们的aaa文件的属主属于itcast、属组属于root我们现在通过chgrp命令将文件aaa的属主更改成root,执行chown root aaa效果如下我们通过下面的命令查询文件aaa的属主是否发生了变化,执行ls -l由上图我们发现,文件aaa的属主和属组都变成了root。我们将aaa文件的拥有者与群组改回为itcast:注意:chown命令可以更改属主和属组chown itcast:itcast aaa我们通过下面的命令查询文件aaa的属主是否发生了变化,执行ls -l由上图可知,aaa文件的属主和属组都被更改回来了。3.3.3 chmod权限命令Linux文件属性有两种设置方法,一种是数字,一种是符号Linux的文件调用权限分为三级 : 文件属主、属组、其他。利用 chmod 可以控制文件如何被他人所调用。使用权限 : 所有使用者语法chmod [-cfvR] [--help] [--version] mode file...参数说明mode : 权限设定字串,格式如下[ugoa...][[+-=][rwxX]...][,...]解释:u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。+表示增加权限、- 表示取消权限、= 表示唯一设定权限。r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。1) 数字权限Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组(owner/group/others就是所说的三个一组 )的,我们也可以使用数字来代表各个权限,各权限的分数对照表如下各权限的数字对照表:[r]:4;[w]:2;[x]:1;[-]:0每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:owner = rwx = 4+2+1 = 7group = rwx = 4+2+1 = 7others= — = 0+0+0 = 0所以等一下我们设定权限的变更时,该文件的权限数字就是770啦,变更权限的指令chmod的语法是这样的chmod [-R] xyz 文件或目录选项与参数:xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更上面的 可以表示如下chmod -R 770 档案或目录上面说了这么多,我们举例说明一下:我们进入itcast用户创建文件czbk.txttouch as.txt然后切换到root比如,我们如果要将as.txt这个文件所有的权限都设定启用那么命令如下:chmod -R 777 as.txt由此可见,as.txt的属主权限、属组权限、其他权限都发生了改变由之前的【-rw-rw-r–】变成【-rwxrwxrwx】根据前面的换算我们已经知道如何将一个文件的属主、属组、其他权限换算成数字了,换算成数字后,我们只需要通过chmod命令即可更改文件的权限2) 符号权限还有一个改变权限的方法,就是 符号权限,我们先回顾下之前提到的9个权限(1)user 属主权限(2)group 属组权限(3)others 其他权限那么我们就可以使用 u, g, o 来代表三种身份的权限!此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:上接上面的例子,如下图我们将as.txt的权限设置为**-rwxr-xr–**执行chmod u=rwx,g=rx,o=r as.txt由上图我们发现,as.txt的权限变成了-rwxr-xr–假如我们要将权限去掉而不改变其他已存在的权限呢?举个例子,比如我要拿掉全部人的可读权限,则chmod a-r as.txt执行如下由此可见,as.txt的其他权限都没有了,变成了【—】3.4 综合案例在前面的章节中我们讲解了用户、用户组、文件属主、属组以及权限,知识点比较零散,下面,我们就通过一个简单小案例把这些知识点串联起来需求:比如一个公司的开发团队有三个用户:java、erlang、golang有一个文件目录tmp/work供他们开发,如何实现让这三个用户都对其具有写权限1、首先,我们创建三个账户(切换到root)adduser java adduser erlang adduser golang执行效果如下2、增加用户组groupadd -g 8888 dev-group执行效果如下3、创建公共文件并设置权限给文件/tmp/project2019/设置属组为dev-groupmkdir /tmp/project2019 chown -R :dev-group /tmp/project2019/ 或者 chgrp -R dev-group /tmp/project2019/执行效果如下4、将用户添加到组gpasswd -a java dev-group gpasswd -a erlang dev-group gpasswd -a golang dev-group执行效果如下查询dev-group组下所有用户grep 'dev-group' /etc/group执行效果如下5、切换到java用户切换到java用户看看是否有写入权限su java新建文件在我们上面创建的目录tmp/project2019/下面创建文件mkdir java-files-new由此发现,我们在tmp/project2019/下面创建文件发生了权限不足,我们去查看下tmp/project2019/的文件属性,如下图我们在/tmp目录下执行ls -l执行效果如下我们发现目录project2019的文件属性为【drwxr-xr-x】根据前面学的知识,我们拆分如下【d】:文件类型【rwx】:属主【r-x】:属组【r-x】:其他现在答案就出来了,也就是说我们的属组权限是【r-x】,只有读和执行权限,没有写入权限,那么下面我们就给project2019目录增加写入权限。6、增加写入权限给project2019目录增加写入权限,执行下面的命令(前面已经学习过了)记得切换到root下执行chmod -R 770 project2019此时我们发现project2019目录的属组权限变成了【rwx】即可读、可写、可执行7、切换用户,继续写入su java mkdir java-files-new ls -l执行效果如下由此发现,这个时候我们有了写入权限,java-files-new文件被成功写入那么,其他两个用户golang、erlang也是和java一个组的,他们能不能正常写入呢,我们试试(从root切换过去)su su erlang mkdir erlang-files-new ============================== su su golang mkdir golang-files-new ls -l执行效果(erlang新建文件)执行效果(golanglang新建文件)查看所有文件由此可见,我们组的三个用户都成功创建了文件(拥有了写入权限)8、验证结论为了验证上面的结论,我们新增一个用户itbeijing看看能否正常新建文件useradd itbeijing su itbeijing mkdir itbeijing-files-new执行效果如下由上图我们发现,我们刚刚新创建的用户在创建文件的时候发现了权限不足。由此说明用户itbeijing用户的属组和文件的属组不一样,所以没有权限。3.5 总结在企业级开发过程中,实际操作目录是最经常出现的,对于目录常用命令我们要熟练掌握并能熟练编写因为Linux是多用户系统,所以权限也是非常核心和重要的,我们要熟练编写权限(属主、属组、其他权限)的常用命令。HTML 30739 字数 1088 段落
文章
Ubuntu  ·  安全  ·  网络协议  ·  Unix  ·  Java  ·  Linux  ·  Shell  ·  程序员  ·  数据安全/隐私保护  ·  Windows
2022-08-27
Linux笔记(一)
1 初识Linux在前面的课程中,我们无论是开发、测试。部署、存储都在Windwos操作系统的环境中,从今天开始我们一起学习下Linux,Linux系统和Windows系统最大的区别就是图形化界面操作和用途上有所差异,除了这两点,两者有异曲同工之妙,在国内, Linux 系统更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows,也就是说Linux与Windows一样,同样也是操作系统只是在使用以及应用上有所差异,其他都是一样的; 因为Linux也是操作系统 所以在正式进入Linux学习之前,我们先简单的学习操作系统的知识,然后在讲解Linux1.1 操作系统操作系统(Operation System, OS),是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。操作系统作为接口的示意图:如上图所示,在操作系统的最上层是用户,中间层是操作系统(里面可能装了很多的应用程序),最下层是硬件的支撑,包含CPU/内存/硬盘等这就是一个完成的操作系统结构图主流操作系统按照应用领域的划分1、桌面操作系统Window 系列用户群体大macOS细节处理的更好, 没有windows软件丰富, 价格高Linux应用软件少2、服务器操作系统Linux安全、稳定、免费占有率高Windows Server付费占有率低3、嵌入式操作系统 Linux4、移动设备操作系统IOSAndroid (基于Linux)华为鸿蒙(基于linux)1.2 Linux发展历程引子 在上面,我们学习了操作系统的知识,也知道了主流操作系统按照应用领域划分了四个类型的操作系统,其中Linux操作系统在四个领域都有提名,因为它是至今开源序列最好的操作系统,下面,我们就一起看下Linux的发展历程,看看它是怎么诞生的...1984年,Andrew S.Tanenbaum 开发了用于教学的Unix系统,命名为Minix,但是仅仅用于教学1989年,Andrew S.Tanenbaum将Minix系统运行于x86的pc平台1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触Minix系统1991年,Linus Torvalds开始在Minix上编写各种驱动程序等操作系统内核组件1991年年底,Linus Torvalds公开了Linux内核源码0.02版,仅仅是内核1994年,Linux 1.0版本发行,Linux转向GPL版权协议至此,Linux开始盛行开来…Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 Unix操作系统 Minix 太难用了,于是决定自己开发一个操作系统。第 1 版本于 1991 发布,当时仅有 10 000 行代码。李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。据估计,现在只有 2% 的 Linux 核心代码是由李纳斯•托瓦兹自己编写的,虽然他仍然拥有 Linux 内核(操作系统的核心部分),并且保留了选择新代码和需要合并的新方法的最终裁定权。现在大家所使用的 Linux,我更倾向于说是由李纳斯•托瓦兹和后来陆续加入的众多 Linux 好者共同开发完成的。UnixUnix 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。Unix 的商标权由国际开放标准组织(The Open Group)所拥有。Unix操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。1.3 Linux简介引子 Linux和我们常见的Windows一样,都是操作系统, 例如:新浪、百度、淘宝等互联网公司,他们使用的服务器全都是Linux系统;全球500强企业95%的服务器使用的都是Linux系统。1.3.1 什么是 LinuxLinux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 的标志和吉祥物是一只名字叫做Tux(它克斯)的企鹅,Linux是基于Unix的。Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux操作系统不仅仅是被网络运维人员当作服务器使用,Linux既可以当作服务器,又可以当作网络防火墙是Linux的 一大亮点。Linux与其他操作系统相比 ,具有开放源码、没有版权、技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈 ,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。1.3.2 Linux的特点基本思想Linux的基本思想有两点:第一:一切都是文件第二:每个软件都有确定的用途其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近完全免费Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。完全兼容POSIX1.0标准这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。多用户、多任务Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。良好的界面Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。支持多种平台Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。优点1)Linux由众多微内核组成,其源代码完全开源;2)Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、 TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈;3)Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性;1.4 Linux和Unix区别1、开源情况Unix 是商业化的,而 Linux 是开源的,是免费、公开源代码的。2、硬件适用Unix 系统大多是与硬件配套的,也就是说,大多数Unix系统如AIX、HP-UX等是无法安装在 x86 服务器和个人计算机上的,而 Linux则可以运行在多种硬件平台上。可以先学习Linux后再学习Unix,因为Linux可以方便的在虚拟机上运行,防止新手的误操作。3、本质不同Linux是开放源代码的自由软件,用户对前者有很高的自主权,在实际的的开发是处在一个完全开放的环境之中;而Unix是对源代码实行知识产权保护的传统商业软件,用户的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型;Unix 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 Unix是操作系统中的"老大哥",后来的 Windows 和 Linux 都参考了 Unix1.5 Linux和Windows区别目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下比较WindowsLinux界面界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 Unix传承下来,基本命令和操作方法也几乎一致。驱动程序驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。使用使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。图形界面使用简单,容易入门。文字界面,需要学习才能掌握。学习系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。软件每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。大部分软件都可以自由获取,同样功能的软件选择较少。Windows与Linux在其他方面的不同开放性所谓的开放性就是Linux 操作系统是开放源码系统,可以对其程序进行编辑修改。而微软的Windows 系统是受微软版权保护,就是只能微软内部进行开发及修改。文件格式不同Windows 操作系统内核是NT,而Linux 是 shell;另外,windows 硬盘文件格式是fat32或NTFS,而Linux 需要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区免费与收费在中国,对个人用户Windows 和Linux 都是免费的,对公用户Windows 需要收费,Linux 是免费的。技术支持Windows 较普及。Linux 需要深度的Linux 版块支持。安全性Linux 相对Windows 来说安全性更高。开源开源就是指对外部开放软件源代码。Linux 开源,而Windows并不开源。使用习惯Windows 放弃了dos的字符模式,主攻图形界面,让桌面系统更易用。Linux 字符模式运行的更好,图形界面还只是附带品,可有可无。软件与支持Windows 下可以运行绝大部分软件、玩99.999%的游戏、硬件厂商近乎100%的支持。Linux 下可直接运行的软件数量和win下比起来就是1和99的区别,而且目前选择Linux 的人基本不会考虑玩游戏,同时Linux 正期待更多硬件厂商的支持1.6 Linux发行商和常见发行版Linux发行版是由个人,自由组织,以及商业机构和志愿者组织编写。它们通常包括了其他的系统软件和应用软件,以及一个用来简化系统初始安装的安装工具,和让软件安装升级的集成管理器。大多数系统还包括了像提供GUI界面的XFree86之类的曾经运行于BSD的程序。一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件Linux发行版的某些版本是不需要安装,只需通过CD或者可启动的USB存储设备就能使用的版本,他们称为LiveCD。Linux的版本号分为两部分:内核版本和发行版本。1.Linux的内核版本内核版本指的是在Linus Torvalds领导下的开发小组开发出的系统内核的版本号,通常,内核版本号的第二位是偶数表示是稳定的版本,如2.6.25;是奇数表示有一些新的东西加入,是不稳定的测试版本,如2.5.6。Linux操作系统的核心就是它的内核,Linus Torvalds和他的小组在不断地开发和推出新内核。任务:进程调度、内存管理、配置管理虚拟文件系统、提供网络接口以及支持进程间通信。像所有软件一样,Linux的内核也在不断升级。2.Linux的发行版本一个完整的操作系统不仅仅只有内核,还包括一系列为用户提供各种服务的外围程序。外围程序包括GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。所以,许多个人、组织和企业,开发了基于GNU/Linux的Linux发行版,他们将Linux系统的内核与外围应用软件和文档包装起来,并提供一些系统安装界面和系统设置与管理工具, 这样就构成了一个发行版本。实际上,Linux的发行版本就是Linux内核再加上外围的实用程序组成的一个大软件包而已。相对于操作系统内核版本,发行版本的版本号是随发布者的不同而不同,与Linux系统内核的版本号是相对独立的,例如:RedHat EnterpriseLinux 5.2的操作系统内核是Linux-2.6.18。Linux的发行版本大体可以分为两类:一类是商业公司维护的发行版本一类是社区组织维护的发行版本,前者以著名的RedHatLinux为代表,后者以Debian为代表以下为Linux的主流版本:目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等以下是主要的发行版本需要注意的: 下面的内容主要是介绍了下Linux发行家族以及发行版本的一些详细信息,虽然我们当前的课程讲解的是CentOS,但是其他的一些发行商、主流的发行版本比如Ubuntu、Redhat也需要让学生多多了解下,毕竟这是Linux体系内产品线 注意 下面的文字虽然很多,但是只要让学生知道有这么回事即可 在下面会简单的总结..1、Debian 介绍Debian名字的由来----DebianGNU/Linux是由一个叫做伊恩·默多克(IanMurdock)在1993年发起的,他的名字以Ian开头,他太太的名字Debra开头三个字母是Deb。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由 Ian Murdock于1993年创建,分为三个版本分支: stable(服务器版), testing(稳定版) 和unstable(测试版)。2、Ubuntu介绍Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。共分三个版本:基于Gnome的Ubuntu,基于KDE的Kubuntu以。基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。稳定性,其实都差不多,难易度嘛,Ubuntu 默认桌面环境采用 GNOME,一个 Unix和 Linux 主流桌面套件和开发平台。Ubuntu的版本和发布号Ubuntu的版本号是由该次发布的年份和月份组成,并未反映其实际版本。我们的首次发布是在2004年10月,因此该版本为4.10。当前版本(DapperDrake)于2006年6月发布,因此版本号为6.06 LTS。3、Redhat可能这是最著名的Linux版本了,Red Hat Linux已经创造了自己的品牌,越来越多的人听说过它。Red Hat在1994年创业,当时聘用了全世界500多名员工,他们都致力于开放的源代码体系。Red Hat Linux是公共环境中表现上佳的服务器。它拥有自己的公司,能向用户提供一套完整的服务,这使得它特别适合在公共网络中使用。这个版本的Linux也使用最新的内核,还拥有大多数人都需要使用的主体软件包。Red Hat Linux的安装过程也十分简单明了。它的图形安装过程提供简易设置服务器的全部信息。磁盘分区过程可以自动完成,还可以选择GUI工具完成,即使对于 Linux新手来说这些都非常简单。选择软件包的过程也与其他版本类似;用户可以选择软件包种类或特殊的软件包。系统运行起来后,用户可以从Web站点和 Red Hat那里得到充分的技术支持。我发现Red Hat是一个符合大众需求的最优版本。在服务器和桌面系统中它都工作得很好。Red Hat的唯一缺陷是带有一些不标准的内核补丁,这使得它难于按用户的需求进行定制。 Red Hat通过论坛和邮件列表提供广泛的技术支持,它还有自己公司的电话技术支持,后者对要求更高技术支持水平的集团客户更有吸引力4、FedoraFedora和Redhat这两个Linux的发行版放联系很密切。Redhat 自9.0以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora 这个 Linux 发行版。Fedora项目是由 Red Hat 赞助,由开源社区与 Red Hat 工程师合作开发的项目统称。Fedora 的目标,是推动自由和开源软件更快地进步。特点:1、 Fedora 是一个开放的、创新的、前瞻性的操作系统和平台,基于 Linux。它允许任何人自由地使用、修改和重发布,无论现在还是将来。可运行的体系结构包括x86(即i386),x86_64 和PowerPC!2、Fedora 可以说是Redhat 桌面版本的延续,只不过是与开源社区合作。3、Fedora 是一个独立的inux发行版本的操作系统。5、centosCentOS(Community ENTerprise Operating System)是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用(我会告诉你,以为企业想省钱,运维要靠这个东西来赚钱嘛,国内运维主流是CentOS剩下版本很少)。两者的不同,在于CentOS并不包含封闭源代码软件,CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本。每个版本的CentOS都会获得十年的支持(通过安全更新方式)。新版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境6、Slackware介绍Slackware 由PatrickVolkerding(帕特里克.沃克登)创建于1992年。算起来应当是历史最悠久的Linux发行版。尽管如此,Slackware仍然深入人心(大部分都是比较有经验的 Linux老手)。Slackware稳定、安全,所以仍然有大批的忠实用户。由于Slackware尽量采用原版的软件包而不进行任何修改,所以制造新 bug的几率便低了很多。Slackware的版本更新周期较长(大约1年),但是新版本的软件仍然不间断的提供给用户下载。7、openSUSE介绍SUSE是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统也大受好评。SUSE于2003年年末被Novell收购。SUSE在收购之后的发布显得比较混乱,比如9.0版本是收费的,而10.0版本(也许由于各种压力)又免费发布。这使得一部分用户感到困惑,也转而使用其它发行版本。最近还跟微软扯到了一起。但是瑕不掩瑜,SUSE仍然是一个非常专业、优秀的发行版。openSUSE 项目是由Novell公司资助的全球性社区计划,旨在推进 Linux 的广泛使用。这个计划提供免费的openSUSE 操作系统。这里是一个由普通用户和开发者共同构成的社区,我们拥有一个共同的目标—创造世界上最好用的 Linux 发行版。openSUSE 是 Novell 公司发行的企业级 Linux 产品的系统基础。openSUSE 项目是由Novell 发起的开源社区计划。 旨在推进 Linux 的广泛使用。提供了自由简单的方法来获得世界上最好用的 Linux 发行版,SUSE Linux。openSUSE 项目为 Linux 开发者和爱好者提供了开始使用 Linux 所需要的一切。8、中国大陆的Linux发行版红旗Linux(RedflagLinux) ,冲浪Linux(Xteam Linux) ,蓝点Linux , GNU/Linux,OpenDesktop等等 。9、 台湾地区的Linux发行版鸿奇Linux目前最著名的发行版本:Debian,ubuntu、OpenSuse(原Suse)、CentOS、fedora等。国内比较著名的红旗Linux版本对于上面的知识我们做下重点总结redhat:目前,全球最大的linux发行厂商,功能全面、稳定。Redhat 被 IBM 收购!ubuntu:目前,是linux桌面操作系统做的最好的。centos:免费版的redhat,centos基于redhat发行版基础之上,再重新编译发布的版本。目前 centos 已经被 Redhat 公司收购,但是依然免费1.7 Linux 应用领域今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位。在企业级开发中,我们通常使用Linux作为我们的服务器。比如:服务器系统Web应用服务器、数据库服务器、接口服务器、DNS、FTP等等;嵌入式系统路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器等等,高性能运算、计算密集型应用Linux有强大的运算能力。目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。巴西联邦政府由于支持 Linux 而世界闻名。有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。法国和德国同样开始逐步采用 Linux。1.8 Linux之CentOS前面章节介绍了一些Linux的基本知识,前已经对Linux有了一个初步的认识,也知道了在Linux发行版中有各个家族的发行版本;比如比较知名的ubuntu、CentOS,在今天的Linux课程中我们将采用发行版CentOS作为我们Linux课程的讲解内容。CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本;是一个稳定,可预测,可管理和可复制的免费企业级计算平台主要特点:1.主流: 目前的Linux操作系统主要应用于生产环境,主流企业级Linux系统仍旧是RedHat或者CentOS2.免费: RedHat 和CentOS差别不大,CentOS是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本3.更新方便:CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RED HAT那样需要花钱购买支持服务!我们在当前课程中的环境:Windows7 , VMware Workstation15.02, CentOS Linux release 7.6.18101.9 总结当前章节主要介绍了Linux发行的主要版本(我们使用的是CentOS Linux release 7.6.1810 )、以及与Unix、Windows系统的区别;主要让学生了解Linux是基于Unix的以及与Windows一样,Linux也是操作系统即可。2 系统与设置命令在前面的两个章节中,我们主要介绍了Linux基本知识和虚拟机的安装,从当前章节开始,我们一起学习下Linux的基本命令,在当前章节,我们先简单的学习下一些系统的基本命令,慢慢的由浅入深,在后面的章节中我们将学习其他的命令比如文件操作、备份压缩等2.1 学习命令的原因命令我们可以理解成在Windows中我们常常为了查看ip输入的ipconfig,在Linux中也有很多的命令,比如操作目录、文件、网络、磁盘等等命令Linux刚面世时并没有图形界面, 所有的操作全靠命令完成, 如 磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等在职场中,大量的 服务器维护工作 都是在 远程 通过SSH客户端 来完成的, 并没有图形界面, 所有的维护工作都需要通过命令来完成在职场中, 作为后端程序员或者运维, 必须要或多或少的掌握一些Linux常用的终端命令Linux发行版本的命令大概有200多个, 但是常用的命令只有几十个而已总结 学习终端命令的技巧: - 不需要死记硬背, 对于常用命令, 记住语法是关键,在用的时候去查下参数选项,有的很常用的命令,用的多自然就记住了 - 不要尝试一次学会所有的命令, 有些命令是非常不常用的,临时遇到,就去根据语法找参数选项2.2 Linux 用户和用户组管理2.2.1 Linux账号管理从当前章节开始,我们正式进入CentOS的学习,我们先从简单的命令开始,比如操作账号、用户组、系统管理等。 在实际使用场景中,用户账号的管理主要涉及到用户账号的添加、修改和删除操作。 现在,我们就通过命令的方式添加用户账号(账号名字可以自定义,但是是要符合书写规范) 在操作前,确保我们的SecureCRT成功连接到了虚拟机. 下面的章节不在赘述SecureCRT,默认已经成功连接。1) 添加用户我们在Windows创建账号主要是是控制面板--用户账户--创建一个新账户,这是在Windows创建账户的流程,而在Linux中,我们可以通过命令的方式进行创建账户使用者权限:管理员用户useradd 选项 用户名参数说明:选项:-c comment 指定一段注释性描述。-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。-g 用户组 指定用户所属的用户组。-G 用户组,用户组 指定用户所属的附加组。-s Shell文件 指定用户的登录Shell。-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。用户名:指定新账号的用户名(后续我们可以使用这个用户名进行系统登录)。添加用户czbk(传智播客的首拼)执行useradd czbk我们使用useradd命令创建了一个用户czbkuseradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。执行如下由上图我们发现,我们在使用useradd新增用户的时候,出现了权限不足,也就是说我们使用用户itcast没有创建用户的权限。我们通过管理员账号root进行创建,首先我们从控制台中切换到rootsu root在 密码的地方输入我们的root密码【root】即可进入到root用户下。我们在root下继续创建czbk用户以下是useradd常用选项2) 用户口令引子: 相当于我们在Windows系统中给个用户更改密码,只是我们在CentOS中是更改密码是通过命令完成的。用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用使用者权限:管理员用户指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:passwd 选项 用户名可使用的选项:-l 锁定口令,即禁用账号。-u 口令解锁。-d 使账号无口令。-f 强迫用户下次登录时修改口令。设置当前用户的口令passwd czbk此处我们设置密码和itcast账号密码一致,为【Itheima888】3) 修改用户相当于我们在Windows系统中修改一个用户,只是我们在CentOS中是修改用户是通过命令完成的。usermod 命令通过修改系统帐户文件来修改用户账户信息修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。使用者权限:管理员用户修改已有用户的信息使用usermod命令,其格式如下:usermod 选项 用户名下面命令将用户czbk用户名修改成czbk2019usermod -l czbk2019 czbk以下是usermod常用选项4) 删除用户相当于我们在Windows系统中删除一个用户,只是我们在CentOS中是删除用户是通过命令完成的。假如我们其中一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。使用者权限:管理员用户删除一个已有的用户账号使用userdel命令,其格式如下:userdel 选项 用户名-f:强制删除用户,即使用户当前已登录;-r:删除用户的同时,删除与用户相关的所有文件此命令删除用户czbk2019userdel czbk2019成功删除用户czbk2019以下是userdel常用选项2.2.2 Linux用户组引子:为了方便用户管理, 提出了 组 的概念, 如下图所示新增一个账户,它默认属于自己(账户)的组比如新建账户【张三】,那么它默认对应的组就是张三一个用户可以有一个或者多个组假如说(如上图),我们在企业级开发过程中,我们有多个组,其中一个开发组对应三个账户,张三、李四、王五、如果就像上面提到的,一个用户默认对应一个组,那么三个账户张三、李四、王五就有了三个不同的组,如果大家都操做一个文件,在进行权限分配的时候,就要对不同的三个组进行授权,显然这样是不合理的,因为太过繁琐。所以,才有了组(新建组)的概念,我们把张三、李四、王五统一放到【开发组】,在对文件授权的时候,我们只对【开发组】进行授权由此,这样的话【张三、李四、王五】都有相等的权利操作了。1) 增加用户组新增一个用户组(组名可见名知意,符合规范即可),然后将用户添加到组中使用者权限:管理员用户groupadd 选项 用户组使用的选项有:-g GID 指定新用户组的组标识号(GID)。-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同新增用户组czbk-itgroupadd czbk-it上面的命令向系统中增加了一个新组czbk-it,新组的组标识号是在当前已有的最大组标识号的基础上加1以下是groupadd常用选项2) 修改用户组使用者权限:管理员用户groupmod 选项 用户组常用的选项有:-g GID 为用户组指定新的组标识号。-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。-n新用户组 将用户组的名字改为新名字groupmod -n czbk-it-2019 czbk-it上面的命令将组czbk-it的组名修改为czbk-it-2019。以下是groupmod常用选项3) 查询用户所属组在查询用户所属的用户组前,我们先增加一个用户ituser-groupsuseradd ituser-groups要查询一个用户属于哪个用户组,使用groups命令,其格式如下groups 用户名查询用户ituser-groups属于某个用户组,执行groups命令groups ituser-groups由此可见,ituser-groups用户属于用户组ituser-groups(用户组默认与用户名一样)4) 删除用户组使用者权限:管理员用户要删除一个已有的用户组,使用groupdel命令,其格式如下groupdel 用户组删除czbk-it-2019用户组groupdel czbk-it-2019删除成功以下是groupdel常用选项2.2.3 将用户添加到组引子: 在上面我们学习如何新增用户,也学习了如何新增用户组,在当前的小节中,我们新建一个用户、新建一个用户组、然后把新建的用户添加到新的组中 在实际开发过程中,我们通常把多个用户按照业务需求归并到统一的一个组中,进行有序管理1、创建一个新的组,并添加组ID(需要切换到root用户)groupadd -g 8888 itbj2020group执行效果如下2、创建3个用户(需要切换到root用户)useradd itbeijinguser1 useradd itbeijinguser2 useradd itbeijinguser33、将上面三个用户添加到组itbj2020group我们通过passwd命令将三个用户添加到组什么是gpasswd:gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。语法gpasswd [可选项] 组名将上面的三个用户使用gpasswd添加到组(需要切换到root用户)gpasswd -a itbeijinguser1 itbj2020group gpasswd -a itbeijinguser2 itbj2020group gpasswd -a itbeijinguser3 itbj2020group执行如下查看用户组下所有用户(所有用户)注意此处的grep命令我们将在文件管理章节详细讲解,这里先使用它查看下效果grep 'itbj2020group' /etc/group执行效果如下(或者直接打开/etc/group文件都可以)由上图可知:三个用户全部都加入到了itbj2020group组。2.3 系统管理系统管理,说的就是我们的CentOS系统,它不同于Windwos,CentOS是字符界面,我们需要通过命令进行操作,在当前章节,我们先从基本命令学起,比如创建用户、设置密码、修改用户以及用户组的相关操作。也为我们后面的章节打下基础2.3.1 日期管理当前日期如果通过date进行设置,在系统重启后不会保存date的设置,常用的只是通过date命令查看日期date 可以用来显示或设定系统的日期与时间使用者权限:所有用户语法如下:date [参数选项]参数-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;-u:显示GMT;–help:在线帮助;–version:显示版本信息1、设置时间用 -s选项可以设置系统时间,如下:date -s "2019-12-11 16:15:00"2、显示时间date(1)UTC协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。。(2)GMT即格林尼治 平太阳时间,是指格林尼治所在地的标准时间,也是表示地球自转速率的一种形式**外文名:**Universal Time其他外文名G.M.T.(Greenwich Mean Time)(3)CST北京时间 (中国国家标准时间)北京时间是中国采用国际时区东八时区的区时作为标准时间。北京时间并不是北京(东经116.4°)的地方时间,而是东经120°的地方时间,故东经120度地方时比北京的地方时早约14分半钟。因为北京处于国际时区划分中的东八区,同格林尼治时间(世界时)整整相差8小时(即北京时间=世界时+8小时),故命名为“北京时间”。东八区包括的范围从东经112.5°到东经127.5°,以东经120°为中心线,东西各延伸7.5°,总宽度为15°的区域。而中国幅员辽阔,东西相跨5个时区(即东五区、东六区、东七区、东八区、东九区5个时区)授时台必须建在地理中心地带,从而也就产生了长短波授。“北京时间”与“北京当地时间”是两个概念, “北京时间”的发播不在北京,而在陕西蒲城(处于东七区)(4)东八区东八区(UTC/GMT+08:00)是比世界协调时间(UTC)/格林尼治时间(GMT)快8小时的时区,理论上的位置是位于东经112.5度至127.5度之间,是东盟标准的其中一个候选时区。当格林尼治标准时间为0:00时,东八区的标准时间为08:00总结: 上面提到了很多知识:即UTC/GMT/CST/东八区 总结一下就是,北京时间(中国国家标准时间CST)采用东八区区时,即: 协调世界时(UTC)+8 / 格林尼治时间(GMT)+8 也就是说+8后的时间才是北京时间2.3.2 显示用户logname命令用于显示用户名称。执行logname指令,它会显示目前用户的名称语法为如下:logname [--help][--version]参数:–help  在线帮助。–vesion  显示版本信息。显示登录账号的信息logname2.3.3 su切换账户引子: 比如我们在新增用户、修改用户或者操作用户组的时候常常需要切换到管理员账户,这个时候,我们就可以使用su进行快速切换su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。使用权限:所有使用者。语法如下:su变更帐号为 root 并在执行 ls 指令后退出返回原使用者su -c ls root切换到rootsu root这样的话,我们就进入到了root用户下。2.3.4 id命令我们如果需要查看当前账号详细信息的时候,比如查看它的用户id、群组id以及所属组的时候,我们就可以使用id命令进行查看id命令用于显示用户的ID,以及所属群组的ID。id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。使用者权限:所有用户语法id [-gGnru][--help][--version][用户名称]参数说明:-g或–group  显示用户所属群组的ID。-G或–groups  显示用户所属附加群组的ID。-n或–name  显示用户,所属群组或附加群组的名称。-r或–real  显示实际ID。-u或–user  显示用户ID。-help  显示帮助。-version  显示版本信息。显示当前用户信息id执行效果如下总结id命令参数虽然很多但是常用的也就是id命令,不带参数的主要看他的uid和组信息2.3.5 sudo执行比如我们使用普通用户操作用户或者操作用户组、以及修改网卡配置文件的时候,需要切换到root用户才操作,此时我们可以使用sudo命令提高普通用户的操作权限,以达到操作目的sudo:控制用户对系统命令的使用权限,root允许的操作。通过sudo可以提高普通用户的操作权限使用者权限:普通用户语法如下:sudo -Vsudo -hsudo -lsudo -vsudo -ksudo -ssudo -Hsudo [ -b ] [ -p prompt ] [ -u username/#uid] -ssudo command参数说明:-V 显示版本编号-h 会显示版本编号及指令的使用方式说明-l 显示出自己(执行 sudo 的使用者)的权限-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)-b 将要执行的指令放在背景执行-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell-H 将环境变数中的 HOME 指定为要变更身份的使用者HOME目录(如不加 -u 参数就是系统管理者 root )command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令sudo命令使用sudo ls指定root用户执行指令sudo -u root ls -l修改网卡配置文件比如,在下面的例子中,我们使用普通用户修改网卡的配置文件,在进行保存的时候,提示我们【无法打开并写入文件】,那么此时,我们可以通过sudo命令来提升自己的写入权限执行:vi /etc/sysconfig/network-scripts/ifcfg-ens33执行效果如下(保存)然后点击回车那么我们在修改上面的 命令,使用sudo进行修改sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33执行效果如下(键入itcast密码)执行保存我们发现此时就不在报错了2.3.6 top命令在企业级开发中,开发人员(运维人员也会经常使用)常常为了查看服务器上运行的程序占用的CPU情况以及占用内存情况,目的就是检测我们的程序是否在正常范围内运行top命令用于实时显示 process 的动态。使用权限:所有使用者。显示进程信息top执行效果如下各进程(任务)的状态监控属性解释说明:PID — 进程idUSER — 进程所有者PR — 进程优先级NI — nice值。负值表示高优先级,正值表示低优先级VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESRES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATASHR — 共享内存大小,单位kbS — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程%CPU — 上次更新到现在的CPU时间占用百分比%MEM — 进程使用的物理内存百分比TIME+ — 进程使用的CPU时间总计,单位1/100秒COMMAND — 进程名称(命令名/命令行)显示完整命令,与top命令不同的就是command属性像是进行了命令补全top -c执行效果如下显示指定的进程信息,以下显示进程号为6972的进程信息,CPU、内存占用率等top -p 6972执行效果如下top命令的用法很多但是常用的就是top(不带参数),有的时候,在进程比较多的时候,我们常常记住进程的pid,然后通过top -p pid进行查看也就是说,top+ top -p是经常被用到的2.3.7 ps命令ps命令类似于我们在Windows中通过任务管理器查看进程信息Linux ps命令用于显示当前进程 (process) 的状态信息使用者权限:所有用户语法如下:ps显示进程信息ps -A显示指定用户信息ps -u itcast显示所有进程信息ps -ef2.3.8 kill命令引子: 前面,我们刚刚学习完了Windows上开发,比如,我们经常遇到的要给问题就是,我们需要经常的启动或者重启tomcat,有的时候会报端口冲突,这个时候,我们可能就去Windows的任务管理器中去结束这个进程 那么在Linux中我们可以通过kill命令来实现Windwos上手工结束进程的操作Linux kill命令用于删除执行中的程序或工作(可强制中断)使用者权限:所有用户语法如下:kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]参数说明:-l <信息编号>  若不加<信息编号>选项,则-l参数会列出全部的信息名称。-s <信息名称或编号>  指定要送出的信息。[程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。杀死一个进程kill 15642强制杀死进程kill -KILL 15642彻底杀死进程kill -9 15642杀死指定用户所有进程1.方法一 过滤出itcast用户进程kill -9 $(ps -ef | grep itcast)2.方法二,直接杀死kill -u itcast注意上面列举了很多kill进程的命令但是我们我们常用的就是kill -9命令,我们常常找到进程的pid然后通过kill -9进行杀死进程2.3.9 关机命令shutdown命令可以用来进行关闭系统,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机使用者权限:管理员用户语法如下:shutdown [-t seconds] [-rkhncfF] time [message]参数说明:-t seconds : 设定在几秒钟之后进行关机程序。-k : 并不会真的关机,只是将警告讯息传送给所有使用者。-r : 关机后重新开机。-h : 关机后停机。-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。-c : 取消目前已经进行中的关机动作。-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)。-F : 关机时,强迫进行 fsck 动作。time : 设定关机的时间。message : 传送给所有使用者的警告讯息。立即关机shutdown -h now 或者 shudown指定1分钟后关机,1分钟关机并显示警告信息shutdown +1 “System will shutdown after 1 minutes”指定1分钟后重启,并发出警告信息shutdown –r +1 “1分钟后关机重启”2.3.10 重启命令reboot命令用于用来重新启动计算机使用者权限:管理员、普通(需要验证)用户语法如下:reboot [-n] [-w] [-d] [-f] [-i]参数:-n : 在重开机前不做将记忆体资料写回硬盘的动作-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)-f : 强迫重开机,不呼叫 shutdown 这个指令-i : 在重开机之前先把所有网络相关的装置先停止开始重新启动reboot重启效果如下此时我们的虚拟机正在重启**(别忘记使用root用户执行)**2.3.11 who命令在企业级开发过程中,我们使用who命令的时候常常需要快速重启服务器,在重启之前需要检测下有没有终端在连接(处理程序),如果有,可能就不会重启(会私下询问何时弄完,弄完后在重启),如果没有其他人连接,将执行快速重启who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等使用者权限:所有使用者都可使用。语法如下:who - [husfV] [user]参数说明:-H 或 --heading:显示各栏位的标题信息列;-i 或 -u 或 --idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;-m:此参数的效果和指定"am i"字符串相同;-q 或–count:只显示登入系统的帐号名称和总人数;-s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;-w 或-T或–mesg或–message或–writable:显示用户的信息状态栏;–help:在线帮助;–version:显示版本信息显示当前登录系统的用户who显示明细(标题)信息who -H由上图可知,截止到现在只有itcast在线。2.3.12 timedatectl命令引子: timedatectl是用于控制系统时间和日期。可以用来查询和更改系统时钟于设定,同时可以设定和修改时区信息。 在实际开发过程中,系统时间的显示会和实际出现不同步;我们一般为了校正服务器时间、时区的时候会使用timedatectl命令使用者权限:所有使用者都可使用,设置时间需要管理员,下面会标注。几个常见的概念,进行总结如下:显示系统的当前时间和日期,使用命令行中的timedatectl命令timedatectl status执行效果如下在上面的示例中,分别显示时区、CST时间和UTC时间,其中,RTC time就是硬件时钟的时间,硬件时间默认为UTC。查看当前时区timedatectl | grep Time 或者 timedatectl执行效果如下上图显示中国时区查看所有可用的时区timedatectl list-timezones执行效果如下(下面数据没有截全)设置本地时区timedatectl set-timezone "Asia/Shanghai"执行效果如下禁用时间同步(使用管理员账户)timedatectl set-ntp false 在执行 timedatectl set-time "2019-03-11 20:45:00"执行效果如下注意: 如果ntp时间同步为true时无法修改时间设定,下面马上介绍打开ntptimedatectl set-ntp true 在执行 timedatectl set-time "2019-03-11 20:45:00"执行效果如下(ntp时间同步为true时无法修改时间设定)报错信息 如下启用时间同步NTP即Network Time Protocol(网络时间协议),是一个互联网协议,用于同步计算机之间的系统时钟。timedatectl实用程序可以自动同步你的Linux系统时钟到使用NTP的远程服务器。要开始自动时间同步到远程NTP服务器,在终端键入以下命令。timedatectl set-ntp true比如,在上面我们使用timedatectl set-time “2019-03-11 20:45:00”,如下图此时我们执行timedatectl set-ntp true,发现时间正常同步过来了如下图要禁用NTP时间同步,在终端键入以下命令timedatectl set-ntp false执行上面的 命令即可关闭ntp总结在实际使用过程中我们经常使用timedatectl进行时区、CST、UTC的设置2.3.13 clear命令clear命令用于清除屏幕使用者权限:所有使用者都可使用。语法clear执行clear前执行clear后通过执行clear命令,就可以把缓冲区的命令全部清理干净了2.3.14 exit命令exit命令用于退出目前的shell。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。退出码(exit status,或exit code)的约定: 0表示成功(Zero - Success) 非0表示失败(Non-Zero - Failure) 2表示用法不当(Incorrect Usage) 127表示命令没有找到(Command Not Found) 126表示不是可执行的(Not an executable) >=128 信号产生语法如下exit [状态值]退出终端# exitexit会被经常在shell中使用我们在明天的课程【综合案例】中会使用到exit2.4 总结用户账号管理和用户组是我们在实际使用过程中常用的命令,学习完创建账号、创建组后,需要通过gpasswd命令将用户添加到组,这也是我们学习的最终目的系统管理的常用命令都是在开发过程中经常使用到的3 Linux目录管理注意: 在下面的讲解中,每个命令都有很多的参数说明(选项),我们只讲其中的几个,关键是让学生掌握命令的语法;学生学习完语法后,就可以自己按照参数书写各种命令,这也是我们最终的目的。常用命令,我们在企业级开发过程中,经常书写的命令。会非常被容易记住,不常用的命令,只要我们学习完了语法之后,在去查找参数手册,会非常容易的解决我们的问题,所以,每个命令不是建立在死记硬背的基础上的,要理解语法+查找参数=解决问题3.1 Linux 文件与目录管理在Linux系统中,所有的的目录结构为树状结构,最顶级的目录为根目录 /。 在实际开发过程中,文件的操作是非常频繁也是非常重要的 下面的章节我们将学习下Linux系统所有的系统目录和文件通过命令是如何进行管理的3.1.1 目录常用命令ls: 列出目录cd: 切换目录pwd: 显示目前的目录mkdir:创建一个新的目录rmdir:删除一个空的目录cp: 复制文件或目录rm: 移除文件或目录mv: 移动文件与目录或修改文件与目录的名称自动补全在敲出 文件/ 目录 / 命令 的前几个字母之后, 按下 tab键如果还存在其他 文件 / 目录 / 命令, 再按一下tab键, 系统会提示可能存在的命令1) ls (列出目录)ls命令相当于我们在Windows系统中打开磁盘、或者打开文件夹看到的目录以及文件的明细,如下图【查看磁盘下的目录与文件】【查看文件夹下的目录与文件】注意:在Linux系统当中, ls 命令算是比较常用的命令使用者权限:所有使用者都可使用。语法如下:ls [选项] 目录名称选项与参数:-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)-d :仅列出目录本身,而不是列出目录内的文件数据(常用)-l :长数据串列出,包含文件的属性与权限等等数据;(常用)将根目录下的所有文件列出来(含属性与隐藏档)ls -al ~执行效果如下ls -lls -l 可以查看文件夹下文件的详细信息, 从左到右 依次是:权限(A区域), 第一个字符如果是 d 表示目录硬链接数(B区域), 通俗的讲就是有多少种方式, 可以访问当前目录和文件属主(C区域), 文件是所有者、或是叫做属主属组(D区域), 文件属于哪个组大小(E区域):文件大小时间(F区域):最后一次访问时间名称(G区域):文件的名称ls总结 以上三种是经常被使用到的命令 它们之间的区别是 ls 显示不隐藏的文件与文件夹 ls -l 显示不隐藏的文件与文件夹的详细信息 ls -al 显示所有文件与文件夹的详细信息2) pwd显示当前目录执行pwd命令相当于我们在Windows系统路径导航栏中查看到的当前浏览位置信息如下图pwd 是 Print Working Directory 的缩写,也就是显示目前所在当前目录的命令。使用者权限:所有使用者都可使用。查看当前所在目录pwd -P执行效果如下3) cd (切换目录)Linux的cd切换目录,相当于我们在Windows中通过鼠标或者快捷键点开不同的目录注意:在Linux系统当中, cd 命令算是比较常用的命令cd是Change Directory的缩写,这是用来变换工作目录的命令使用者权限:所有使用者都可使用。语法如下:cd [相对路径或绝对路径]在正式学习cd命令前面,我们通过下面一个座位图的形式讲解下相对路径和绝对路径是怎么表现的。绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法啦!1、使用相对路径定位目标特征: 相对路径 输入路径时, 最前面不是以 “/” 开始的, 表示相对 当前目录 所在的位置缺点: 参照工作目录 发生变化 相对路径也要发生变化需求1: 当前工作目录是 /usr, 使用相对路径 切换到 /usr/tmp 目录下 需求2: 当前工作目录是 /root, 使用相对路径 切换到 /usr/tmp 目录下执行效果如下注意: cd ~ 表示回到根目录2、使用绝对路径定位目标特征: 绝对路径 在输入路径时, 最前面是以 / 开始的, 表示 从 根目录 开始的具体目录位置优点: 定位准确, 不会因为 工作目录变化 而变化需求1: 当前工作目录是 /usr, 使用绝对路径 切换到 /usr/tmp 目录下 需求2: 当前工作目录是 /root, 使用绝对路径 切换到 /usr/tmp 目录下执行效果如下总结相对路径 在输入路径时, 最前面不是以 / 开始的 , 表示相对 当前目录 所在的目录位置绝对路径 在输入路径时, 最前面是以 / 开始的, 表示 从 根目录 开始的具体目录位置4) mkdir(创建目录)引子: Linux的mkdir命令相当于我们在Windows中通过鼠标或者快捷键新建文件夹mkdir命令用于建立名称为 dirName 之子目录使用权限:于目前目录有适当权限的所有使用者语法mkdir [-p] dirName参数说明:-p 确保目录名称存在,不存在的就建一个建立一个名为jinyanlong 的子目录mkdir jinyanlong执行效果如下查看新建的 文件在工作目录下的 aaa目录中,建立一个名为 bbb的子目录。 若 aaa目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 aaa目录不存在,则产生错误。)mkdir -p aaa/bbb执行效果如下这里为了显示更直观,我们使用了tree命令后面在讲解到yum的时候,会详细讲解此处先使用由上图我们发现,aaa目录被强制创建,里面包含了bbb文件。5) rmdir(删空目录)Linux的rmdir命令相当于我们在Windows中通过鼠标或者快捷键删除文件夹。 稍微有点不同的就是在Linux中删除子目录的时候,如果主目录下没有了目录以及文件,会连同主目录同时删除了(需要写Linux带有P的参数)rmdir命令删除空的目录使用权限:于目前目录有适当权限的所有使用者。语法rmdir [-p] dirName参数:-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。将工作目录下,名为 jinyanlong 的子目录删除 :rmdir jinyanlong在工作目录下的 aaa目录中,删除名为 bbb的子目录。若 bbb删除后,aaa目录成为空目录,则 aaa同时也会被删除rmdir -p aaa/bbb总结:rmdir -p aaa/bbb也就是说在删除bbb目录完成后,发现aaa目录也是空目录了,在删除完bbb后aaa也同时被删除了。6) cp(文件复制)Linux的cp命令相当于我们在Windows中通过鼠标或者快捷键复制文件或者目录cp命令主要用于复制文件或目录。使用权限:于目前目录有适当权限的所有使用者语法cp [options] source dest或cp [options] source... directory参数说明:-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。-f:覆盖已经存在的目标文件而不给出提示。-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。-r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。-l:不复制文件,只是生成链接文件。我们将当前目录"aaa/"下的所有目录以及文件复制到新目录"ccc"下,输入如下命令:1、数据准备创建aaa目录并且aaa下包含bbb目录mkdir -p aaa/bbb mkdir -p ccc执行效果如下aaa目录下有bbbccc下面没有目录和文件2、执行复制cp –r aaa/* ccc执行效果如下我们将aaa下面的所有文件、目录复制到了目录c下面总结:用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。如果不加参数"-r"或者"-R",只复制文件,而略过目录7) rm(删除目录)Linux的rm命令相当于我们在Windows中通过鼠标或者快捷键删除文件或者目录rm命令用于删除一个文件或者目录。使用权限:于目前目录有适当权限的所有使用者语法rm [options] name...参数:-i 删除前逐一询问确认。-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r 将目录及以下之档案亦逐一删除。如果我们要删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:rm -r ccc执行删除,如下图注意文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令如果删除文件(比如.sh 、.txt)直接使用rm name.txt8) mv(移动文件)Linux的mv命令相当于我们在Windows中通过鼠标或者快捷键剪切(+重命名)+粘贴文件或者目录mv 命令用来为文件或目录改名、或将文件或目录移入其它位置语法mv [options] source dest mv [options] source... directory参数说明:-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;1、创建aaa目录、 mkdir aaa 2、开始重命名 mv aaa bbb执行后将ccc目录放入ddd目录中。注意,如果ddd目录不存在,则该命令将ccc改名为ddd。创建ccc mkdir ccc开始移动 mv ccc/ ddd由上图我们发现,由于ddd目录不存在,所以在mv的时候将ccc目录改名为了ddd。3.2 Linux 文件基本属性在Wndows系统中,我们可以选中一个文件,右键属性,可以查看到这个文件的文件类型(基本信息),以及文件的权限信息,在Linux中,它是通过不同字符的排序顺序来表示文件的类型以及权限所属信息的。Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。下面我们就一起学习下Linux系统不同权限的文件和目录在怎么表示的在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:ls -l实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。当为[ d ]则是目录当为[ - ]则是文件;若是[ l ]则表示为链接文档(link file);若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。每个文件的属性由左边第一部分的10个字符来确定(如下图)。从左至右用0-9这些数字来表示。第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-“字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用”-"字符表示,则没有执行权限。3.3 Linux文件属主和属组引子: 对于一个文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。 也就是所谓的属主,它属于哪个用户的意思。 除了属主,还有属组,也就是说,这个文件是属于哪个组的(用户所属的组)。 文件的【属主】有一套【读写执行权限rwx】 文件的【属组】有一套【读写执行权限rwx】 还有它权限,下面我们在介绍在以上实例中,aaa文件是一个目录文件,属主和属组都为 itcast,属主有可读、可写、可执行的权限(rwx);与属主同组的其他用户有可读可写和可执行的权限(rwx);其他用户也有可读和可执行的权限(r-x)。3.3.1 chgrp更改属组实际开发中我们经常会创建新建目录和文件,一般情况下,通过命令进行新建, 在创建完成后,使用不同的用户访问,可能就会出现报错,无法访问等等问题。 然后经过一番这查找,发现该有的文件都在,大小写也没问题,路径也没问题 其实并不是这些问题。而是权限问题导致我们无法访问!是因为一个文件默认隶属于一个属组,而使用其他用户访问这个文件肯定无法访问(因为访问用户所属的组和文件所在的不是同一个组) 那么怎么可以正常访问呢?其实就是通过更改用户组(用户组、文件组)来解决这些问题chgrp命令用于变更文件或目录的所属群组。文件或目录权限的的拥有者由所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可为了方便初学者记忆,可以将 chgrp 理解为是 “change group” 的缩写语法如下chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]改变文件的群组属性我们通过root用户进入(如下图),上接上面的例子我们的aaa文件的属主和属组都属于itcast(如下图)我们现在通过chgrp命令将文件aaa的属组更改成root(其他也可以)chgrp -v root aaa执行效果如下我们通过下面的命令查询文件aaa的属组是否发生了变化,执行ls -l由上图我们发现,文件aaa的属组由itcast变成了root这样的话,文件的属组就发生了变化。3.3.2 chown更改属主和属组**我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限(属主) 我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组(属组),然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的Linux是多任务操作系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限使用权限 : 管理员账户语法如下chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名我们通过root用户进入(如下图),上接上面的例子我们的aaa文件的属主属于itcast、属组属于root我们现在通过chgrp命令将文件aaa的属主更改成root,执行chown root aaa效果如下我们通过下面的命令查询文件aaa的属主是否发生了变化,执行ls -l由上图我们发现,文件aaa的属主和属组都变成了root。我们将aaa文件的拥有者与群组改回为itcast:注意:chown命令可以更改属主和属组chown itcast:itcast aaa我们通过下面的命令查询文件aaa的属主是否发生了变化,执行ls -l由上图可知,aaa文件的属主和属组都被更改回来了。3.3.3 chmod权限命令Linux文件属性有两种设置方法,一种是数字,一种是符号Linux的文件调用权限分为三级 : 文件属主、属组、其他。利用 chmod 可以控制文件如何被他人所调用。使用权限 : 所有使用者语法chmod [-cfvR] [--help] [--version] mode file...参数说明mode : 权限设定字串,格式如下[ugoa...][[+-=][rwxX]...][,...]解释:u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。+表示增加权限、- 表示取消权限、= 表示唯一设定权限。r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。1) 数字权限Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组(owner/group/others就是所说的三个一组 )的,我们也可以使用数字来代表各个权限,各权限的分数对照表如下各权限的数字对照表:[r]:4;[w]:2;[x]:1;[-]:0每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:owner = rwx = 4+2+1 = 7group = rwx = 4+2+1 = 7others= — = 0+0+0 = 0所以等一下我们设定权限的变更时,该文件的权限数字就是770啦,变更权限的指令chmod的语法是这样的chmod [-R] xyz 文件或目录选项与参数:xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更上面的 可以表示如下chmod -R 770 档案或目录上面说了这么多,我们举例说明一下:我们进入itcast用户创建文件czbk.txttouch as.txt然后切换到root比如,我们如果要将as.txt这个文件所有的权限都设定启用那么命令如下:chmod -R 777 as.txt由此可见,as.txt的属主权限、属组权限、其他权限都发生了改变由之前的【-rw-rw-r–】变成【-rwxrwxrwx】根据前面的换算我们已经知道如何将一个文件的属主、属组、其他权限换算成数字了,换算成数字后,我们只需要通过chmod命令即可更改文件的权限2) 符号权限还有一个改变权限的方法,就是 符号权限,我们先回顾下之前提到的9个权限(1)user 属主权限(2)group 属组权限(3)others 其他权限那么我们就可以使用 u, g, o 来代表三种身份的权限!此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:上接上面的例子,如下图我们将as.txt的权限设置为**-rwxr-xr–**执行chmod u=rwx,g=rx,o=r as.txt由上图我们发现,as.txt的权限变成了-rwxr-xr–假如我们要将权限去掉而不改变其他已存在的权限呢?举个例子,比如我要拿掉全部人的可读权限,则chmod a-r as.txt执行如下由此可见,as.txt的其他权限都没有了,变成了【—】3.4 综合案例在前面的章节中我们讲解了用户、用户组、文件属主、属组以及权限,知识点比较零散,下面,我们就通过一个简单小案例把这些知识点串联起来需求:比如一个公司的开发团队有三个用户:java、erlang、golang有一个文件目录tmp/work供他们开发,如何实现让这三个用户都对其具有写权限1、首先,我们创建三个账户(切换到root)adduser java adduser erlang adduser golang执行效果如下2、增加用户组groupadd -g 8888 dev-group执行效果如下3、创建公共文件并设置权限给文件/tmp/project2019/设置属组为dev-groupmkdir /tmp/project2019 chown -R :dev-group /tmp/project2019/ 或者 chgrp -R dev-group /tmp/project2019/执行效果如下4、将用户添加到组gpasswd -a java dev-group gpasswd -a erlang dev-group gpasswd -a golang dev-group执行效果如下查询dev-group组下所有用户grep 'dev-group' /etc/group执行效果如下5、切换到java用户切换到java用户看看是否有写入权限su java新建文件在我们上面创建的目录tmp/project2019/下面创建文件mkdir java-files-new由此发现,我们在tmp/project2019/下面创建文件发生了权限不足,我们去查看下tmp/project2019/的文件属性,如下图我们在/tmp目录下执行ls -l执行效果如下我们发现目录project2019的文件属性为【drwxr-xr-x】根据前面学的知识,我们拆分如下【d】:文件类型【rwx】:属主【r-x】:属组【r-x】:其他现在答案就出来了,也就是说我们的属组权限是【r-x】,只有读和执行权限,没有写入权限,那么下面我们就给project2019目录增加写入权限。6、增加写入权限给project2019目录增加写入权限,执行下面的命令(前面已经学习过了)记得切换到root下执行chmod -R 770 project2019此时我们发现project2019目录的属组权限变成了【rwx】即可读、可写、可执行7、切换用户,继续写入su java mkdir java-files-new ls -l执行效果如下由此发现,这个时候我们有了写入权限,java-files-new文件被成功写入那么,其他两个用户golang、erlang也是和java一个组的,他们能不能正常写入呢,我们试试(从root切换过去)su su erlang mkdir erlang-files-new ============================== su su golang mkdir golang-files-new ls -l执行效果(erlang新建文件)执行效果(golanglang新建文件)查看所有文件由此可见,我们组的三个用户都成功创建了文件(拥有了写入权限)8、验证结论为了验证上面的结论,我们新增一个用户itbeijing看看能否正常新建文件useradd itbeijing su itbeijing mkdir itbeijing-files-new执行效果如下由上图我们发现,我们刚刚新创建的用户在创建文件的时候发现了权限不足。由此说明用户itbeijing用户的属组和文件的属组不一样,所以没有权限。3.5 总结在企业级开发过程中,实际操作目录是最经常出现的,对于目录常用命令我们要熟练掌握并能熟练编写因为Linux是多用户系统,所以权限也是非常核心和重要的,我们要熟练编写权限(属主、属组、其他权限)的常用命令。HTML 30739 字数 1088 段落inuxinux
文章
Ubuntu  ·  安全  ·  网络协议  ·  Unix  ·  Java  ·  Linux  ·  Shell  ·  程序员  ·  数据安全/隐私保护  ·  Windows
2022-08-26
金鱼哥RHCA回忆录:DO280介绍红帽OPENSHIFT容器平台--管理OpenShift与课外补充
个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL格言:努力不一定成功,但要想成功就必须努力支持我:可点赞、可收藏⭐️、可留言管理OpenShiftOpenShift项目及应用除了Kubernetes的资源(如pods和services)之外,OpenShift还管理projects和users。一个projects对Kubernetes资源进行分组,以便用户可以使用访问权限。还可以为projects分配配额,从而限制了已定义的pod、volumes、services和其他资源。OpenShift中没有application的概念,OpenShift client提供了一个new-app命令。此命令在projects中创建资源,但它们都不是应用程序资源。这个命令是为标准开发人员工作流配置带有公共资源的proiect的快捷方式。OpenShift使用lables(标签)对集群中的资源进行分类。默认情况下,OpenShift使用app标签将相关资源分组到应用程序中。使用Source-to-image构建映像OpenShift允许开发人员使用标准源代码管理仓库(SCM)和集成开发环境(ide)来发布应用。OpenShift中的source-to-lmage (S2I) 流程从SCM仓库中提取代码,自动判断所需的runtime,基于runtime启动一个pod,在pod中编译应用。当编译成功时,将在runtime image中添加层并形成新的image,推送进入OpenShift internal registry仓库,接着基于这个image将创建新的pod,运行应用程序。S2I可被视为已经内置到OpenShift中的完整的CI/CD管道。CI/CD有不同的形式,根据具体场景表现不同。例如,可以使用外部CI工具(如Jenkins)启动构建并运行测试,然后将新构建的映像标记为成功或失败,将其推送到QA或生产。管理OpenShift资源OpenShift资源定义,如image、container、pod、service、builder、template等,都存储在Etcd中,可以由OpenShift CLI, web控制台或REST API进行管理。OpenShift的资源可通过JSON或YAML文件查看,并且在类似Git或版本控制的SCM中共享。OpenShift甚至可以直接从外部SCM检索这些资源定义。大多数OpenShift操作不需要实时响应,OpenShift命令和APIs通常创建或修改存储在Etcd中的资源描述。Etcd然后通知OpenShift控制器,OpenShift控制器会就更改警告这些资源。这些控制器采取行动,以便使得资源的最终态反应达到更改效果。例如,如果创建了一个新的pod资源,Kubernetes将在node上调度并启动该pod,使用pod资源确定要使用哪个映像、要公开哪个端口,等等。或者一个模板被更改,从而指定应该有更多的pod来处理负载,OpenShift会安排额外的pod(副本)来满足更新后的模板定义。注意:虽然Docker和Kubernetes是OpenShift的底层,但是必须主要使用OpenShift CLi和OpenShift APls来管理应用程序和基础设施。OpenShift增加了额外的安全和自动化功能,当直接使用Docker或Kubernetes命令和APls时,这些功能必须手动配置,或者根本不可用。因此强烈建议不要使用docker或Kubernetes的命令直接管理应用。OpenShift网络OpenShift网络概述Docker网络相对简单,Docker创建一个虚拟内核桥接器(docker0网卡),并将每个容器网络接口连接到它。Docker本身没有提供允许一个主机上的pod连接到另一个主机上的pod的方法。Docker也没有提供向应用程序分配公共固定IP地址的方法,以便外部用户可以访问它。但Kubernetes提供service和route资源来管理pods之间的网络,以及从外部到pods的路由流量。service在不同pods之间提供负载均衡用于接收网络请求,同时为service的所有客户机(通常是其他pods)提供一个内部IP地址。container和pods不需要知道其他pods在哪里,它们只连接到service。route为service提供一个固定的惟一DNS名称,使其对OpenShift集群之外的客户端可见。Kubernetes service和route资源需要外部(功能)插件支持。service需要软件定义的网络(SDN),它将在不同主机上的pod之间提供通信,route需要转发或重定向来自外部客户端的包到服务内部IP。OpenShift提供了一个基于Open vSwitch的SDN,路由由分布式HAProxy farm提供。OpenShift持久性存储永久存储pod可以在一个节点上停止,并随时在另一个节点上重新启动。同时pod的默认存储是临时存储,通过对于类似数据库需要永久保存数据的应用不适合。Kubernetes为管理容器的外部持久存储提供了一个框架。Kubernetes提供了PersistentVolume资源,它可以在本地或网络中定义存储。pod资源可以使用PersistentVolumeClaim资源来访问对应的持久存储卷。Kubernetes还指定了一个PersistentVolume资源是否可以在pod之间共享,或者每个pod是否需要具有独占访问权的自己PersistentVolume。当pod移动到另一个节点时,它将保持与相同的PersistentVolumeClaim和PersistentVolumne资源的关联。这意味着pod的持久存储数据跟随它,而不管它将在哪个节点上运行。OpenShift向Kubernetes提供了多种VolumeProvider,如NFS、iSCSI、FC、Gluster或OpenStack Cinder。OpenShift还通过StorageClass资源为应用程序提供动态存储。使用动态存储,可以选择不同类型的后端存储。后面存储根据应用程序的需要划分为不同的“tiers”。例如,可以定义一个名为“fast”的存储类和另一个名为“slow”的存储类,前者使用更高速的后端存储,后者提供普通的存储。当请求存储时,最终用户可以指定一个Persistentvolumeclaim,并使用一个注释指定他们所需的StorageClass。OpenShift高可用OpenShift高可用概述OpenShift平台集群的高可用性(HA)有两个不同的方面:OpenShift基础设施本身的HA(即主机);以及在OpenShift集群中运行的应用程序的HA。默认情况下,OpenShift为master提供了完全支持的本机HA机制。对于应用程序或“pods”,如果pod因任何原因丢失,Kubernetes将调度另一个副本,将其连接到服务层和持久存储。如果整个节点丢失,Kubernetes会为它所有的pod安排替换节点,最终所有的应用程序都会重新可用。pod中的应用程序负责它们自己的状态,因此它们需要自己维护应用程序状态(如HTTP会话复制或数据库复制)。Image StreamsImage Streams要在OpenShift中创建一个新的应用程序,除了应用程序源代码之外,还需要一个base image(S2I builder image)。如果源代码或image任何一个更新,就会生成一个新的image,并且基于此新image创建新的pod,同时替换旧的pod。即当应用程序代码发生更改时,容器镜像需要更新,但如果构建器镜像发生更改,则部署的pod也需要更新。Image Streams包括由tag标识的大量的image。应用程序是针对Image Streams构建的。Image Streams可用于在创建新image时自动执行操作。构建和部署可以监视Image Streams,以便在添加新image时接收通知,并分别执行构建或部署。OpenShift默认情况下提供了几个Image Streams,包括许多流行的runtime和frameworks。Image Streams tag是指向Image Streams中的image的别名。通常缩写为istag。它包含一个image历史记录,表示为tag曾经指向的所有images的堆栈。每当使用特定的istag标记一个新的或现有的image时,它都会被放在历史堆栈的第一个位置(标记为latest)。之前tag再次指向旧的image。同时允许简单的回滚,使标签再次指向旧的image。摘自网上资料(摘自陈沙克老师的博客)感谢陈沙克(可自行百度一下,大神级人物,九州云副总裁)老师的文章分享让我们能够学习得更多。虚拟化和容器–开源发展相似历程(2017-10-25)其实回顾一下虚拟化和容器的发展历程,很大程度是惊人相似。我这里其实肯定不是很严谨的描述。仅仅是大概介绍一下过程。虚拟化技术商业的虚拟化技术其实也不少。开源的的也是一样。著名的就是Xen和KVM两家。XenKVMXen是2003年发布。KVM进入linux内核,真正第一个操作系统支持,当时据说是:ubuntu 8.04,也就是2008年,当时的KVM,还是一个玩具。2010年,红帽发布RHEL 6.0,KVM算是正式进入主流。当时全球虚拟化,公有云,基本都是Xen的天下。经过了5年的PK,现在已经是KVM独大。目前AWS,阿里云,已经全面转向KVM。Xen的没落,很多原因,其中一个,就是intel搞了一套cpu虚拟化的东西,帮助kvm胜出。KVM的想法其实应该是2006年,为了对抗Xen,intel,红帽,IBM,联手搞出一个KVM,放到内核里。抽象层那么多虚拟化引擎,那么肯定有人想到要做一个统一管理工具,这样可以管理多个。这样Libvirt就出现了。Libvirt最擅长管理KVM,不过其实别的都是可以管理。管理引擎虚拟化的技术,其实需要有管理工具,那么他的管理工具有哪些呢OpenStackCloudStackEucalptusOpenNebula其实还要很多,这些管理工具,当时是能管理Xen和Kvm,也有专门针对某个虚拟化的管理工具Xen Server,专门管理XenOvirt,专门管理KVM这些工具,从2008年,一直pk到2014年,终于分出的高低。最后是OpenStack+KVM胜出。管理引擎,也是通过抽象层,Libvirt去管理KVM的。产品化其实就是针对管理引擎的产品化。你需要把管理引擎包装出来,加上很多辅助的工具,让用户用的很爽。红帽TrippleOMirantis的FuelKolla其实Ubuntu和Suse,都有他们的产品。Mirantis的Fuel和Suse的Crowbar,大概是2014年出现,到现在也经历了3年多。从我的角度,最终就是Kolla彻底胜出,毫无悬念啊。OpenStack的创业公司,目前还能有口饭吃,其实是要谢谢红帽。红帽因为在OpenStack上的策略有所失误,导致没能在OpenStack一统天下。要记住啊,当年kolla项目可是TrippleO的一个子项目,Kolla项目的创始人,也是红帽的工程师,ansible,Ceph都是红帽自家产品啊,Cobbler,也是Ansible公司的人在维护。libvirt,qemu,kvm都是红帽的容器技术容器的技术,起源很早,我最早接触是OpenVZ,这个让国内很多卖虚拟机挣钱的软件。对于开源,流行的容器来说LXCDockerLXDRTKClean containerLXC,国内互联网2010年就开始使用。不过目前最流行的是Docker,Docker从2013年发布到现在,其实发展速度很快,很多厂商都来不及响应,这个东西就成为主流。这个时候,intel又想重施故技,搞一个和cpu有关的容器技术,所谓的Clean Container。不过这次由于Docker发展过于迅速,intel这次搞容器,完全是自己玩,不像当年和红帽勾搭在一起。所以很难在市场立足。抽象层和虚拟化其实一样道理,底层那么多容器技术,如何方便管理呢。CRI Interface, Container RunTime Interface,就出现了,做了一层抽象后,各个厂商就可以和平共处。管理引擎对于容器来说,也叫编排引擎,这个大家就比较熟悉3大编排引擎K8SSwarmMessosK8S是从2014年7月份推出,到2017年7月份,基本上是完胜。厂商纷纷投降。K8s+Docker和虚拟化也是一样,目前K8s,是通过CRI,去管理Docker。产品化用户要用起来,要把k8s,或者messos用起来,那么还是需要做很多工作。业界最著名的产品就是OpenShiftRacher国内的很多容器公司,k8s公司,其实都是在做类似的工作,在K8s上增加自己定制,形成自己的产品。包括现在CloudFountry,都号称要支持K8s。背后的故事也很多,Racher当时号称要管理3个引擎,k8s,swarm和messos,最新的2.0的版本,就只管理K8s。还是红帽厉害,2014年K8s发布,马上转方向,全面发力K8s,包装自己的OpenShift产品。当红帽已经做出势头的时候,那是无人能敌的。这种K8s的产品化,基本也是毫无悬念,OpenShift胜出。OpenShift介绍(2017-10-19)现在开始搞PaaS平台,那么OpenShift就必须研究一下,这里写篇文章,把我过去一个月的理解,整理一下。以前都是搞OpenStack,IaaS层面,发现对PaaS层面,了解不多。不过幸好当时搞Kolla,把OpenStack容器化,对我现在理解PaaS,还是有很大的帮助。容器和Docker其实这个对我来说,还是比较熟悉,可以说的清楚。市场上的容器,基本都是Docker,有很多其他容器厂商,不过目前看来还是很难和Docker来PK。那么对于软件行业来说,我自己是深刻体会Docker带来的变化。是一个革命性的应用。Docker从2013年发布,到现在已经五年,已经进入比较稳定的阶段。编排和kubernetes编排,这个词,对于不是开发人员来说,还是不好理解。其实就是当你的应用放到容器里的时候,容器的启动顺序是有要求的。那么这个时候就需要用编排。对容器的编排,其实很多工具可以实现。对于OpenStack容器化项目kolla来说。ansible目前是编排工具,其实也挺好。这主要一个原因就是在规模不大,容量数量不多,环境不复杂的情况下,ansible编排,是可以满足需求的。对编排一个需求,就是一个服务如果挂掉,编排工具可以自动启动,压力大的时候,会横向扩容。不过在OpenStack的场景下,无状态的服务,从来都不是瓶颈,nova api,服务我用了OpenStack那么久,没遇到过挂掉的。对于有状态的服务,其实编排工具是无法实现所谓的横向扩容。例如数据库和消息队列。编排工具,目前最大的玩家,就是k8s。基本所有厂商都用它。那么k8s和paas是什么关系。经常在会议上,很多讲座,就把k8s当成PaaS来介绍。K8S是一个容器编排工具,要实现PaaS的功能,其实还需要在上面做很多工作,监控,日志,CI,CD等。那么这些工具,你可以自己组合,结合自己的公司的需求,搞出一套PaaS平台。PaaS和OpenShift真正意义上的PaaS,其实就是业界两家:vmware 的CloudFoundry红帽的OpenShift2015年的时候,这两家的PaaS,都是ruby开发,思路基本都是一样,江湖传闻,两位项目创始人酒吧喝完酒,各自搞了一个项目。不过在市场上,CloudFoundry声音是比较大的。远超过红帽。2015年的时候,华为,IBM,HP的所谓PaaS平台,都是基于CloudFoundry来修改的。K8s,2014年7月份发布第一个版本,2015年七月份,发布1.0的产品,那么这个时候红帽看到的机会,也是在这个时候,业界的风向发生的改变,红帽,华为,IBM,把底层都改成K8S。2015年,红帽推出基于k8s的OpenShift。Openshift 3.0的产品,就全面转向K8S。可以这样理解,以前的代码全部扔掉,重新来过一次。很神奇的事情,2016年,红帽就宣布OpenShift挣大钱。同时也加大投入。OpenShift对红帽有多么重要呢?已经成为的第二大收入来源。第一大肯定是操作系统。那么新版的OpenShift和以前的OpenShift有啥区别呢?其实以前的PaaS平台一个通病,就是要把应用放到PaaS上,你是必须对代码进行修改才行。例如大家可能以前也去红帽的OpenShift官网测试过一个wordpress的实验,这个wordpress,是要经过代码修改的。一旦进行了update更新,就肯定会挂掉。现在的OpenShift,不需要你做任何的代码修改,就可以放上去PaaS平台,所以肯定也是能update。CloudFoundry,刚刚也对外宣布,底层也要支持K8s,不过已经晚了。红帽的势头已经起来。你就完全没有机会了。我和朋友开玩笑说:红帽的OpenStack势头没做起来,导致OpenStack厂商还能有口饭吃。红帽的PaaS平台,K8s已经势头起来了,别的厂商,其实已经空间不大了。OpenShift版本红帽的一贯风格,都是开源版本,商业版本,命名也不一样。从上面图其实就可以看出来,也让用户感觉很混乱。到了OpenShift 3.6的版本,集成的K8s 1.6的版本,版本就清晰很多开源版本:OpenShift Origin 3.6商业版本:OpenShift 3.6我的理解,代码都是一样,就是一个商业支持的区别。从红帽的发布OpenShift版本可以看出,基本是一年4个版本,紧跟K8S。目前K8S最新版本是1.8。落后2个版本。k8s 1.5的版本是2016年12月23日,红帽的OpenShift 3.5,是2017年4月份发布K8s 1.6的版本是2017年3月22日发布的,红帽的OpenShift 3.6是2017年7月底。红帽需要4个月时间发布一个版本。https://www.kubernetes.org.cn/1353.html2017年12月13日 k8s v1.9.0正式版本发布!Kubernetes 1.1的版本是,2015年11月9日发布。OpenShift介绍很多人说红帽的OpenShift就是一个K8S,其实这是一个不算太正确的理解。OpenShift,目前的版本,可以理解成一个真正意义上的PaaS。红帽在K8S上封装了一层,你基本上已经用不上K8S的命令。上面提供红帽的UI,集成了日志,监控,镜像仓库等功能。也集成的CI,CD。 比如你希望在K8s跑一个mysql的群集,Redis的群集,那么这些都是需要厂商做很多工作才能实现,红帽提供全套的服务。OpenShift对手很多厂商基于K8S做出自己的PaaS平台,例如IBM的Bluemix。但是真正能产品化的,也就OpenShift和Racher。目前市场上OpenShift肯定是领先的。红帽的开源优势发挥出来。PaaS和IaaS关系大家可以受那张图的影响,认为PaaS必须跑在IaaS上。那么其实两者可以没任何关系,也是可以密切联系。 红帽的OpenShift,基本支持所有的平台,物理机器的部署,OpenStack里部署,和虚拟机里部署。目前OpenShift的部署,是通过Ansible来实现,非常方便。IaaS平台上,很多组件可以是PaaS通过软件提供,也可以是IaaS提供,例如负载均衡,DNS服务,Nas服务,如果Iaas平台提供这些服务,那么跑PaaS平台,OpenShift,就更加方便可靠。对于实际的PaaS应用来说,微服务用到有状态的服务,例如数据库,mysql,redis。目前业界都是推荐直接使用IaaS平台的,目前在PaaS层跑有状态的应用,业界的测试还是不够的。OpenShift图解(2017-11-9)部署架构图What isOpenShiftRoadmap流程developer provides git repoDeveloper chooses image from grgistrylayer is applied to imagelayer is added back to registryimage is scheduled and deployedDeveloper can declare webhooksupdated image is added back to the registryNew Images is depoyed as rooling updateCompareArchitectureOpenStack和Kubernetes相似的地方(2018-9-10)我也算是折腾了一年的OpenShift,OpenShift,就是Kubernetes的一个发行版,我的感觉,其实他们相似的地方还是很多,对我的改变并没有想象那么大。下面总结一下他们的相同的地方看不到对手无论是OpenStack还是kubernetes,都是在重围中杀出来,一骑绝尘,根本看不到对手。OpenStack干掉CloudStack,Eucalyptus,OpenNebula。Kubernetes,干掉swam ,messos都是压倒性的优势胜出。区别就在于,OpenStack胜出以后,就迷失了方向,往自己不擅长的边缘计算,最终只能是一条不归路。K8s胜出后,社区的想法还是很多,还保持1年4个版本的迭代。一个是python最大的开源项目,一个是Go语言最大的开源项目。基金会管理OpenStack专门成立基金会管理,不过基金会不涉及技术方向,技术方向有专门的TC,技术委员会管理,当big tent,大帐篷策略后,TC的用途也就不大,而且TC混日子的人也多了。OpenStack官方目前有60多个项目,其实大部分都是僵尸项目,停留在实验室阶段,根本就没生产使用案例。真的能用的项目,应该不超过15个。k8s,其实也归属CNCF基金会。吸取OpenStack基金会的教训。对项目是加入,孵化,毕业,有了严格的流程。这个可以很好避免。OpenStack技术设计的时候,很纠结规模优先还是功能优先。公有云为主,还是私有云为主。这个也导致一直无法明确。我的理解,K8s的功能,逐步的玩企业级发展。无论是用k8s支持有状态的应用,还是让k8s管理vm,方向都非常明确。架构看完OpenStack的架构演变过程,再看k8s,感觉相似的地方很多的。Nova==CRI-Ocinder=CSINeutron=CNI计算,存储,网络,都搞一个,无论是OpenStack,还是k8s,基本都是一样的玩法,让厂商都能参与进来。目前k8s上没有统一的身份认证,就没有keystone,k8s上,没提供镜像仓库,就没有glance。事实上也是有一堆的应用,对于OpenStack组件keystone+ldap=keycloak+ldapglance=Quay or harbor部署大家都感觉OpenStack很复杂,如果和k8s比起来,其实算是简单的。k8s的部署,单单是一个双向的证书,都能让你折腾一个半天。但是用户一般感觉k8s比较简单,一个原因,就是k8s自己做的部署管理工具比较成熟。目前红帽的OpenShift,已经采用全容器化的部署方案部署OpenShift,并且容器的管理,也是在Openshift上,真的比较完善。升级的问题,也就变得很简单。OpenStack目前部署方案的方向也是容器化部署,不过还无法实现用k8s来管理,只能通过ansible来管理。对我来说,kolla-ansible 部署OpenStackopenshift-ansible 部署OpenShift都是通过ansible来实现。总结RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶。以上就是【金鱼哥】对 第一章 介绍红帽OPENSHIFT容器平台--管理OpenShift与课外补充 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。红帽认证专栏系列:RHCSA专栏:戏说 RHCSA 认证RHCE专栏:戏说 RHCE 认证此文章收录在RHCA专栏:RHCA 回忆录如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】!
文章
存储  ·  Kubernetes  ·  监控  ·  Linux  ·  KVM  ·  数据库  ·  虚拟化  ·  Docker  ·  容器  ·  Perl
2022-08-13
Linux: 硬件时钟, 系统时钟, 网络时钟, 时区修改和同步
目录基础认识常用命令查看和修改Linux的时区常见时区timedatectl时钟同步用硬件时钟同步系统时钟:用系统时钟同步硬件时钟:同步网络时间         hwclock命令语法查看和修改Linux的时间时钟--详解硬件时钟系统时钟时间同步时间标准网络时间ntp时钟同步服务chrony时钟同步服务chrony 命令小册子chronyc sources 输出结果解析备注ntp常用服务器基础认识操作系统的时间(时钟)由以下4个部分决定:时间数值时间标准(本地时间/UTC/其他)时区夏令时(DST,Daylight Saving Time,部分适用,中国已经废止)操作系统有两个时钟,分别是硬件时钟和系统时钟,大多数操作系统的时钟管理方式如下:硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。启动时根据硬件时钟设置系统时钟维护准确的系统时钟关机时根据系统时钟设置硬件时钟常用命令查看和修改Linux的时区常见时区(1)UTC 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。(2)GMT  格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的×××格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)(3)CST  中国标准时间 (China Standard Time)GMT + 8 = UTC + 8 = CST(4)DST夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用。(中国不使用)(1)UTC 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。(2)GMT  格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的×××格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)(3)CST  中国标准时间 (China Standard Time)GMT + 8 = UTC + 8 = CST(4)DST夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用。(中国不使用)1. 查看当前时区命令 : timedatectl2. 修改设置Linux服务器时区timedatectl set-timezone Asia/Shanghai[root@localhost etc]# timedatectl Local time: 三 2021-09-15 10:04:05 CST Universal time: 三 2021-09-15 02:04:05 UTC RTC time: 三 2021-09-15 02:04:05 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: notimedatectl[root@localhost ~]# timedatectl --help timedatectl [OPTIONS...] COMMAND ... Query or change system time and date settings. -h --help Show this help message --version Show package version --no-pager Do not pipe output into a pager --no-ask-password Do not prompt for password -H --host=[USER@]HOST Operate on remote host -M --machine=CONTAINER Operate on local container --adjust-system-clock Adjust system clock when changing local RTC mode --monitor Monitor status of systemd-timesyncd -p --property=NAME Show only properties by this name -a --all Show all properties, including empty ones --value When showing properties, only print the value Commands: status Show current time settings show Show properties of systemd-timedated set-time TIME Set system time set-timezone ZONE Set system time zone list-timezones Show known time zones set-local-rtc BOOL Control whether RTC is in local time set-ntp BOOL Enable or disable network time synchronization systemd-timesyncd Commands: timesync-status Show status of systemd-timesyncd show-timesync Show properties of systemd-timesyncd list-timezones 列出系统上支持的时区set-timezone 设定时区set-time 设置时间set-btp 设置同步ntp时钟同步用硬件时钟同步系统时钟:hwclock --hctosys 或者 clock --hctosyshc代表硬件时间,sys代表系统时间,即用硬件时钟同步系统时钟用系统时钟同步硬件时钟:hwclock --systohc或者clock --systohc即用系统时钟同步硬件时钟同步网络时间同步互联网时间ntpdate -u cn.pool.ntp.orghwclock命令Linux hwclock命令用于显示与设定硬件时钟。在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。语法hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test] [--utc][--version][--set --date=<日期与时间>]参数:--adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。--debug  显示hwclock执行时详细的信息。--directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。--hctosys  将系统时钟调整为与目前的硬件时钟一致。--set --date=<日期与时间>  设定硬件时钟。--show  显示硬件时钟的时间与日期。--systohc  将硬件时钟调整为与目前的系统时钟一致。--test  仅测试程序,而不会实际更改硬件时钟。--utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。--version  显示版本信息。查看和修改Linux的时间1. 查看时间和日期命令 : "date"2.设置时间和日期例如:将系统日期设定成2009年11月3日的命令命令 : "date -s 11/03/2009"将系统时间设定成下午5点55分55秒的命令命令 : "date -s 17:55:55"3. 将当前时间和日期写入BIOS,避免重启后失效命令 : "hwclock -w"时钟--详解硬件时钟硬件时钟,又称实时时钟(Real Time Clock,RTC)或CMOS时钟,是独立的硬件设备(电池、电容元件等),保存的时间包括年、月、日、时、分、秒。2016年之后的UEFI固件还能保存时区和是否使用夏令时。操作硬件时钟的工具是hwclock,用于查询、设置硬件时钟等。读取硬件时钟:hwclock --show使用系统时钟设置硬件时钟:hwclock --systohc更新硬件时钟后,/etc/adjtime随之更新。系统时钟系统时钟,又称软件时钟,是Linux内核的一部分,包括时间、时区、夏令时(如果适用)。系统启动时,系统时钟的初始值根据硬件时钟设定(依赖于/etc/adjtime);系统启动后,Linux内核利用定时器中断维护系统时钟 ,与硬件时钟无关。操作系统时钟的工具是timedatectl,用于查询/设置时间、设置时区、设置时间同步等。查询时钟,其中包括本地时间、UTC时间、RTC时间、时区、系统时钟同步状态、NTP服务状态、RTC是否使用本地时间:# timedatectl Local time: Tue 2020-06-02 18:08:06 CST Universal time: Tue 2020-06-02 10:08:06 UTC RTC time: Tue 2020-06-02 10:08:06 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no 设置时钟,时间格式是yyyy-MM-dd hh:mm:ss:# timedatectl set-time "2020-06-02 17:30:00" # timedatectl Local time: Tue 2020-06-02 17:30:05 CST Universal time: Tue 2020-06-02 09:30:05 UTC RTC time: Tue 2020-06-02 09:30:05 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: no NTP service: inactive RTC in local TZ: no 时间字符串为本地时间,执行命令后,本地时间、UTC时间、RTC时间会同时更新。开启时间同步:timedatectl set-ntp 1时间同步可以使用ntpd -qg命令同步时间。另外,Linux系统自带ntpd.service,可以使用systemctl start ntpd命令启动NTP服务。需要注意的是,ntpd命令或服务仅更新本地时间和UTC时间,不更新RTC时间。 可以设置一个过去的时间,然后执行ntpd命令校准时间,再执行timedatectl命令查询验证。不过这并不是什么大问题,因为关机时操作系统会根据系统时钟重设硬件时钟,下次启动时,二者恢复一致。时间标准两种时间标准:本地时间(时区相关)UTC时间(时区无关)硬件时钟所采用的时间标准是由操作系统决定的,默认情况下,Windows使用本地时间,macOS使用UTC时间,类Unix系统则各有不同。使用UTC时间标准的操作系统通常把硬件时钟视为UTC,然后在启动时根据时区进行调整设置系统时间。如果一台机器上安装了多个操作系统,它们都使用硬件时钟设置系统时间,建议采用统一的UTC时间标准,避免切换系统时发生时间错乱。网络时间ntpdate命令用于同步更新互联网时间,或者NTP服务器时间NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间..ntp时钟同步服务centos7以上版本对如下命令已经不能用:yum install ntp # 报如下错, Error: Unable to find a match # 使用如下方法 安装ntp服务 # 添加源 rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm # 安装ntp服务 dnf install wntp # 时间同步 ntpdate ntp1.aliyun.comchrony时钟同步服务适用于centos7以上版本chrony是网络时间协议(NTP)的通用实现。它可以将系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表和键盘进行的手动输入进行同步。它还可以充当NTPv4(RFC 5905)服务器并与之同行,以向网络中的其他计算机提供时间服务。它被设计为在各种条件下均能良好运行,包括间歇性网络连接,网络严重拥塞,温度变化(普通计算机时钟对温度敏感)以及无法连续运行或在虚拟机上运行的系统。通过Internet同步的两台计算机之间的典型精度在几毫秒内;在LAN上,精度通常为数十微秒。使用硬件时间戳记或硬件参考时钟,亚微秒精度是可能的。chrony包括两个程序,chronyd一个是守护程序,可以在引导时启动,chronyc另一个是命令行界面程序,可以用来监视其chronyd性能并在运行时更改各种操作参数。目前centos7已经默认安装chrony3.2作为时钟服务。安装chronyd服务# 操作主机:所有主机 yum -y install chrony # 备份旧配置文件 cp /etc/chrony.conf /etc/chrony.$(date +'%s') 配置chronyd服务器# 操作主机:chronyd服务器 # 修改服务器配置⽂件,以阿⾥云时间服务器为上游服务器 cat > /etc/chrony.conf <<_EOF server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync local stratum 10 logdir /var/log/chrony _EOF 启动chrony服务# 3. 启动chronyd systemctl start chronyd systemctl enable chronyd # 查看时间同步状态 timedatectl status # 开启网络时间同步 timedatectl set-ntp true检查阿里云时钟服务状态1. [root@localhost bigunion]# chronyc sources 2. 210 Number of sources = 2 3. MS Name/IP address Stratum Poll Reach LastRx Last sample 4. =============================================================================== 5. ^* 120.25.115.20 2 10 367 410 +2787us[+3511us] +/- 18ms 6. ^+ 203.107.6.88 2 10 377 438 -547us[ +176us] +/- 23ms 查看123和323端口是否监听 chrony配置参数说明服务unit文件: /usr/lib/systemd/system/chronyd.service监听端口: 323/udp,123/udp配置文件: /etc/chrony.confserver: 该参数可以多次用于添加时钟服务器,必须以"server "格式使用。可以添加任意个时间服务器。stratumweight: stratumweight指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。默认情况下,CentOS中设置为0,让chronyd在选择源时忽略源的层级。driftfile: 根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。rtcsync: rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。allow/deny: 这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。例:allow 192.168.0.10deny 192.168.2.10cmdallow/cmddeny: 指定哪个IP地址或哪台主机可以通过chronyd使用控制命令。bindcmdaddress : 该指令允许你限制chronyd监听哪个网络接口的命令包(由chronyc执行)。该指令通过cmddeny机制提供了一个除上述限制以外可用的额外的访问控制等级。例:bindcmdaddress 127.0.0.1bindcmdaddress ::1makestep: chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效。makestep 1.0 3 如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次更新中步进。  常见参数如上,实际参数还有很多,可以在官网查看。https://chrony.tuxfamily.org/documentation.html chrony 命令小册子查看 ntp_serverschronyc sources -v查看 ntp_servers 状态chronyc sourcestats -v查看 ntp_servers 是否在线chronyc activity -v查看 ntp 详细信息chronyc tracking -v强制同步下系统时钟chronyc -a makestep[root@localhost etc]# chronyc --help Usage: chronyc [-h HOST] [-p PORT] [-n] [-c] [-d] [-4|-6] [-m] [COMMAND] [root@localhost etc]# chronyc help System clock: tracking Display system time information makestep Correct clock by stepping immediately makestep <threshold> <updates> Configure automatic clock stepping maxupdateskew <skew> Modify maximum valid skew to update frequency waitsync [<max-tries> [<max-correction> [<max-skew> [<interval>]]]] Wait until synchronised in specified limits Time sources: sources [-v] Display information about current sources sourcestats [-v] Display statistics about collected measurements reselect Force reselecting synchronisation source reselectdist <dist> Modify reselection distance NTP sources: activity Check how many NTP sources are online/offline ntpdata [<address>] Display information about last valid measurement add server <address> [options] Add new NTP server add peer <address> [options] Add new NTP peer delete <address> Remove server or peer burst <n-good>/<n-max> [<mask>/<address>] Start rapid set of measurements maxdelay <address> <delay> Modify maximum valid sample delay maxdelayratio <address> <ratio> Modify maximum valid delay/minimum ratio maxdelaydevratio <address> <ratio> Modify maximum valid delay/deviation ratio minpoll <address> <poll> Modify minimum polling interval maxpoll <address> <poll> Modify maximum polling interval minstratum <address> <stratum> Modify minimum stratum offline [<mask>/<address>] Set sources in subnet to offline status online [<mask>/<address>] Set sources in subnet to online status onoffline Set all sources to online or offline status according to network configuration polltarget <address> <target> Modify poll target refresh Refresh IP addresses Manual time input: manual off|on|reset Disable/enable/reset settime command manual list Show previous settime entries manual delete <index> Delete previous settime entry settime <time> Set daemon time (e.g. Sep 25, 2015 16:30:05 or 16:30:05) NTP access: accheck <address> Check whether address is allowed clients Report on clients that have accessed the server serverstats Display statistics of the server allow [<subnet>] Allow access to subnet as a default allow all [<subnet>] Allow access to subnet and all children deny [<subnet>] Deny access to subnet as a default deny all [<subnet>] Deny access to subnet and all children local [options] Serve time even when not synchronised local off Don't serve time when not synchronised smoothtime reset|activate Reset/activate time smoothing smoothing Display current time smoothing state Monitoring access: cmdaccheck <address> Check whether address is allowed cmdallow [<subnet>] Allow access to subnet as a default cmdallow all [<subnet>] Allow access to subnet and all children cmddeny [<subnet>] Deny access to subnet as a default cmddeny all [<subnet>] Deny access to subnet and all children Real-time clock: rtcdata Print current RTC performance parameters trimrtc Correct RTC relative to system clock writertc Save RTC performance parameters to file Other daemon commands: cyclelogs Close and re-open log files dump Dump all measurements to save files rekey Re-read keys from key file shutdown Stop daemon Client commands: dns -n|+n Disable/enable resolving IP addresses to hostnames dns -4|-6|-46 Resolve hostnames only to IPv4/IPv6/both addresses timeout <milliseconds> Set initial response timeout retries <retries> Set maximum number of retries keygen [<id> [<type> [<bits>]]] Generate key for key file exit|quit Leave the program help Generate this helpchronyc sources 输出结果解析[root@localhost etc]# chronyc chrony version 3.5 Copyright (C) 1997-2003, 2007, 2009-2019 Richard P. Curnow and others chrony comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public License version 2 for details. chronyc> sources -v 210 Number of sources = 2 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 120.25.115.20 2 6 377 25 -1078us[-1292us] +/- 19ms ^- 203.107.6.88 2 6 377 25 -5231us[-5445us] +/- 23ms chronyc> exit exitM 这表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。S 此列指示源的状态。* 表示chronyd当前同步到的源。 + 表示可接受的信号源,与选定的信号源组合在一起。 - 表示被合并算法排除的可接受源。 ? 指示已失去连接性或其数据包未通过所有测试的源。它也显示在启动时,直到从中至少收集了3个样本为止。 x 表示chronyd认为是虚假行情的时钟(即,其时间与大多数其他来源不一致)。 〜 表示时间似乎具有太多可变性的来源。Name/IP address这显示了源的名称或IP地址,或参考时钟的参考ID。Stratum这显示了来源的层,如其最近收到的样本中所报告的那样。层1表示一台具有本地连接的参考时钟的计算机。与第1层计算机同步的计算机位于第2层。与第2层计算机同步的计算机位于第3层,依此类推。Poll这显示轮询源的速率,以秒为单位的时间间隔的以2为底的对数。因此,值为6表示每64秒进行一次测量。chronyd会根据当前情况自动更改轮询速率。Reach这显示了源的可达性寄存器以八进制数字打印。寄存器有8位,并在每个从源接收或丢失的数据包上更新。值377表示从最后八次传输中收到了对所有用户的有效答复。LastRx此列显示多长时间前从来源接收到了最后一个好的样本(在下一列中显示)。未通过某些测试的测量将被忽略。通常以秒为单位。字母m,h,d或y表示分钟,小时,天或年。Last sample此列显示上次测量时本地时钟与源之间的偏移。方括号中的数字表示实际测得的偏移量。可以用ns(表示纳秒),us (表示微秒),ms(表示毫秒)或s(表示秒)作为后缀。方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。备注ntp常用服务器国内:cn.pool.ntp.org 中国开源免费NTP服务器 ntp.aliyun.com 阿里云 ntp1.aliyun.com 阿里云NTP服务器 ntp2.aliyun.com 阿里云NTP服务器 time1.aliyun.com 阿里云NTP服务器 time2.aliyun.com 阿里云NTP服务器 210.72.145.44 国家授时中心 s1a.time.edu.cn 北京邮电大学 s1b.time.edu.cn 清华大学 s1c.time.edu.cn 北京大学 s1d.time.edu.cn 东南大学 s1e.time.edu.cn 清华大学 s2a.time.edu.cn 清华大学 s2b.time.edu.cn 清华大学 s2c.time.edu.cn 北京邮电大学 s2d.time.edu.cn 西南地区网络中心 s2e.time.edu.cn 西北地区网络中心 s2f.time.edu.cn 东北地区网络中心 s2g.time.edu.cn 华东南地区网络中心 s2h.time.edu.cn 四川大学网络管理中心 s2j.time.edu.cn 大连理工大学网络中心 s2k.time.edu.cn CERNET桂林主节点 s2m.time.edu.cn 北京大学 ntp.sjtu.edu.cn 202.120.2.101 上海交通大学国外:time1.apple.com 苹果NTP服务器 time2.apple.com 苹果NTP服务器 time3.apple.com 苹果NTP服务器 time4.apple.com 苹果NTP服务器 time5.apple.com 苹果NTP服务器 time1.google.com 谷歌NTP服务器 time2.google.com 谷歌NTP服务器 time3.google.com 谷歌NTP服务器 time4.google.com 谷歌NTP服务器 pool.ntp.org 开源免费NTP服务器参考文档System time - ArchWikihttps://chrony.tuxfamily.org/documentation.html
文章
Unix  ·  Linux  ·  定位技术  ·  数据安全/隐私保护  ·  iOS开发  ·  MacOS  ·  Windows
2022-04-17
《VMware vSphere企业运维实战》——2.4 在VMware ESXi中配置虚拟机
本节书摘来自异步社区《VMware vSphere企业运维实战》一书中的第2章,第2.4节,作者:王春海著,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.4 在VMware ESXi中配置虚拟机 使用vSphere Client连接到VMware ESXi之后,就管理并配置VMware ESXi,包括添加存储、网络,以及在VMware ESXi创建虚拟机、在虚拟机中安装操作系统、重新配置虚拟机等。首先介绍在VMware ESXi中创建虚拟机的操作,稍后介绍管理VMware ESXi的内容。 2.4.1 创建虚拟机在vSphere Client控制台中,创建虚拟机与在VMware Workstation中相类似,主要步骤如下。 (1)用鼠标右键单击连接到的VMware ESXi的计算机名称或IP地址,在弹出的快捷菜单中选择“新建虚拟机”选项,或者按“Ctrl+N”热键,如图2-74所示。 (2)在“配置”对话框中,选择“自定义”,如图2-75所示。 (3)在“名称和位置”对话框的“名称”文本框中,输入要创建的虚拟机的名称,如Win81-TP,如图2-76所示。在VMware ESXi与vCenter Server中,每个虚拟机的名称最多可以包含80个英文字符,并且每个虚拟机的名称在vCenter Server虚拟机文件夹中必须是唯一的。在使用vSphere Client直接连接到VMware ESXi主机时无法查看文件夹,如果要查看虚拟机文件夹和指定虚拟机的位置,请使用VMware vSphere连接到vCenter Server,并通过vCenter Server管理ESXi。 说明 通常来说,创建的虚拟机的名称与在虚拟机中运行的操作系统或者应用程序有一定的关系,在本例中创建的虚拟机名称为Win81-TP,表示这是创建一个Windows 8.1的虚拟机,并在虚拟机中安装Windows 8.1的操作系统。(4)在“数据存储”对话框中,选择要存储虚拟机文件的数据存储,当前只有一个存储,如图2-77所示。在该列表中,显示了当前存储的容量、已经使用的空间、可用的空间、存储的文件格式。 (5)在“虚拟机版本”对话框中,选择虚拟机的版本。在VMware ESXi 5的服务器中,推荐使用“虚拟机版本:8”的格式,这是VMware ESXi 5.0支持的格式,具有更多功能。如图2-78所示。如果你的虚拟机在VMware ESX/ESXi 4及更高版本上运行,或者与ESX/ESXi4共享虚拟机时可以选择“虚拟机版本:7”。 说明 VMware ESXi 5.5支持“虚拟机版本:10”,但在创建虚拟机的对话框中没有。如果你需要“虚拟机版本:10”,则可以在创建虚拟机后,通过升级硬件的方式,将虚拟机版本升级到10。(6)在“客户机操作系统”对话框中,选择虚拟机要运行的操作系统,如图2-79所示。这与VMware Workstation、VMware Server相类似。在本示例中选择“Windows 8(32位)”。 (7)在“CPU”对话框中,选择虚拟机中虚拟CPU的数量,在VMware ESXi 5的硬件版本中,虚拟机中虚拟CPU的内核总数(虚拟插槽数×每个虚拟插槽的内核数)最多为32,但这受限于主机的CPU数量。为虚拟机中分配的虚拟CPU的数量不能超过主机的CPU数量,例如在写作本章时,作者所用的服务器是具有2个4核心的CPU,则在创建虚拟机时,为虚拟机中分配虚拟CPU的数量不能超过2(虚拟插槽数),如图2-80所示。 在为虚拟机选择内核数时,不会超过VMware ESXi所在主机的CPU内核总数,例如,当在一个具有2个4核心的CPU主机上,创建虚拟机时,每个虚拟插槽的内核数不会超过4个,如图2-81所示。 (8)在“内存”对话框中,配置虚拟机的内存大小,在默认情况下,向导为用户分配的一个合适的大小,在本例中为Windows 8.1的虚拟机默认会分配1GB的内存,如图2-82所示。 说明 在VMware ESXi 5中,最多可以为虚拟机分配1 011GB(大约接近1TB即1 024GB的内存量)。(9)在“网络”对话框中,为虚拟机创建网络连接,如图2-83所示。在VMware ESXi中的虚拟机,最多支持4个网卡。在VMware ESXi 5中,虚拟网卡的类型默认为Intel E1000网卡,也可以选择VMXNET 2或 VMXNET 3型网卡。当VMware ESXi主机有多个网络时,可以在“网络”列表中选择。 说明 在本例中,为虚拟机选择一个虚拟网卡,并且虚拟网卡类型为Intel E1000。(10)在“SCSI控制器”对话框中,选择要使用的SCSI控制器类型,可以在“BusLogic”、“LSI逻辑并行”、“LSI Logic SAS”、“VMware准虚拟”之间选择,如图2-84所示。通常情况下,选择默认值即可。 (11)在“选择磁盘”对话框,为虚拟机创建虚拟硬盘,这与VMware Workstation相类似。在此选择“创建新的虚拟磁盘”,如图2-85所示。 说明 与VMware Workstation可以直接使用主机物理硬盘相类似,在VMware ESXi中,可以直接使用“裸机映射”磁盘。(12)在“创建磁盘”对话框中,设置新创建的虚拟磁盘的容量及置备参数。如果想让虚拟机“按需分配磁盘空间”,请选择“Thin Provision”;如果想让虚拟磁盘按照“磁盘大小”立刻分配空间,可以选择“厚置备延迟置零”或“厚置备置零”两种磁盘,如图2-86所示。厚置备磁盘具有更好的性能,但会占用过多的磁盘空间。通常情况下,对于需要使用数据库系统的虚拟机,选择厚置备磁盘(非SSD存储);对于大多数的应用来说,选择“Thin Provision”即可。如果虚拟机保存在SSD(固态硬盘)存储上,则不要选择“厚置备”磁盘,在SSD存储上使用“Thin Provision”即可获得更好的性能。通常来说,为Windows 7、Windows 8的虚拟机分配60GB即可满足系统的需求。 (13)在“高级选项”中,指定虚拟磁盘的高级选项与工作模式,如无必要,不要更改,如图2-87所示。 说明 “独立”磁盘模式不受快照影响。如果在一个虚拟机系统中,有多个虚拟硬盘时,在创建快照或者从快照中恢复时,选中为“独立”磁盘模式的虚拟硬盘保持不变。在VMware ESXi虚拟机中,“独立”磁盘有两种模式:“独立—持久”与“独立—非持久”。持久模式磁盘的行为与物理机上常规磁盘的行为相似。写入持久模式磁盘的所有数据都会永久性地写入磁盘。而对于“独立—非持久”模式的虚拟机关闭虚拟机电源或重置虚拟机时,对非持久模式磁盘的更改将丢失。使用非持久模式,您可以每次使用相同的虚拟磁盘状态重新启动虚拟机。对磁盘的更改会写入重做日志文件并从中读取,重做日志文件会在虚拟机关闭电源或重置时被删除。(14)在“即将完成”对话框中,查看当前新建虚拟机的设置,然后单击“完成”按钮,如图2-88所示。如果你要想进一步修改虚拟机设置,可以选中“完成前编辑虚拟机设置”复选框。 (15)在创建虚拟机的过程中,在vSphere Client控制台中,在下方的“近期任务”中,显示创建虚拟机的进程。如果要启动虚拟机、查看虚拟机窗口,可以鼠标右击,在弹出的快捷菜单中选择“打开控制台”选项,如图2-89所示。 2.4.2 修改虚拟机的配置与VMware Workstation、VMware Server相同,在创建虚拟机之后,在虚拟机的整个生存周期中,可以根据需要随时修改虚拟机的配置。通常情况下,都是在虚拟机关闭的情况下修改参数,如内存、CPU数量、增加或移动虚拟硬盘、增加虚拟硬盘的大小、添加或移动网卡等。而在VMware ESXi 5中,对于安装某些操作系统的虚拟机,如Windows Server 2003,是可以在虚拟机运行的情况下增加内存大小的,而Windows Server 2008,还可以在虚拟机运行的时候增加虚拟CPU的数量,这个功能称为内存与CPU的热添加功能。接下来,通过在上一节创建的虚拟机,来介绍修改虚拟机配置这一功能的使用。 在vSphere Client控制台中,在左边的窗格中,右击一个虚拟机弹出快捷菜单,在该菜单中可以打开或关闭虚拟机电源、打开虚拟机的控制台、修改虚拟机的设置、重命名虚拟机、删除虚拟机等,如图2-90所示。这些操作比较简单,不再一一介绍。 在弹出的快捷菜单中,选择“编辑设置”,可以打开虚拟机的配置对话框,修改虚拟机的设置。例如,可以添加、删除虚拟机的硬件,也可以修改虚拟机的参数,如设置内存大小、硬盘大小等,如图2-91所示。 在虚拟机配置对话框中,大多与VMware Workstation中相类似,但也有不同,主要如下。 (1)在VMware ESXi的虚拟机,可以修改硬盘大小,如图2-92所示。 注意: 无论是在VMware Workstation还是在VMware ESXi中,只能增加硬盘容量,不能减小硬盘的容量。并且虚拟硬盘的大小受限于所在的存储器的大小及VMware虚拟机最大硬盘大小(2TB)。例如,在图2-92中,Win81-TP所在的VMware ESXi存储中最大空间为19 144.54GB,则该虚拟机的硬盘大小则为1 914.54GB;如果当前服务器可用空间超过2TB,则虚拟硬盘上限为2TB。 (2)VMware ESXi的虚拟机的光驱、软驱,除了可以使用VMware ESXi的主机设备外,还可以使用所连接的vSphere Client客户端的光驱或镜像文件,也可以使用保存在VMware ESXi的数据存储中的镜像,如图2-93所示。 (3)在“显卡”选项中,可以为虚拟机指定显示器数目、视频内存大小,如图2-94所示。如果是Windows 7、Windows 8等工作站操作系统的虚拟机,可以为虚拟机启用3D支持,如果是Windows Server 2003等服务器操作系统,虚拟机不能启动3D支持(选项为灰色)。通常情况下,为虚拟机分配较大的视频内存可以提高虚拟机的显示性能。如果不清楚为虚拟机设置多大的内存,可以选择“自动检测设置”。 (4)在“CPU”选项中,可以为虚拟机指定虚拟CPU的插槽数与每插槽的内核数,如图2-95所示。 (5)在“选项→高级→内存/CPU热插拔”中,如果虚拟机所配置的操作系统支持内存的热添加或(与)CPU的热插拔,在该项对应的设置是可以修改并启用的。Windows 7、Windows 8、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012等操作系统虚拟机还支持“CPU热插拔”功能,大多数的操作系统支持内存热添加。在“内存热添加”项可以选择“为此虚拟机启用内存热添加”,而在“CPU热插拔”选项中,“为此虚拟机启用CPU热添加”与“为此虚拟机启用CPU热添加和热移除”选项禁用,如图2-96所示。当虚拟机所配置的操作系统是Windows Server 2008 R2、Windows Server 2008时,是可以启用CPU热插拔选项。 (6)虚拟机的启动是比较好的,这就导致在虚拟机启动时,来不及按“F2”键进入BIOS设置。此时可以在“选项→高级→引导选项”中,选中“下一次虚拟机引导时,强制进入BIOS设置画面”,这样当虚拟机启动时会进入BIOS设置对话框,如图2-97所示。 (7)在“资源”选项卡中,可以分配CPU、内存、磁盘等资源值,默认情况下是没有进行限制,可以根据需要,限制虚拟机的CPU、内存、磁盘占用的资源,如图2-98所示。 有关虚拟机的其他设置,以后在用到的时候会做进一步的介绍。 在vSphere Client中,单击工具栏上的“图片 87”按钮,或者在快捷菜单中,选择“打开控制台”命令,打开虚拟机的控制台,在该虚拟机台中,可以启动、关闭虚拟机,以及修改虚拟机的设置。例如,可以为当前虚拟机选择保存在vSphere Client客户端硬盘上的光盘镜像作为虚拟机的光驱,以为虚拟机安装操作系统,如图2-99所示。 2.4.3 在虚拟机中安装操作系统本节将介绍在VMware ESXi虚拟机中安装操作系统、安装VMware Tools的步骤,这个步骤与VMware Workstation类似。在本节的实验中,将在Win81-TP的虚拟机中安装Windows 8企业版操作系统。 (1)打开WIN81-TP虚拟机控制台,单击“图片 84”按钮启动虚拟机。首先要选择使用何种方式(或介质)安装操作系统。你可以通过单击“图片 83”按钮弹出“CD/DVD驱动器1”下拉菜单,选择是使用主机设备、主机数据存储上的ISO镜像、本地磁盘上的ISO、本地设备作为安装光盘安装操作系统,如图2-100所示。 说明 如果在企业, 推荐在网络中配置“Windows部署服务器”, 通过网络部署Windows操作系统,或者将常用的操作系统(例如Windows 8、Windows Server 2012)的ISO镜像文件上传到VMware ESXi数据存储。当然也可以使用本地ISO镜像,这可根据实际情况选择。(2)设置之后,用鼠标在控制台窗口中单击一下,进入虚拟机的设置。如果虚拟机进入CMOS菜单,按F10键保存退出,如图2-101所示。 (3)在本示例中,使用网络中的“Windows部署服务”安装。虚拟机启动后,会从网络中的DHCP服务器获得IP地址并从Windows部署服务下载启动镜像,之后按“F12”键开始启动从Windows部署服务,如图2-102所示。 (4)在“Windows Boot Manager”菜单选择启动镜像,如果是32位虚拟机,选择X86,如果是64位虚拟机,则选择X64,如图2-103所示。 (5)在“选择要安装的操作系统”列表中,选择要安装的系统,在此选择32位的Windows 8.1企业版,如图2-104所示。 (6)在“你想将Windows安装在哪里”选择安装磁盘,直接单击“下一步”按钮,将Windows 8.1安装在硬盘上,如图2-105所示。 (7)之后开始安装Windows 8.1,大约需要15~20分钟的时间。安装完Windows 8.1企业版后,在“许可条款”对话框,接受许可协议,如图2-106所示。 (8)在安装完Windows 8.1之后,在“虚拟机”菜单中选择“客户机→安装/升级VMware Tools”,如图2-107所示,然后根据提示安装VMware Tools。 (9)在安装完Windows 8.1、VMware Tools之后,激活Windows 8.1。对于Windows 7专业版、Windows 7企业版、Windows 8专业版、Windows 8企业版、Windows Server 2008、Windows Server 2012等操作系统,建议在网络中通过配置KMS服务器来激活。另外,如果网络中配置了Active Directory、DNS、DHCP服务器,也可以将KMS服务器地址配置在DNS中,只要计算机是“自动获得IP地址与DNS地址”,在网络连通后,相关的操作系统会自动激活。在Windows 8.1激活之后,然后安装常用的软件,之后右击左下角的按钮选择关闭Windows 8.1虚拟机,如图2-108所示。 在VMware ESXi虚拟机中安装软件,与在VMware Server虚拟机中安装软件相似: (1)可以在虚拟机中,直接访问Internet,从Internet下载安装程序。 (2)在虚拟机中,通过局域网连接到网络中的其他共享服务器获得安装程序。 (3)将软件的安装程序制作成ISO镜像加载到虚拟机中安装。 在这一点上,在VMware ESXi中安装软件要比VMware Workstation复杂,因为在VMware Workstation中,可以直接将主机中的软件通过拖曳到虚拟机中,或者直接将主机文件夹映射到虚拟机中。但VMware ESXi则没有提供这一功能。 2.4.4 在ESXi虚拟机中使用U盘或其他外设VMware ESXi虚拟机支持外接U盘或其他并口(LPT1)、串口(COM1、COM2)设备,这些设备既可以连接在VMware ESXi所在主机,也可以连接到vSphere Client管理客户端。如果只是暂时使用,可以连接到vSphere Client,如果是在某个虚拟机一直使用,则需要将这些设置安装在VMware ESXi主机上。 要使用USB或并口、串口设备,你需要修改虚拟机设置,在虚拟机中添加USB设备或并口、串口,然后启动虚拟机,让虚拟机连接这些设备。下面以在VMware ESXi虚拟机中,使用插在ESXi主机的一个U盘为例进行介绍。 (1)在VMware ESXi主机上插上一个U盘,然后用vSphere Client登录vCenter Server或VMware ESXi主机,打开该主机上的一个虚拟机,在“虚拟机”菜单选择“编辑设置”,如图2-109所示。 (2)打开虚拟机属性对话框,单击“添加”按钮,如图2-110所示。 (3)在“添加硬件”对话框中,在“设备类型”中先添加“USB控制器”,然后再添加“USB设备”,如图2-111所示。 (4)在“USB控制器”对话框中,添加控制器类型为EHCI+UHCI的控制器,如图2-112所示,这是一个2端口USB控制器,即最大允许在虚拟机中添加2个USB设备。 (5)在“即将完成”对话框,显示了添加的USB控制器类型,单击“完成”按钮,返回到虚拟机属性对话框,此时已经显示添加了USB控制器,如图2-113所示。 (6)再次单击“添加”按钮,在“设备类型”对话框中选择“USB设备”,如图2-114所示,以添加USB设备。 (7)在“选择USB设备”对话框中,从列表中选择可用的USB设备,如图2-115所示。 说明 如果要使用主机上的串口或并口设备,需要关闭虚拟机的电源,再次添加。(8)在“即将完成”对话框中,显示了添加的设备,单击“完成”按钮。 (9)返回到虚拟机属性对话框,可以看到添加的主机设备,如图2-116所示。 (10)切换到虚拟机中,打开“资源管理器”,可以看到添加的U盘已经可以使用,如图2-117所示。 (11)虚拟机不使用VMware ESXi主机上的USB设备后,请及时修改虚拟机的配置,移除添加的USB设备,如图2-118所示。 如果要使用vSphere Client客户端计算机上的U盘,方法也很简单,步骤如下。 (1)在虚拟机中添加了USB控制器后,在vSphere Client主机上插入U盘,并用vSphere Client打开虚拟机控制台,单击“图片 80”按钮,弹出“连接USB设备”快捷菜单,在该菜单中将会显示vSphere Client主机上连接的USB设备,如图2-119所示,在此选择主机上的USB Flash Disk。 (2)之后在虚拟机中,打开“资源管理器”,即能使用vSphere Client主机上的U盘,如图2-120所示。 (3)当不再使用vSphere Client上的USB设备后,单击“图片 88”按钮,选择“USB设备1→从USB Flash Disk断开连接”,如图2-121所示。 说明 在虚拟机中使用主机的USB设备,无论虚拟机是否开机都可;而在虚拟机中使用vSphere Client中的设备,虚拟机必须开机。2.4.5 使用快照保存虚拟机状态VMware ESXi提供了“快照”功能,可以保存虚拟机的“状态”,并且在需要时将其恢复到“快照”时的状态。VMware ESXi可以提供无限的快照(受限于VMware ESXi存储空间)。VMware ESXi中虚拟机的快照管理也比较简单,你可以在任何时候(包括虚拟机正在启动、运行)创建快照,如图2-122所示。 在“执行虚拟机快照”对话框中,在“名称”文本框中输入快照的名称,在“描述”文本框中,输入快照的描述。描述可以识别名称类似的快照之间的差异。在快照生成后,描述显示在“快照管理器”中。 在创建快照的时候,如果虚拟机正在运行,可以选中“生成虚拟机内存快照”复选框,这样会将虚拟机当前的状态保存下来,即在创建快照的同时可捕获虚拟机的内存。如果选中“使客户机文件系统处于静默状态(需要安装有 VMware Tools)”复选框以暂停客户机操作系统上的运行进程,以便在执行快照时文件系统内容处于一致状态。这仅应用于已打开电源的虚拟机。如图2-123所示。推荐在虚拟机关闭时创建快照。 在创建快照时,以及快照生成成功后,将列在 vSphere Client 窗口底部的“近期任务”面板中。 在“快照管理器”中,可以将虚拟机转到任意一个快照状态,也可以删除不用的快照,如图2-124所示。 另外,除了可以在快捷菜单中执行快照,进入快照管理器后,还可以通过单击工具栏上的“图片 63”图标创建快照、恢复快照、进入快照管理器,不一一介绍。 说明 (1)虽然可以在任何时间创建快照,但如无必要,请关闭虚拟机再创建快照。(2)在恢复快照时,虚拟机当前的状态会丢失,如果你需要保存当前的状态,可以为当前状态创建快照。(3)当虚拟机多次执行快照后,或者多次删除无用快照后,需要对虚拟机执行“整合”操作,以对冗余进行整理。
文章
存储  ·  运维  ·  固态存储  ·  虚拟化  ·  Windows
2017-05-02
...
跳转至:
开发与运维
5767 人关注 | 133247 讨论 | 318530 内容
+ 订阅
  • 如何查看Linux服务器架构是否可以运行docker?底层原理是什么?
  • 关于docker的基础知识一共有哪些?底层原理是什么?
  • Docker容器的操作一共有哪些?底层原理是什么?
查看更多 >
安全
1243 人关注 | 24115 讨论 | 85538 内容
+ 订阅
  • CentOS 7和CentOS 8的区别是什么?底层原理是什么?
  • Linux搭建docker对服务器版本有要求吗?
  • 数据库原理是干什么的?底层原理是什么?
查看更多 >
数据库
252935 人关注 | 52043 讨论 | 98872 内容
+ 订阅
  • redis是干什么的?底层原理是什么?
  • MySQL的查询优化器是干什么的?底层原理是什么?
  • MySQL的查询执行计划是干什么的?底层原理是什么?
查看更多 >
云计算
21827 人关注 | 59743 讨论 | 57960 内容
+ 订阅
  • 如何查看Linux服务器架构是否可以运行docker?底层原理是什么?
  • Docker的使用场景是什么?底层原理是什么?
  • Docker是干什么的?底层原理是什么?
查看更多 >
IoT
123068 人关注 | 2907 讨论 | 24737 内容
+ 订阅
  • 物联网操作系统概述
  • Metaforce/Forsage/佛萨奇2.0原力元宇宙开发详细,Metaforce/Forsage/佛萨奇2.0原力元宇宙系统开发成熟案例及源码
  • 分享两个超牛的开源API项目,程序员需要的免费API都在这里了!
查看更多 >