十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
来自百度经验针对如何才能学好linux的网络资料
我们提供的服务有:成都网站建设、网站制作、微信公众号开发、网站优化、网站认证、峨山县ssl等。为超过千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的峨山县网站制作公司
目前比较学习Linux系统比较火的论坛
谈谈如何学习Linux操作系统,来自51cto网络资料,参考资料
真正想学好linux系统,还是要研究linux内核源码。
为什么这么说呢?
无论是使用linux里面的一些命令,还是做linux应用层的开发,其实都是在使用linux内核的功能,但是其实你对linux底层的机制并不了解。长远来看,其实对你技术的提升不大。
比如:
1. 你天天使用linux里的docker命令,那你知道docker是如何做到这种隔离性的吗?
2. 你写linux应用程序,会看到入口是main()函数。那么,问题来了,为什么是main()呢?为什么不是hello()、不是fuck(),不是love()呢?
3. 你写linux应用程序,也会用write()函数。这个write函数,我们代码里并没有实现它,那是谁实现了它?是c库吗?有可能。但是如果我是写磁盘呢?c库能做到吗?
显然不能!还是需要linux内核的功能。
4. 我们知道,在linux里,不同的应用程序可以共享一个动态链接库,这又是怎么做到的?不是说进程是隔离的吗?为什么对动态链接库就不做隔离了?
5. linux应用层调用malloc是直接调用到内核吗?
很显然不是! c库里也有内存管理,c库里的内存管理单元会向内核批发内存(以page为单位),然后向应用程序零售内存(更小的粒度,可以是int大小,char大小等)
6. linux里进程和线程的共同点和差别究竟是什么?不要拿教科书里那一套来说教,从代码里得到的才是真知。
....
问题太多了,难道你不好奇吗?
如果你不好奇,那很显然你不太适合做技术,在技术这条路上可能走不远,应该早日转行;如果你很好奇,那就从现在开始,研究linux内核吧。
对于这个问题作为一个在linux下开发代码十几年的人,忍不住说几句
任何一门技能的学习,想要学精学透,都要付出巨大的努力,尤其是一些专业性比较强的技能,更需要持之以恒长期不断的投入大量的精力去学习和实践,比如linux的学习,就是一门专业性非常强的技能,如何能学好这项技能。
如何才能学好那?
思想上的重视
首先要明白自己为什么要学习linux,学习linux能给自己带来什么,也就是说要知道学好linux对自己的重要性。当从思想上认识到一件事对自己的重要性有多大的时候,就会投入多大的精力去做这件事。
行动上的具体
有了思想上的重视,下面就需要具体的行动
(1)从基础知识学习,打好基本功;任何一门新知识的学习,都要了解它的一些基本内容,基本概念等等,这样就需要找一本介绍linux的专业书籍,先大致了解一下linux的相关内容,不至于后期学习linux的时候,连一些最基本的专业名称都搞不懂。
(2)勤学多练,多多思考;linux是一门实用性非常强的技术,基础理论的学习就是为了应用的更好实现,应用的实现反过来也会使理论的知识更加巩固;找一套功能比较齐全的开发板,在开发板上实现各种功能,不断地去实践,带着问题去寻找答案,当看着自己设计的功能在开发板上实现,会乐此不彼。
总之,学好 Linux 绝非一朝一夕之事,时间、知识的积累是必不可少的
Linux是一个很大的概念,建议先从简单的入手,结合你的兴趣、工作内容,在某一方面深挖,来张图介绍Linux的学习升级。
初学入门Linux的话,可以先安装一个桌面版的Linux虚拟机(Ubuntu、CentOS7等都行),以熟悉常用命令为主,待基本掌握环境后,可以研究一下 内核源码 及 常用服务器的搭建,加深理解和应用,下面我简单介绍一下Linux的学习过程,感兴趣的朋友可以尝试一下:
01 安装Linux
这里建议安装一个桌面版的Linux虚拟机(Ubuntu、CentOS7等发行版本都行),初学入门的话,如果对Linux完全不熟悉,安装迷你版会非常不适应,许多功能和包都需要自己适配下载,可以先使用桌面版,不至于完全手足无措,后期熟悉环境后,可以使用无界面版,操作起来也会非常容易:
02 入门Linux
Linux虚拟机安装好后,就是Linux基础入门,这里网上教程和资料非常多,像慕课网、菜鸟教程、B站等都有大量优质视频和文档,当然,你也可以找一本专业的Linux书籍,一边学习一边练习,《 鸟哥的私房菜 》就非常不错,覆盖面比较广,讲解的也非常细致,常见的基础命令和配置等都要熟悉掌握,这些是使用Linux的基础:
03 深入Linux
Linux基础熟悉后,就是深入Linux的过程,这里可以学习和研究的东西就非常多了,基础的Linux应用,包括服务器搭建、嵌入式开发等,都有非常光明的前景,当然,你也可以研究一下Linux内核,包括内存管理、进程管理、文件系统、驱动等,对于深入理解操作系统来说,可以说是大有裨益:
Linux毕竟只是个操作系统,只要掌握了正确的学习方法,不会有多难。今天咱们就好好看看,Linux到底怎么学才是正确的学习方法。转自——马哥linux运维
一、从命令开始从基础开始
常常有些朋友一接触Linux 就是希望构架网站,根本没有想到要先了解一下Linux 的基础。这是相当困难的。虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解 Linux系统:
安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho
二、选择一本好的Linux书籍
在各个Linux论坛中,我们看到最多的问题往往是某个新手,在安装或使用linux的过程中遇到一个具体的问题就开始提问,很多都是重复性的问题,甚至有不少人连基本的问题描述都不是很清楚。这说明很多初学linux的人还没有掌握基本功。怎样才能快速提高掌握linux的基本功呢? 最有效的方法莫过于学习权威的linux工具书,工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于 linux的书籍有很多不过精品的不多,笔者强烈建议阅读《鸟哥的Linux私房菜 基础篇》,现在出到了第三版。新手最好能够买一本纸版书来仔细研读,并认真做好学习笔记。当然,如果习惯看电子书,也可以从这里 下载 PDF电子书。
三 、养成在命令行下工作的习惯
一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外地远程系统。
四、用Unix思维思考Linux
由于Linux是参照Unix的思想来设计的,理解和掌握它就必须以Unix的思维来进行,而不能以Windows思维。不可否认,windows 在市场上的成功很大一部分在于技术思想的独到之处。可是这个创新是在面对个人用户的前提下进行的,而面对着企业级的服务应用,它还是有些力不从心。多年来在计算机操作系统领域一直是二者独大:unix在服务器领域,Windows在个人用户领域。由此可见,用户需求决定了所采用的操作系统。不管什么原因,如果要学习Linux,那么首先要将思维从Windows的“这个小河” 中拖出来,放入Unix的海洋。
五、学习shell
对于Shell(中文名称壳),习惯Windows的读者肯定是非常陌生的,因为Windows只有一个“Shell”(如果可以说是Shell的话),那就是Windows自己。用一句话容易理解的解释就是,shell是用户输入命令与系统解释命令之间的中介。最直观的说法,一种Shell有一套自己的命令。举一个容易理解的例子,Linux的标准Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表现出来的。读者可能会不理解,Windows从命令行“进化”到了图形界面,那么Linux现在还使用命令行岂不是一种倒退?
当初我刚刚接触Linux时就曾有过这种想法。可是后来发现,如果使用图形界面,那么分配给应用软件的资源就少了,在价格昂贵的服务器上,能够以较低的硬件配置实现同样的功能是非常重要的。
下面举例说明,一台服务器有1GB内存,假设其中512MB用于处理图形界面,若要安装一个需要784MB内存的数据库软件,惟一的办法就是扩大内存。但是如果使用命令行,系统可能只需要64MB内存,其它的内存就可以供数据库软件使用了。使用命令行,不仅是内存,而且CPU及硬盘等资源的占用都要节省很多。所以,作为服务器使用命令行是优点而不是缺点。既然Shell有这么多优点,就必须要学习它。
简单来说就是:兴趣,坚持,方法。
兴趣第一
对于任何事情,兴趣在很大程度上会影响你做这件事的结果。去做一件自己很感兴趣的事情,和做一件自己本来毫无兴趣却由于某种原因而不得不做的事情,其结果往往是天地之别。究其缘由,无非是对于自己感兴趣的事情,是以一种享受其中乐趣的心态去做,在不自觉中就会投入更多的心思在上面,也会更加专注,更容易一直坚持下去。而对于毫无兴趣的事情,往往是迫于某种压力才不得不做,心里或多或少会有一定排斥拒绝,甚至会有煎熬的感觉,其结果也可想而知。
对于程序开发,也是一样的。工作中,同样是程序员,却经常会有两种不同的人。一种对程序开发真的是很感兴趣,一天不写代码不看代码就如坐针毡,感觉这一天总缺少点什么,往往这种人才能成为技术人口中的大神。另外一种人,则是相反,看代码写代码完全是因为完成任务而不得不做,处理问题时能靠嘴忽悠过去的,绝不会看一眼代码,所以这种人往往技术平庸。当然,这只是从技术角度说,如果单纯看收入的话,第一种人却不见得比第二种人收入高。
所以,首先要确定自己是否对程序开发感兴趣,如果没有兴趣,那就自然不必继续下去了,完全可以换一个职业选择。然后再选择一个自己最感兴趣的方向,如内核开发,驱动开发,应用开发等等,选定方向后由浅入深,循序渐进。
持之以恒
在互联网迅猛发展的今天,我们处在一个知识迅速爆发和更新更新时代,每一天都有各种各样的新事物层出不穷,当然也会伴随着各种老的旧的东西消失。计算机技术更是如此,从编程语言到开发工具,从设计模式到系统框架,每一天每个领域都会有新的技术出现,从也会有旧的技术被淘汰被丢弃被遗忘。
这就意味着,从成为程序员的那一天开始,就不可能停止学习的脚步,不得不面对各种技术的更新换代,因此,必须要持续学习,及时更新自己的知识结构,以适应各种业务需求的变化,否则,可能就不得不面对被淘汰的结果。
找到适合自己的学习方法
就像看电影一样,同一部电影,有的人觉得精彩,有的人觉得无趣。每个人的习惯、个性、思维、背景、基础不同,学习的方法也不同,没有什么放之皆准的方法,适合自己的才是最好的。
对于入门,找到一本自己能看得懂适合自己的书。很多别人推荐的堪称圣经的经典书籍,不妨尝试一下,看自己是否能够很容易的理解和消化。如果实在看不懂,果断换一本,切忌过于勉强。刚入门时,如果长时间处于一种云里雾里的感觉,往往会对自己信心造成打击,继而一点点消耗掉继续学下去的兴趣。很多圣经级的书籍往往适合在有一定基础之后再细细品读的,却并非入门首选。
入门之后就是逐步深入了。一般来说,在实际项目中进行学习是效果最好的。做项目过程中往往能够巩固已经学到的技能,同时发现自己的知识盲点,进而消灭盲点。
此外,多读代码,多写代码。
最后的最后, 珍惜你现在的每一根头发。
linux系列有两种发行版本
1).Red
Hat系,包括RHEL、fedora、centos等
2).Debian系,包括Debian、Ubuntu、Mint等
想要学习的话如果个人学习,推荐使用Ubuntu。如果是工作的话,则使用centos学习
1.学习Linux,首先就是安装Linux系统,通过镜像安装,这个过程可以先大概的了解一下linux的启动过程,对一些概念有个大致的印象
2.在安装好的系统之上,学习一些基本命令的操作,比如ls . 列出当前文件夹下的子文件和子目录,cd /root 切换到root的目录下,top命令查看一些进程的cpu,内存等资源的使用情况,ps命令同样也可以查看进程的内存等资源使用情况,pwd查看当前所在的路径等等,将这一些命令熟练的掌握
3.在掌握了linux的一些基本命令之后,那么可以进行一些服务的安装搭建练习,比如在Linux下安装搭建DNS服务器,搭建nginx服务器等等
4.进阶阶段的话,可以尝试进行内核参数的调优,比如tcp关闭连接之后保持高速通道,扩大linux系统的最大句柄打开数之类的内核参数的优化,sysctl -a可以查看目前已经加载的内核参数
5.学会了造句子,那么之后就可以写作文了。同理学会了linux的命令之后,那么可以学习一下shell的基本语句,awk sed的学习,用shell实现一些特定功能的脚本,比如可以通过cat /proc/cpuinfo加上awk命令来实现对cpu相关信息的统计等
如果你在Linux上是一个小白请看下面的回答~
想学好Linux,先问自己几个问题。
1. 你对计算机感兴趣吗?
2. 为什么学习Linux(他能给你带来什么价值,这个价值点是否可以支持你一直坚持下去)
3.你每天可以在工作生活之余或者大学课余抽出多少时间去学习(任何的技能都是需要时间去练习+时间才能掌握的)
如果这三个问题的答案都是肯定的,那么请看下文:
我也是一个从0技术基础的小白开始学习的
推荐你一个教程:【菜鸟教程】
一定要有耐心、有恒心的坚持学完,这样你对Linux才能有一定的理解
学习的中间需要您自己不断的实操,自己去敲命令,去安装,去验证
建议先检查网络通信是否正常,如果正常,请尝试切换yum源到aliyun的备用源。
然后执行下列命令清理yum缓存
sudo yum clean all
sudo yum repolist
即可,然后再次尝试下载wget
建议你用VMware安装因为其实这样不用重新分区硬盘而且不用改你现在系统里的任何东西.真的.你只需安装这个软件.
当然了这样不能能在双启动.但可以在windows里打开LINUX.我觉得这样好.而且用上VMware可以很容易地实现LINUX与WINDOWS的通信,就是很容易在LINUX里拷贝WINDOWS的东西.很适合初学者用.
建议用redhat.
光盘既不能整个ISO文件刻录也不能解压后刻.而应该在刻录软件里找一项"刻录光盘影像"的方式刻.这是将ISO里的文件影射到光盘里.这样刻录后那张就是你的系统碟了.下面是VMware的配置
VMware(5.5版以上)安装完毕后,利用它可以建立多个虚拟机,每新建一个虚拟机,就会要求你建立一个配置文件。这个配置文件实际上相当于新电脑的“硬件配置”,你可以在配置文件中决定虚拟机的硬盘如何配置,内存多大.准备运行哪种操作系统,是否有网络等。配置Linux虚拟机的步骤如下。
(1)选择File菜单下的“New Virtual Machine”出现新虚拟机向导后单击“下一步”,选择“Typical”典型安装。
(2)再单击“下一步”,在选择操作系统界面的“Guest Operation System”中选择 “Linux”,然后单击Version对应的下拉菜单选择具体的Linux版本, 此处我们选择“Red Hat LinuX”。
(3)单击“下一步”进入安装目录选择界面。该界面上面的文本框是系统的名字,保持默认值即可,下面的文本框需要选择虚拟机操作系统的安装位置。
(4)根据需要选择好后,单击“下一步”按钮,出现设置虚拟机内存大小的界面。Linux9.O对内存的要求是:文本模式至少需要64MB;图形化模式至少需要128MB,推荐使用192MB。此处我们选择192MB:
(5)单击“下一步”按钮进入网络连接方式选择界面。VMware有四种网络设置方式,一般来说,Bridged方式使虚拟机就像网络内一台独立的计算机一样,最为方便好用(四种连网方式的区别大家可参考VMware的有关资料)。在此、我们选择Brided方式。
(6)单击“下一步”按钮进入虚拟磁盘的设置界面。 这里有三种方式(Create a new virtual disk、Use an existing virtual disk、Use a physical disk)可供选择、建议初学者选择“Create a new Virtual disk”,其含义是新建一个虚拟磁盘,该虚拟磁盘只是主机—卜的一个独立文件。
(7)在“下一步”中设置磁盘大小。在此、最小4GB。最好是有10G左右(个人认为)因为要不装好后系统都点了3G了,相好安装点其它东西当然要更大的空间了.
(8)单击“下一步”进入文件存放路径选择界面。
在此界面可单击Browse按钮进行设置。此处我们使用默认值,单击“完成”按钮。
至此,完成一个虚拟机的配置。
好了后把光盘放进光驱里.启动你建好的虚拟机.
安装LINUX.
你搞了一个晚上,想必已经找了不少安装的教程了.这里我就不啰嗦了.
多少一句就是安装的分区要分配好.
/usr区尽量大点.其它的按网上说的都差不多的了.
装好后就安装VMware tools
安装vm tools: 1)以ROOT身份进入LINUX 2)按下 CTRL+ALT组合键,进入主操作系统,点击VMWARE状态栏安装提示,或者点击 虚拟菜单下的安装虚拟机工具子菜单。 3)确认安装VMWARE TOOLS。 这时我们并没有真正的安装上了VMWARE TOOLS软件包,如果您点击菜单:DEVICES,您就会发现光驱的菜单文字变为:ide1:0- C:\Program Files\VMware\VMware Workstation\Programs\linux.iso,这表示VMWARE将LINUX的ISO映象文件作为了虚拟机的光盘 4)鼠标点击LINUX界面,进入LINUX。 5)运行如下命令,注意大小写。 mount -t iso9660 /dev/cdrom /mnt 加载CDROM设备,这时如果进入 /mnt 目录下,你将会 发现多了一个文件:vmware-linux-tools.tar.gz。这就是WMWARE TOOLS的LINUX软件包,也就是我们刚才使用WINISO 打开LINUX.ISO文件所看到的。 cp /mnt/vmware-linux-tools.tar.gz /tmp 将该软件包拷贝到LINUX的 TMP目录下。 umount /dev/cdrom 卸载CDROM。 cd /tmp 进入TMP目录 tar zxf vmware-linux-tools.tar.gz 解压缩该软件包,默认解压到vmware-tools-distrib 目录下(与文件名同名)。 cd vmware-linux-tools 进入解压后的目录 这时要进入文本模式下运行下面的命令 ./install.pl 这时install提示你是否需要备份以前的配置文件,建议选择“y”。 等待INSTALL运行完成后,这时键入 STARTX 命令,启动LINUX图形界面,vm中不再提示没有安装虚拟机工具了.
完成后设置一个在VMware里设置一个在windows的件夹,作为LINUX与WINDOWS的共同文件.(那样你可以在LINUX里拷WINDOWS的文件)
方法如下:打开VMware -- CTRL+D---options----shared folders---Add
最好重启一下.好了之后在linux的/mnt文件夹里就会有一个hgfs的文件夹.打开,你会发现LINUX的乐趣!
兄弟,祝你好运!
是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。
语法
fdisk [必要参数][选择参数]
必要参数:
-l 列出素所有分区表
-u 与"-l"搭配使用,显示分区数目
选择参数:
-s分区编号 指定分区
-v 版本信息
菜单操作说明
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能
(英文全拼:make file system)命令用于在特定的分区上建立 linux 文件系统。
使用方式 :
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
参数 :
device : 预备检查的硬盘分区,例如:/dev/sda1
-V : 详细显示模式
-t : 给定档案系统的型式,Linux 的预设值为 ext2
-c : 在制做档案系统前,检查该partition 是否有坏轨
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
block : 给定 block 的大小
命令是经常会使用到的命令,它用于挂载Linux系统外的文件。
语法
mount [-hV]mount -a [-fFnrsvw] [-t vfstype]mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
参数说明:
-V:显示程序版本
-h:显示辅助讯息
-v:显示较讯息,通常和 -f 用来除错。
-a:将 /etc/fstab 中定义的所有档案系统挂上。
-F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
-f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
-n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
-s-r:等于 -o ro
-w:等于 -o rw
-L:将含有特定标签的硬盘分割挂上。
-U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
-t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
-o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
-o sync:在同步模式下执行。
-o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
-o auto、-o noauto:打开/关闭自动挂上模式。
-o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
-o dev、-o nodev-o exec、-o noexec允许执行档被执行。
-o suid、-o nosuid:
允许执行档在 root 权限下执行。
-o user、-o nouser:使用者可以执行 mount/umount 的动作。
-o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
-o ro:用唯读模式挂上。
-o rw:用可读写模式挂上。
-o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
(base) zfy@zfy-PC:~$ sudo fdisk -l
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
#块设备名称为/dev/sda,此设备的大小为80 GB,85899345920 bytes是转换成字节后的大小,共167772160 个扇区
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3b1ffeba
Device Boot Start End Sectors Size Id Type
#分区序列 | 引导 | 开始 | 终止 | Sectors | 容量 | 分区类型ID | 分区类型
/dev/sda1 * 2048 3147775 3145728 1.5G 83 Linux
/dev/sda2 3147776 138412031 135264256 64.5G 5 Extended
/dev/sda3 138412032 161480703 23068672 11G 83 Linux
/dev/sda4 161480704 167770111 6289408 3G 82 Linux swap / Solaris
/dev/sda5 3149824 34605055 31455232 15G 83 Linux
/dev/sda6 34607104 66062335 31455232 15G 83 Linux
/dev/sda7 66064384 138412031 72347648 34.5G 83 Linux
Partition table entries are not in disk order.
a. 在虚拟机中添加硬盘,添加后使用fdisk -l命令查看,磁盘变成两个,在sda中还没有分区
root@zfy-PC:/home/zfy# fdisk -l
Disk /dev/sda: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 80 GiB, 85899345920 bytes, 167772160 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3b1ffeba
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 3147775 3145728 1.5G 83 Linux
/dev/sdb2 3147776 138412031 135264256 64.5G 5 Extended
/dev/sdb3 138412032 161480703 23068672 11G 83 Linux
/dev/sdb4 161480704 167770111 6289408 3G 82 Linux swap / Solaris
/dev/sdb5 3149824 34605055 31455232 15G 83 Linux
/dev/sdb6 34607104 66062335 31455232 15G 83 Linux
/dev/sdb7 66064384 138412031 72347648 34.5G 83 Linux
Partition table entries are not in disk order.
b.下面对sda进行分区
root@zfy-PC:/home/zfy# fdisk /dev/sda
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xb985e226.
Command (m for help): m
#输入m查看帮助
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
Command (m for help): n
#输入n创建一个分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
#选择主分区
Partition number (1-4, default 1): 1
#选择编号为1
First sector (2048-4194303, default 2048): 2500000
#起始sector 设为2500000
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2500000-4194303, default 4194303): 4194303
#终止sector 设为4194303
Created a new partition 1 of type 'Linux' and of size 827.3 MiB.
#分区完成,分区大小为827.3 MiB
Command (m for help): n
#继续创建一个分区
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e
#新增扩展分区
Partition number (2-4, default 2): 2
#选择编号为2
First sector (2048-4194303, default 2048): 2048
#起始sector为2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2499999, default 2499999):
#终止sector为2499999
Created a new partition 2 of type 'Extended' and of size 1.2 GiB.
#新增完成,大小为1.2GiB
Command (m for help): w
#保存
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
c.查看分区后磁盘信息,此时sda磁盘已经有两个分区
Disk /dev/sda: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb985e226
Device Boot Start End Sectors Size Id Type
/dev/sda1 2500000 4194303 1694304 827.3M 83 Linux
/dev/sda2 2048 2499999 2497952 1.2G 5 Extended
Partition table entries are not in disk order.
Disk /dev/sdb: 80 GiB, 85899345920 bytes, 167772160 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3b1ffeba
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 3147775 3145728 1.5G 83 Linux
/dev/sdb2 3147776 138412031 135264256 64.5G 5 Extended
/dev/sdb3 138412032 161480703 23068672 11G 83 Linux
/dev/sdb4 161480704 167770111 6289408 3G 82 Linux swap / Solaris
/dev/sdb5 3149824 34605055 31455232 15G 83 Linux
/dev/sdb6 34607104 66062335 31455232 15G 83 Linux
/dev/sdb7 66064384 138412031 72347648 34.5G 83 Linux
Partition table entries are not in disk order.
d.用ext3的文件系统对分区进行格式化
root@zfy-PC:/home/zfy# mkfs -t ext3 /dev/sda1
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 211788 4k blocks and 52976 inodes
Filesystem UUID: db384338-4af1-4eec-a62d-f2b2f8e0ec96
Superblock backups stored on blocks:
32768, 98304, 163840
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
e.新建一个分区目录 /data,并挂载
root@zfy-PC:/home/zfy# mkdir data
root@zfy-PC:/home/zfy# mount /dev/sda1 /data
root@zfy-PC:/home/zfy# df -TH /data/#查看是否挂载成功
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda1 ext3 838M 881k 793M 1% /data
f. 用vim打开 etc/fstab并假如 /dev/sda1/data ext3 defaults 0 0,这样重启后便不需要再挂载
参考文献:
【1】 Linux mount命令 | 菜鸟教程 (runoob.com)
【2】 linux添加新磁盘和创建分区 - IT(小菜鸡) - 博客园 (cnblogs.com)
新手自学linux,需要制定详细的学习路线和学习内容,可以按照以下思路学习:
第一阶段:linux基础入门
Linux基础入门主要包括: Linux硬件基础、Linux发展历史、Linux系统安装、xshell连接、xshell优化、SSH远程连接故障问题排查、L inux基础优化、Linux目录结构知识、Linux文件属性、Linux通配符、正则表达式、Linux系统权限等
第二阶段:linux系统管理进阶
linux系统管理进阶包括:Linux定时任务、Linux用户管理、Linux磁盘与文件系统、Linux三剑客之sed命令等。
第三阶段:Linux Shell基础
Linux Shell基础包括:Shell编程基础、Linux三剑客之awk命令等。
第四阶段:Linux网络基础
第五阶段:Linux网络服务
Linux网络服务包括:集群实战架构开始及环境准备、rsync数据同步服务、Linux全网备份项目、nfs网络存储服务精讲、inotify/sersync实时数据同步/nfs存储实时备份项目等。
第六阶段:Linux重要网络服务
Linux重要网络服务包括:http协议/www服务基础、nginx web介绍及基础实践、nginx web、lnmp环境部署/数据库异机迁移/共享数据异机迁移到NFS系统、nginx负载均衡、keepalived高可用等。
第七阶段:Ansible自动化运维与Zabbix监控
Ansible自动化运维与Zabbix监控包括: SSH服务秘钥认证、ansible批量自动化管理集群、 zabbix监控等。
第九阶段:大规模集群高可用服务(Lvs、Keepalived)
第十阶段:Java Tomcat服务及防火墙Iptables
第十一阶段:MySQL DBA高级应用实践
MySQL DBA高级应用实践包括:MySQL数据库入门基础命令、MySQL数据库进阶备份恢复、MySQL数据库深入事务引擎、MySQL数据库优化SQL语句优化、MySQL数据库集群主从复制/读写分离、MySQL数据库高可用/mha/keepalved等。
第十二阶段:高性能数据库Redis和Memcached课程
第十三阶段:Linux大规模集群架构构建(200台)
第十四阶段:Linux Shell编程企业案例实战
第十五阶段:企业级代码发布上线方案(SVN和Git)
第十六阶段企业级Kvm虚拟化与OpenStack云计算
第十七阶段公有云阿里云8大组件构建集群实战
第十八阶段:Docker技术企业应用实践
第十九阶段:Python自动化入门及进阶
第二十阶段:职业规划与高薪就业指导
Linux学习周期因人而异,如果您有比较好的学习规划,每天坚持学习4至5个小时,坚持3至6个月,应该可以熟练掌握Linux基本操作,但是,如果只有计划,没有实施,那就另当别论了,如果想更深入、更节省时间的学习Linux操作系统,建议报班学习,效果会更加明显!
继 Git 后贵系的另一个暑培项目,讲授 Linux 的基本用法,恰好这学期「操作系统」课程实验需要用到 Linux,而且实验室的服务器也需要学习相关用法,故学之。
本文部分内容参考了清华 ZAH 同学的教程,部分参考了 刘遄 老师的《 Linux 就该这么学 》, 菜鸟教程-Linux 。
Linux,全称 GNU/Linux,是一套免费使用和自由传播的类 Unix 操作系统。相比于其他系统,Linux 更加稳定且有效率、更加安全、相对不耗资源……以至于几乎所有 长期稳定运行的网站服务器 上、在 处理大数据的集群系统 中,以及需要 协同工作的服务器环境 都采用 Linux 系统。
Linux 严格来说是单指操作系统的 内核 ,因操作系统中包含了许多用户图形接口和其他实用工具。如今 Linux 常用来指「基于 Linux 的完整操作系统」,内核则改以「Linux 内核」称之。
一些组织或厂商将 Linux 内核与各种软件和文档 包装 起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了 Linux 的发行版本。
在学习 Linux 的过程中,有几个易混淆的概念:
命令行界面(Command-Line Interface,CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(Character User Interface,CUI)。
一般来说,在 服务器 中较多采用的是 CLI 界面,或许有以下几点原因:
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 等系统的桥梁,如同「 壳 」一般。它的本质是一个 命令解释器 ,将用户输入的命令(符合 Shell 语法)处理成对应 操作系统的控制命令 ,处理完毕后再将结果反馈给用户。
不同操作系统下面的 Shell 种类众多,常见的有:
Ken Thompson 的 sh 是第一种 Unix Shell,本教程关注的是 Bash,也就是 Bourne Again Shell,Bash 也是大多数 Linux 系统默认的 Shell。
终端 (Terminal),是一种用来让用户输入数据至计算机,以及显示其计算结果的机器。早期的终端通常就是一台 电子打字机 (Teletypewriter, TTY),后来随着计算机的发展,打字机被键盘和显示器取代,而 GUI 界面也成了主流。
于是,这时候我们就需要一个程序来模拟传统终端的行为,即 终端模拟器 (Terminal Emulator),当用户打开终端模拟器时,实际上是进入一个 会话进程 (Session)。终端模拟器有很多,这里举几个经典的例子:
在 Linux 系统中打开终端时,会看到一个提示符,通常类似 hewei@hewei-VirtualBox ~$ 。在提示符下,命令会被 Shell 环境 解析并反馈 到终端中。
提示符是 Shell 最主要的 文本接口 。它告诉你,你的主机名是 hewei-VirtualBox ,你现在的身份是 hewei 并且你当前的 工作目录 (Current working directory)是 ~ (默认在 /home/hewei/ 用户目录)。
$ 符号表示您现在的身份不是 root ,输入如下命令可以暂时切换到 root 权限:
输入密码后,可以看到提示符变成了 root@hewei-VirtualBox:/home/hewei# ,其中 # 符号就是超级用户权限的标志。再输入 exit 即可退回普通用户身份。
在 Git学习笔记 #1 基础知识介绍 中,已经简单介绍了命令行界面的一些使用技巧,这些命令在 Linux 系统的 Bash 中同样使用。这里罗列出 Linux 常用快捷键:
常见的执行 Linux 命令的格式是这样的: 命令名称 [命令参数] [命令对象] 。其中,命令参数用于对命令进行调整,使之更好地贴近需求,参数分为 长格式 和 短格式 ,如: man --help , man -h 。短格式之间可以合并,合并后仅保留一个减号即可。
在 Linux 相关的手册中,我们会约定俗成地将可选择的、非必需的参数使用 中括号 引起来,而命令所要求的、必须有的参数或对象值,则不带中括号。
此外,要注意 Linux 系统中的命令、参数、对象都是 严格区分大小写 的。
Shell 除了是一个 交互式 (Interactive)的命令解释器,它还是一种 程序设计语言 (Shell Script)。它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
用 Shell 编写的 脚本文件 即 .sh 文件,它能在 Shell 环境下运行,fork 出一个 子进程 ,调用系统内核来执行 批处理 (Batch)的系统控制。在文件的第一行,通常是 #!/bin/bash ,这句话约定了这个脚本需要哪种 Shell 环境来执行。
通过如下命令就可以执行一个 Shell 脚本:
下面罗列了部分常用指令与参数的介绍,更多功能请在帮助手册中检索。