Linux快速入门01-基础概念
4年多前,刚到上海时报过一个关于Oracle的培训班,在那里接触到了Linux,不过一直都没真正去试着使用它。现在经过慢慢的成长,越来越觉得,Linux是每一个服务端工程师必须掌握的系统,即使是现在最为火热的.NET开源潮流,也离不开对Linux系统的学习。本系列学习将以鸟哥真神的《鸟哥私房菜》一书作为基础,最新的Ubuntu16系统(相比CentOS,其界面更加友好,使用起来比较嗨森,快乐是坚持学习的源泉哈)作为环境来进行,让我们和Linux企鹅一起飞向星辰大海吧。
Linux的内核是有Linus Torvalds在1991年在芬兰的赫尔辛基大学开发出来的,使用GLP(GNU General Public License)许可证,其代表自由软件的版权,这儿的自由(Free software)表示具有自由度的软件,即用户可以自由执行、复制、再发型、学习、修改和强化自由软件,而不是强调免费(Freeware),自由软件往往是通过售后服务来获得商业价值的。
对于Open Source来说,常见的授权包括:GPL,BSD(Berkeley Software Distribution),Apache License 2.0
Linux Distributions非常多,主要分为两大系统:一种是使用RPM方式安装软件的系统,如RedHat,Fedora,SuSE等;另一种就是使用Debian的dpkg方式安装软件的系统,如Debian、Ubuntu等,这儿为了学习首推Ubuntu,相关软件下载请见如下地址。
虚拟机VmWare:使用开发版的Vmware Workstation 12 Player,https://www.vmware.com/cn/products/player/playerpro-evaluation.html
Ubuntu最新版:http://www.ubuntu.com/download
Linux主要使用场景:WWW、Mail Server、FileServer等各类网络服务器;关键任务的应用,如金融数据库库、大型企业网管环境;高性能运算等。
virtualbox:https://www.virtualbox.org/wiki/Downloads
centos:https://www.centos.org/download/
Debian,优于CentOS,关键就是简单易用,而且系统稳定,但安装包和国内支持很一般
https://www.debian.org/
官网只提供最新下载,比较蛋疼,推荐:http://cdimage.debian.org/cdimage/archive/
最后选择boot2docker,Tiny版本的linux内核,非常的棒。
这部分内容比较简单,主要涉及资源规划和磁盘分区等内容。由于不同设备在linux的名称各不相同,接下来通过一个简单的图表了解各类常见设备在Linux中的名称。
设备 |
名称 |
---|---|
IDE硬盘 |
/dev/hd[a-d] |
SCSI/SATA/USB硬盘 |
/dev/sd[a-p] |
DVD ROM |
/dev/cdrom |
在介绍磁盘分区前,先来回顾下磁盘相关知识,磁盘主要由盘片、机械手臂、磁头和主轴马达组成,数据写入到盘片中。盘片上细分出扇区Sector和柱面Cylinder,其中每个扇区为512bytes(随着固盘的增多,相关技术相对过时)。对于整块磁盘来说,第一扇区最重要,其中包含:主引导分区MBR(Master Boot Record,MBR),可以安装引导加载程序,有446bytes;分区表partion table,记录整个硬盘分区的状况,有64bytes。系统的开机主要涉及两个东西,CMOS和BIOS,前者记录各项硬件参数且嵌入在主板上,后者是主板上的固件,包含开机时主动执行的第一个程序。改程序会根据用户设置去取得能够开机的硬盘,并读取该硬盘第一扇区的MBR位置。该MBR中放置了指定操作系统最基本的引导加载程序,该程序的作用就是加载OS的内核文件。由于现在大家普遍使用云服务,至少是IAAS级别的,因此该部分内容就到此为止。比如我个人就是使用的阿里云,系统选用小规模适用的ubuntu14.0版本,具体的分区等内容已经由服务提供商处理好,只要知道通常会建立/,/boot,/home,/swap等4个分区即可,其中/boot需要强制为主分区并占据硬盘前面的位置,/swap分区为物理内存的1.5-2倍左右。
Linux常见的文件类型包括:ext2/ext3,后者支持日志记录;physical volume(LVM),可以弹性调整文件系统大小;software RAID,可以仿真磁盘阵列;vfat,同时支持windows和linux。
最后附上一些最为基本的常见命令,请见下表。
命令 |
解释 |
---|---|
echo $LANG,$PATH |
输出常见环境变量 |
ls -a |
列出文件夹中内容,-a现实隐藏文件 |
date |
显示当前时间 |
[tab] |
命令、文件名补齐 |
[Ctrl+C],[Ctrl+D] |
终止命令,终止输入 |
man page,info page |
在线帮助 |
exit |
注销账号 |
sync |
数据同步到磁盘 |
shutdown,reboot,halt,poweroff |
关机,重启 |
此外,当忘记root密码时,可以在系统重启读秒时按任意键进入控制菜单,输入e进入grub编辑模式,然后再kernel那行末尾添加:空格 single即可,最后输入passwd即可并输入新密码即可。
对于ubuntu来说,通过sudo passwd可以设置root密码,可以通过如下命令默认进入命令行界面:sudo gedit /etc/default/grub, GRUB_CMDLINE_LINUX="text", sudo update-grub
对于centOS来说,通过vi /etc/inittab,将默认runlevel从5设置为3即可,如果需要图形界面startx即可(ubuntu也是)。
- 常用工具
当linux开始ssh服务时(默认端口22),可以通过SSH Secure shell工具连接linux系统,非常的方便,尤其是部署文件时。SSHSecureShellClient3.2.9.rar
更简易的链接工具:putty,PuTTY_0.67.0.0.rar
docker2boot,其使用的是debian4,其端口映射一般为:2022->22
直接通过git获取代码,编译发布即可
常见端口:ftp 21, ssh 22, telnet 23
linux不同版本安装软件:http://www.cnblogs.com/jyginger/archive/2010/07/25/1784599.html
查看网络状态:ifconfig, netstat
http://www.cnblogs.com/allenblogs/archive/2010/07/28/1786950.html
- 补充命令
输入"uname -a ",可显示电脑以及操作系统的相关信息
输入"cat /proc/version",说明正在运行的内核版本
输入"cat /etc/issue", 显示的是发行版本信息,lsb_release -a
grep 同时满足多个关键字和满足任意关键字
① grep -E "word1|word2|word3" file.txt
满足任意条件(word1、word2和word3之一)将匹配。
② grep word1 file.txt | grep word2 |grep word3
必须同时满足三个条件(word1、word2和word3)才匹配。
参考资料:
- 鸟哥. 鸟哥的Linux私房菜基础学习篇(第三版)[M]. 北京:人民邮电出版社, 2010.
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP如何搭建百度Ueditor富文本编辑器
- 浅谈keras.callbacks设置模型保存策略
- pandas之分组groupby()的使用整理与总结
- PHP fclose函数用法总结
- Python collections.defaultdict模块用法详解
- PHP crc32()函数讲解
- python读取图像矩阵文件并转换为向量实例
- PHP echo()函数讲解
- Python3开发环境搭建详细教程
- php使用QueryList轻松采集js动态渲染页面方法
- PHP convert_uudecode()函数讲解
- php实现在线考试系统【附源码】
- 实例介绍PHP中zip_open()函数用法
- php实现数字补零的方法总结
- PHP配置ZendOpcache插件加速