Linux Essentials

4.4 计算机网络

admin 提交于 周二, 11/13/2018 - 09:50

1. 协议

1.1 OSI网络七层协议模型

下面是一个经典的OSI网络七层协议模型,演示了数据在计算机简传输的一个抽象过程。七层协议由下往上依次为:物理层、数据连接层、网络层、传输层、会话层、表示层、应用层。对于大部分的软件开发人员,主要接触的是应用层。TELNET、HTTP、FTP、NFS、SMTP这些都是应用层的协议。

OSI网络七层协议模型

1.2 TCP和UDP

应用层的协议分TCP和UDP两大类,需要准确传输的协议用TCP方式,例如Web服务、Email、FTP,TCP协议有较多额外的消耗用于保证数据完整和正确。对于视频、音频等流媒体应用,则可以使用UDP的方式,减少消耗以达到最高的网络传输率。

4.2 计算机硬件

admin 提交于 周一, 09/10/2018 - 10:24

1. 计算机组成

计算机主要由电源(Power)、主板(motherboard)、中央处理器(CPU)、内存(RAM)、硬盘(hard disk)、显示器(monitor)、键盘(keyboard)、鼠标(mouse)组成。

  • 电源把交流电(AC)转成直流电(DC),并附带散热风扇。
  • 主板把各硬件连接在一起,协调它们的通信。主板带有一个叫BOIS的程序,可以控制各硬件的配置,配置的参数保存在CMOS中。
  • CPU负责数学和逻辑运算。
  • RAM是一种断电后会丢失内容的存储器,比硬盘的读写速度要快得多。

 

硬盘可以分为机械硬盘和SSD硬盘。机械硬盘的可靠性要高一些,其损坏一般是逐渐发生的。SSD硬盘的速度要比机械硬盘快大概10倍,不过其损坏可以是突然发生的,一旦损坏会导致整个硬盘数据丢失。在独立的服务器中有时会使用阵列硬盘来提高读写速度和可靠性。在Linux系统中,硬盘的设备文件放在/dev/sd*,例如/dev/sda。硬盘格式话之后会在不同分区后加数字,例如:/dev/sda1, /dev/sda5, /dev/sda6等。

由于硬件发展快,内容很快过时,这里就不展开讨论了。

4.1 选择操作系统

admin 提交于 周二, 07/24/2018 - 10:38

1. Windows、Mac、Linux的区别

Windows拥有绝大部分的市场份额,可以认为个人计算机的普及是比尔盖茨创立的微软从DOS到Windows发布的一系列操作系统的功劳。对于一般用户来说,Windows是最合适的选择。Windows有更丰富的软件。绝大部分的PC游戏都是针对Windows平台开发的。过去国内的网银也只支持Windows。

Mac的优势在于设计和硬件能力。Mac的操作系统基于BSD,属于Unix家族,因而它和Linux更为接近。Mac的命令行和Linux有一样的体验。大部分Linux命令行软件都可以在Mac上安装运行,基于这一点,很多服务器软件开发人员都喜欢使用Mac,这令到开发效率更高。不过对于一般人来说,Mac的很多操作和Windows不同,要习惯新的操作可能需要一个月的时间。不少人买一台Mac回来还会选择多装一个Windows系统。一些用户很多的产品会有一个功能简洁的Mac版,例如QQ、微信等。

Linux的桌面软件性能、数量、质量要远逊于Windows和Mac。不过Linux在服务器方面的软件具有绝对的优势,因而大部分的服务器是采用Linux服务器的。它更适合作为极客的玩具。

3.3 编写脚本

admin 提交于 周三, 06/27/2018 - 16:59

1. 一个例子

#!/bin/bash

# 第一行表示解释本脚本的命令路径,如果文件带有可执行属性,那么文件可以直接运行。

# 第一行的路径如果填写#!/usr/bin/python,那么就表示这是一个Python脚本文件,会用Python解释器解释。

# 井号开头的行是注释

 

echo "echo命令用来打印信息在屏幕上"

 

# 脚本退出的时候可以用exit 0;来返回退出状态,0表示正常返回,如果非0,表示异常返回。$?特殊变量可以返回上一条命令的退出状态。

ls '一个不存在的文件'

echo $?

# 屏幕会显示2,这是ls命令遇到文件不存在时返回的错误码。

 

# &&表示逻辑与,||表示逻辑或。在一般的计算机语言解释器中,如果&&左边的条件成立才会执行检查&&右边的语句是否成立;同样地,如果||左边的条件不成立才会执行检查右边的语句是否成立。这就起到了条件语句的作用。

3.2 在文件中搜索提取内容

admin 提交于 周五, 05/18/2018 - 09:13

1. 查看文件内容(cat、less、head、tail)

cat <filename>

如果文件很长,可以使用分页浏览命令less。在浏览过程可以使用CTRL+F往前翻页,CTRL+B往回翻页,F是forward的首字母,B是backward的首字母。按Q键退出less浏览模式。

less <filename>

进入less浏览模式之后,按“/”然后输入关键词可以搜索字符串,按小写的n搜索下一个,按大写的N搜索上一个。

也会有人习惯把less和cat用管道操作串起来来用,效果是一样的:

cat <filename> | less

在过去有个more命令(Windows命令行也有这个命令),和less类似,但过去的more命令不能往回翻页,而现在一些系统直接就把more使用less的版本。

有时候,我们只希望查看文件的前几行或者最后几行,那么可以用head或tail命令,其中参数-n指定行数,不指定的话默认显示10行。例如:

3.1 文件打包归档

admin 提交于 周三, 12/13/2017 - 17:27

在日常工作中,把文件打包是常见的操作。在Linux服务器管理中,把文件打包备份也是必要的维护步骤。

 

1. tar

tar是最常见的打包命令,下面命令可以把foo目录打包后以gzip格式压缩:

tar -czvf foo.tar.gz foo

如果想以高一点的压缩率压缩成bzip2文件,可以用下面命令:

tar -cjvf foo.tar.bz2 foo

如果希望压缩率再高一些,可以用下面命令压缩成xz格式(注意J参数是大些的):

tar -cJvf foo.tar.xz foo

2.4 文件操作(创建、移动、改名、删除)

admin 提交于 周三, 12/06/2017 - 13:56

1. 常用文件操作

复制文件:

cp file1 file2 # 把file1复制到名为file2下
cp -r dir1 dir2 # 参数-r表示复制的是目录
cp f* dir1/ # 把当前目录以f开头的文件复制到dir1目录下

移动文件或改名:

mv oldpath newpath

删除文件或目录:

rm file1 file2 file3
rm -rf dir1 # 参数-rf表示删除的是目录,删除的时候不做确认提示,直接删除

创建目录:

mkdir dirname

以上命令更多参数说明可以通过man命令查看(例如`man cp`)。

关于目录,补充说明一下在之前介绍cd命令时没有说明的一个问题,'.'代表当前目录,'..'代表上一级目录。`cd ..`表示返回到上一级目录。cd后面必须带空格,这一点和Windows命令行是不同的。

2.3 目录与文件

admin 提交于 周三, 11/29/2017 - 17:26

1. 文件系统

安装Linux的时候需要对系统进行分区,并选择分区的文件系统。对于Windows来说,我们可能会分出C、D、E几个盘。对于Linux来说,也是有分区的,不过分区体可以挂载在任何一个目录,整个系统都在根目录/下得一棵树,而不会分C、D、E几棵树。

选择好分区方案之后需要为分区选在文件系统。Windows的文件系统有Fat32、NTFS等。Linux则有ext2、ext3、ext4、Reiser,交换分区用的是swap文件系统。

下面解释一下Linux目录树的主要用途: