@artman328
2019-01-28T07:51:39.000000Z
字数 6117
阅读 1366
linux
操作系统,是一套计算机程序的整合,实现装到计算机里,帮我们管理各种硬件设备,如:中央处理器(CPU),内存(Memory),显卡(Display Card),网卡(Network Interface Card, NIC),硬盘(Hard Drive),键盘,鼠标等;它还帮我们管理运行中的程序(进程,Process),帮我们管理网络的连接,帮我们管理用户信息和用户使用系统的权限,帮我们管理系统的安全等。
人是和程序界面打交道的,我们让程序帮我们播放音乐、电影,帮我们保存一篇文章,让我们浏览网站等,这些事情都由相应的程序去委托操作系统做了最基础的工作。
像也不像。它们都是操作系统,都要完成类似的任务。但它们又有很大的不同,它更像 UNIX 操作系统。
UNIX 是人类最早的功能较为完善的操作系统,最早由Ken Thompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发,后来经过不断完善,成为小型机到巨型计算机的操作系统。这类计算机和当今的个人计算机不同,它们连接着多个“哑”终端(不带计算能力的键盘+显示器+连接盒),人们可同时在不同的终端上使用 UNIX 操作系统。因此,UNIX 是个分时多任务的操作系统。多任务,指操作系统能让计算机同时做多个事情(运行多个程序),而CPU(中央处理器,计算机的计算中枢)是分时间片段轮流做每件事情(运行每个程序)的。
Linux 是一个由个人兴趣项目到由集体维护的自由软件项目的伟大作品。
被称为“Linux 之父”的林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds),1969年12月28日出生于芬兰赫尔辛基市,1991年就读于赫尔辛基大学。
大学期间,林纳斯经常要用他的终端仿真器(Terminal Emulator)去访问大学主机(UNIX系统)上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了Linux第一个内核的雏形。当时,他年仅21岁。
后来,在自由软件之父理查德·斯托曼(Richard Stallman)自由与共享精神的感召下,林纳斯很快以Linux的名字(来自于他的名字 Linus + UNIX)把这款类Unix(Unix-like,从功能、界面到操作使用上,都与 UNIX 高度类似,但又是完全不同的实现)的操作系统加入到了自由软件基金(FSF)的GNU计划中,并通过GPL的通用性授权,允许用户销售、拷贝并且改动程序,但你必须将同样的自由传递下去,而且必须免费公开你修改后的代码。这说明,Linux并不是被刻意创造的,它完全是日积月累的结果,是经验、创意和一小段一小段代码的集合体。
现在,在 Linus 的主导下,世界上有成千上万的高手在为 Linux 内核的完善和改进做贡献。
Linux 是不要钱的!
几乎无所不能!
严格说来,Linux 主要是指操作系统内核,Linux 操作系统是 Linux 内核加上众多的系统软件(提供系统服务)、工具软件(用于管理系统)等所构成。对它:
安装各种用户软件(办公、管理、教育、娱乐等)后即可做各种事情;
安装相应的服务器软件后作为服务器运行。比如安装了 WEB 服务器软件的 Linux 计算机,就成了 WEB 服务器,我们用浏览器在互联网上浏览的内容,就来自 WEB 服务器。
Linux 操作系统还可嵌入到工业设备、家用电器、游戏设备等,成为智能设备。
另外,安卓手机的操作系统,底层就是 Linux。
和其它一些服务器操作系统相比,Linux 即健壮又免费,它 已经成为互联网上服务器操作系统的主力平台,也是企业内部服务器的主要平台。
(1)服务器运行维护人员
(2)软件开发人员
(3)软件部署与维护人员
(4)有兴趣的人
安装 Windows 工具
增强型命令窗口
http://cmder.net/
OpenSSH 客户端
https://www.mls-software.com/opensshd.html
VirtualBox 虚拟机平台
http://www.virtualbox.org
Linux = Linux 内核 + 软件(系统软件,工具软件等)
有多个组织在打包发行 Linux 操作系统。操作系统虽然免费,但发行 Linux 操作系统的组织可收取技术支持费用。
各种发行版本又有一些衍生版本。
Redhat 是一家著名的 Linux 发行商。针对企业发行的版本Red Hat Enterprise Linux(RHEL)是著名的 Linux 发行版之一。
CentOS是在RHEL发布的基础上将RHEL的构成克隆再现的一个Linux发行版本(去掉了商标,不需要注册购买有偿技术支持)。
本教程选用 CentOS 7.6 作为讲解对象。
系统下载地址:https://www.centos.org
Linux 操作系统可根据需要进行定制:
本教程不安装桌面系统,采用最小化安,以后,可根据需要逐步安装和配置软件。
CentOS Linux 7 (Core)
Kernel 3.10-862.el7.x86_64 on an x86_64
yntc-server login: _
以上界面是启动后的界面。如果你不需要做什么,就这样开着,绝大多数的 Linux 服务器启动后就停留在这样的状态下。请不要被表面上的“风平浪静”所迷惑!事实上,操作系统里有许多服务程序(决定于你以前安装的服务的多少)在运行着,时刻等待着为外界服务!
为了管理服务器,Linux 操作系统有一个超级用户叫 root 。现在,从键盘敲入 root 并回车,然后输入安装时确定的密码(注意:屏幕上不会有任何显示),然后回车。正确登录后,将进入一下界面:
...
Last Login: ...
[root@yntc-server ~] _
默认情况下,你有 6 个独立的登录界面,叫虚拟控制台,在系统里叫 tty1 ~ tty6
。你可用 ALT + F1
到 ALT + F6
进行切换。
为了远程管理系统,我们需要远程登录系统。
在安装了 OpenSSH for Windows 的 Windows 机器的命令窗口或其他 Linux 机器的命令行,用:
ssh 用户名@IP地址或域名 [-p 端口]
进行远程登录。
登录后,界面和操作都和本地登录完全一致。
电脑是用来存储和处理信息的。我的电脑里有什么,存在哪里?在 Windows 中,我们用“资源管理器”进行查看。在 Linux 的 shell 里,我们怎么看?
计算机组织和管理信息的方法、手段及形式,叫文件系统。虽然计算机有不同的文件系统,但它们的组织形式在外观上几乎都是一致的:
把信息存储为文件,把文件放到文件夹(又叫目录,以后二者可混用)里。文件夹可以再装文件夹,形成树形结构。
(Windwos 文件系统的树形结构,一个磁盘(分区)一棵树)
(Linux 文件系统的树形结构,一棵树,每个树枝都可以是一个单独的硬盘或分区)
在 Windows 里,一个盘(分区)有自己一棵树,比如:“D盘的Java文件夹里的beginner文件夹里的那个 Hello.java 文件(D:\Java\beginner\Hello.java)”;“C盘里的Windows文件夹里的 System32 文件夹里的 notepad.exe 文件(C:\Windows\System32\notepad.exe)”等。
在 Linux 里,不论你有几个硬盘或分区,却只有一棵树,树根叫做“/(注意方向)” 。其余树枝存储什么有推荐的标准FHS,如下表所示。
目录 | 内容 |
---|---|
/bin | 实用程序,由系统、管理员和所有用户实用 |
/boot | 启动相关文件与内核文件vmlinuz。 |
/dev | 设备文件,Linux 中用文件代替实际的硬件设备,对文件的操作由系统转换为对实际设备的操作。 |
/etc | 用于存储系统及用户软件的配置文件和数据 |
/home | 用户的家目录就在此目录下,每个用户对自己的家目录有完整的操作权限 |
/initrd | (对某些发行版)存储启动信息 |
/lib | 系统程序和用户程序的程序库文件 |
/lib64 | 同上,64位版本 |
/lost+found | 存储意外损坏的文件 |
/misc | 存储杂类文件 |
/media | 光盘、U盘等移动存储的挂载点 |
/mnt | 通用挂载点,临时挂载其它文件系统 |
/net | 远程文件系统的挂载点 |
/opt | 第三方软件 |
/proc | 虚拟文件系统,包含内存中系统资源的状态或数据 |
/root | root 的家目录 |
/sbin | 系统及系统管理用户使用的程序 |
/tmp | 临时目录,保存临时文件,重启后删除 |
/usr | 程序、库和文档,大多数软件安装到此目录 |
/var | 存储内容可变的文件,任务队列等 |
路径,指从根开始到达某个目录或文件所经过的目录的途径,各目录之间(目录与文件之间)用 / 进行分隔。这是绝对路径。如果路径不从根开始,而是从某个目录开始,就叫相对于某个目录的相对路径。
如:/usr/share/man/man1/perl.1.gz
是到达文件 perl.1.gz
文件的绝对路径;
而:man/man1/perl.1.gz
是相对于/usr/share/
到达文件 perl.1.gz
文件的绝对路径;
如果路径的最后没有斜线 / ,最后部分可以是文件或目录,相反则是指目录。
如:/etc/whatever
中的 whatever
可指文件或目录;
而:/etc/whatever/
中的 whatever
就一定是指目录。
根据其内容,Linux 的文件类型分为两大类。一类是文本文件,其内容由可见字符和部分不可见字符(回车、换行等)的二进制编码字节(8位二进制数)构成,可用编辑软件打开阅读。另一类是非文本文件,由所有可能的8位二进制字节构成,其内容可能是计算机指令和数据的混合体,也可能是某种编码的数据(jpg图像,mp3歌曲,pdf 文档等)。
shell, 英文的“壳”的意思。它是一个程序,提供一个纯字符界面,负责人与操作系统的交流。
交流采用向 shell 输入命令,shell 运行命令后把结果输出的方法进行。
[root@yntc-server ~] _
以上就是 shell 的典型界面,由一个提示符[root@yntc-server ~]
后面加上一个闪烁的光标所构成,命令就从光标闪烁处开始输入。
shell 有多种,我们主要以叫做 bash 的 shell 为例。
shell 的命令有两类,一类是 shell 本身的功能,叫内部命令;一类是程序或命令脚本(多条命令按逻辑组织起来的可执行文件)。
shell 命令的格式是:
命令 [-单字符选项/--单词选项 [选项值]]... [参数]...
中括号表示可选(可有可无),省略号表示可重复多项。
命令结束后要按回车。
如果命令过长,可用 "\回车" 在下一行继续输入命令。
注意:各部分之间至少有一个空格。
输入命令时,可用 TAB 键帮助输入命令和路径。
可用上下键查找之前输入的命令。
功能 | 命令 |
---|---|
获取硬件信息 | lshw |
PCI/USB接口信息 | lspci /lsusb 注意:分别需要安装 pciutils 和 usbutils 软件包 |
显示 cpu 信息 | lscpu 或 cat /proc/couinfo |
检查硬件虚拟化支持 | egrep --color "vmx|svm" /proc/cpuinfo |
显示物理内存大小 | free -m 或 cat /proc/meminfo | grep MemTotal |
功能 | 命令 |
---|---|
查看主机名 | hostname / hostnamectl |
查看系统发行版本 | cat /etc/system-release |
查看操作系统信息 | uname -a |
显示机器架构 | arch |
显示系统加载的内核模块 | lsmod |
查看系统启动信息 | dmesg |
功能 | 命令 |
---|---|
显示系统中的块设备 (块设备:以存储块为单位随机存取数据的设备, 如硬盘、光盘等;字符设备:以字符为单位顺序存取数据的设备, 如:键盘、串口等) |
lsblk |
显示磁盘分区 | fdisk -l /gdisk -l / parted -l |
显示磁盘使用情况 | df -h |
功能 | 命令 |
---|---|
查看日期时间 | timedatectl / date |
查看语言支持与键盘设置 | localectl |
功能 | 命令 |
---|---|
查看启用的软件源(仓库) | yum repolist |
查看已安装的使用软件包 | yum list installed / rpm -qa |
检查是否有可用的软件包更新 | yum check-update / yum list updates 注意:新系统一定要用 yum update 更新系统 |
功能 | 命令 |
---|---|
显示网络接口参数 | ip addr show / ifconfig |
显示路由信息 | ip route show / route |
显示网络状态信息 | ss / netstat |
显示防火墙规则 | firewall-cmd --list-all / iptables -nvL |
序号 | 命令 | 常用选项 | 功能 |
---|---|---|---|
1 | help | 查看 shell 的内部命令 (查看大多数外部命令,用 ls /bin 和 ls /sbin ) |
|
2 | help 内部命令 | 查看内部命令的说明 (查看外部命令帮助,用 命令 --help 或 man 命令 ) |
|
3 | ls [选项]... [目录或文件]... | -l: 长格式,一条记录一行; -a: 显示所有文件 |
列出目录和文件 |
4 | cd [目录] | 转到指定的目录,未指定,则默认转到用户的家目录 | |
5 | cat [选项]... [文本文件]... | 把文件内容输出到屏幕上 | |
6 | head [选项]... [文本文件]... | 把文件的前10行(可用选项指定)输出到屏幕上 | |
7 | tail [选项]... [文本文件]... | 把文件的末尾10行(可用选项指定)输出到屏幕上 | |
8 | more [选项] 文本文件 | 先满屏显示文件内容,然后可逐行向下滚动查看 | |
9 | less [选项] 文本文件 | 与 more 类似,但也可逐行向上滚动查看 | |
10 | echo 字符串 | -e 解释字符串中的特殊字符含义; -E 不解释字符串中的特殊字符含义; -n 不在字符串末尾添加换行符 |
在屏幕上输出指定字符串。 特殊字符: \n 换行符 \r 回车 \ 斜线“\” ... |
序号 | 命令 | 常用选项 | 功能 |
---|---|---|---|
1 | mkdir [选项]... [目录]... | -p 允许创建级联目录 | 创建指定的目录 |
2 | mv 原目录名 新目录名 | 将目录改名 | |
3 | rmdir 目录 | 删除指定目录,目录必须为空才能成功 | |
4 | rm -R 目录 | 级联删除指定目录下的所有内容后再删除指定目录 | |
5 | ln -s 目录名 新目录名 |
序号 | 命令 | 常用选项 | 功能 |
---|---|---|---|
1 | touch [选项]... [文件]... | 把文件的访问时间和最后修改时间设置到当前时间;如果文件不存在,则创建新文件 | |
2 | cp [选项] 源文件 目的文件(路径) | 把源文件复制到目的文件或路径下的同名文件 | |
3 | mv [选项]... 文件1 文件2 | 把文件从文件1挪动到文件2(如果在相同的位置则相当于改名) | |
4 | rm [选项] 文件... | -f 强制删除 | 删除指定文件 |