天天看点

Linux成长之路-基础篇(1)

一、计算机组成及功能

1、计算机的组成

计算机组成指的是系统结构的逻辑实现,包括机器机内的数据流和控制流的 组成及逻辑设计等。

主要分为五个部分:控制器,运算器,存储器,输入设备,输出设备。

2、各组成部分的功能

(1)运算器:运算器的主要功能是对数据进行各种运算。这些运算除了常规的加、减、乘、除等基本的算术运算之外,还包括能进行“逻辑判断”的逻辑处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、移位等操作。

(2)控制器:由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。

(3)存储器:存储器分为内存和外存。内存是电脑的记忆部件,用于存放电脑运行中的原始数据、中间结果以及指示电脑工作的程序。内存可以分为随机访问存储器和只 读存储器,前者允许数据的读取与写入,磁盘中的程序必须被调入内存后才能运行,中央处理器可直接访问内存,与内存交换数据。

(4)输入设备:输入设备是向计算机输入数据和信息的设备。

(5)输出设备:是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。

二、Linux的发行版本与各版本间的联系和区别

Linux发行版主要有三个分支:Debian、Slackware、Redhat,如图:

Linux成长之路-基础篇(1)

1、Debian系列

(1)Debian系列包括Mint和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经 过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是 稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资 料也很丰富,有很多支持的社区,有问题求教也有地方可去:)

1> Ubuntu:基于Debian开发的开源Linux操作系统,主要针对桌面和服务器;严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是 一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

2> Linux Mint:基于Debian和Ubuntu的Linux发行版,致力于桌面系统对个人用户每天的工作更易用,更高效,且目标是提供一种更完整的即刻可用体验。

2、Slackware系列

是由Patrick Volkerding开发的GNU/Linux发行版。与很多其他的发行版不同,它坚持KISS(Keep It Simple Stupid)的原则,就是说没有任何配置系统的图形界面工具。一开始,配置系统会有一些困难,但是更有经验的用户会喜欢这种方式的透明性和灵活性。 Slackware Linux的另一个突出的特性也符合KISS原则:Slackware没有如RPM之类的成熟的软件包管理器。Slackware的软件包都是通常的tgz(tar/gzip)格式文件再加上安装脚本。Tgz对于有经验的用户来说,比RPM更为强大,并避免了RPM之类管理器的依赖性问题。Slackware与其他的发行版本(Red Hat、Debian、Gentoo、SuSE、 Mandriva、Ubuntu等)不同的道路,它力图成为“UNIX风格”的Linux发行版本。只吸收稳定版本的应用程序,并且缺少其他linux版本中那些为发行版本定制的配置工具。

1> suse:基于Slackware二次开发的一款Linux,主要用于商业桌面、服务器。

2> SLES(SUSE Linux Enterprise Server(SLES):企业服务器操作系统,是唯一与微软系统兼容的Linux操作系统。

3> OpenSUSE:由suse发展而来,旨在推进linux的广泛使用,主要用于桌面环境,用户界面非常华丽,而且性能良好。

3、RedHat系列

Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

1> rhel(red hat enterprise Linux):Red Hat公司发布的面向企业用户的Linux操作系统。早起版本主要用于桌面环境,免费:

2> Fedora:基于Red Hat Linux终止发行后,红帽公司计划以Fedora来取代Red Hat Linux在个人领域的应用,而另外发行的Red Hat Enterprise Linux取代Red Hat Linux在商业应用的领域。Fedora的功能对于用户而言,它是一套功能完备、更新快速的免费操作系统,而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。Fedora大约每六个月发布新版本。

3> Centos:基于Red hat Linux提供的可自由使用源代码的企业级Linux发行版本。每个版本的Centos都会获得十年的支持(通过安全更新的方式)。新版本的Centos大约每两年发行一次,而每个版本的Centos会定期(大概6个月)更新一次,以支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的Linux环境。

(4)其他发行版本:

1、 Gentoo:基于linux的自由操作系统,基于Linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点, Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西--你想让它成为什么,它就可以成为什么。由于它近乎无限的适应性,可把Gentoo称作元发行版。

2、 Aech Linux(或称Arch):以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅和代码最小化的设计宗旨。

不通发行版之间的联系和区别:

联系:所有发行版都是使用Linux内核;都需要遵循GNU的GPL协定;所有的发行版都有自己的版本号,版本格式约定基本一样(主版本号.次版本号.发行号.修正号)。

区别:发行版的本质区别,在于继承不同版本的内核,库、程序的组成。不同发行版几乎采用了不同包管理器(SLES、Fedora、openSUSE、centos、RHEL使用rmp包管理系统,包文件以RPM为扩展名;Ubuntu系列,Debian系列使用基于DPKG包管理系统,包文件以deb为扩展名。)

三、Linux的哲学思想

1、一切皆文件:是Unix/Linux的重要哲学思想之一,不仅将文件、目录、字符设备、块设备、 套接字等在 Unix/Linux

中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面,作用就是提高资源的管理效率。

2、由众多功能单一的小程序组成:一个程序只做一件事,并且能组合好完成复杂的任务,作用是分工明确,方便进程管理,好处是小程序易于理解,维护,

占用系统资源少。

3、避免令人困扰的图形界面:使用命令行接口执行效率更高,易于以编程的方式实现自动化任务。

4、配置数据存储在文本中:linux所有的配置文件都存放在文本配置文件当中,无论什么配置修改都只需修改其配置文件即可,易于阅读和编辑。

5、提供机制而非策略:从笼统意义上讲,所谓机制就是“提供什么功能”;策略就是“实现什么功能”。其实,机制就是将整个系统看作是一个资源的集合,当

任务来临时能够提供多少资源供其使用,却不介入任务的运行过程,任凭用户自己分配。

四、说明Linux命令的使用格式

1、ifconfig

1.命令格式:

ifconfig [网络设备] [参数]

2.命令功能:

ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。

3.命令参数:

up 启动指定网络设备/网卡。

down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。

arp 设置指定网卡是否支持ARP协议。

-promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包

-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包

-a 显示全部接口信息

-s 显示摘要信息(类似于 netstat -i)

add 给指定网卡配置IP地址

del 删除指定网卡的IP地址

<硬件地址> 配置网卡最大的传输单元

mtu<字节数> 设置网卡的最大传输单元 (bytes)

netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。

tunel 建立隧道

dstaddr 设定一个远端地址,建立点对点通信

-broadcast<地址> 为指定网卡设置广播协议

-pointtopoint<地址> 为网卡设置点对点通讯协议

multicast 为网卡设置组播标志

address 为网卡设置IPv4地址

txqueuelen<长度> 为网卡设置传输列队的长度

4.使用实例:

实例1:查看网络接口状态,不加任何参数,会输出当前网络接口的情况。

Linux成长之路-基础篇(1)

实例2:启动关闭指定网卡

ifconfig ens33 up

Linux成长之路-基础篇(1)

ifconfig ens33 down

Linux成长之路-基础篇(1)

实例3:为网卡配置IP

Linux成长之路-基础篇(1)

说明:

ifconfig eth0 192.168.60.129

给eth0网卡配置IP地:192.168.60.129

ifconfig eth0 192.168.60.129 netmask 255.255.255.0

给eth0网卡配置IP地址:192.168.60.192,并加上子掩码:255.255.255.0

ifconfig eth0 192.168.60.129 netmask 255.255.255.0 broadcast 192.168.60.255

/给eth0网卡配置IP地址:192.168.60.129,加上子掩码:255.255.255.0,加上个广播地址: 192.168.60.129

实例4:启用和关闭ARP协议

命令:

ifconfig eth0 arp

ifconfig eth0 -arp

输出:

Linux成长之路-基础篇(1)

实例5:设置最大传输单元

ifconfig eth0 mtu 1480

Linux成长之路-基础篇(1)

设置能通过的最大数据包大小为 1480 bytes

2、echo

echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。

语   法:echo [-ne][字符串]或 echo [--help][--version]

补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。

选项:

-n 不要在最后自动换行

-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

\a 发出警告声;

\b 删除前一个字符;

\c 最后不加上换行符号;

\f 换行但光标仍旧停留在原来的位置;

\n 换行且光标移至行首;

\r 光标移至行首,但不换行;

\t 插入tab;

\v 与\f相同;

\ 插入\字符;

\nnn 插入nnn(八进制)所代表的ASCII字符;

–help 显示帮助

–version 显示版本信息

实例1:显示系统定义的变量的值

[root@CentOS7 ~]# echo $USER

root

[root@CentOS7 ~]# echo $HOME

/root

实例2:显示用户自定义的变量的值

[root@CentOS7 ~]# var1=<code>date</code>

[root@CentOS7 ~]# echo "Today's date time is : $var1"

Today's date time is : Sat Dec 15 17:43:24 CST 2018

实例3:在echo命令中使用反斜线

[root@CentOS7 ~]# echo -e "Ubuntu \bis \bthe \bbest \bDesktop \bOS"

UbuntuisthebestDesktopOS

实例4:显示文本字符串

[root@CentOS7 ~]# echo " Hi this echo command testing"

Hi this echo command testing

实例5:在echo命令中使用制表符空格和垂直制表符

[root@CentOS7 ~]# echo -e "Ubuntu \tis \tthe \tbest \tDesktop \tOS"

Ubuntu is the best Desktop OS

[root@CentOS7 ~]# echo -e "Ubuntu \vis \vthe \vbest \vDesktop \vOS"

Ubuntu

is

the

best

Desktop

OS

实例6:设置echo命令彩色输出

echo命令可以修改字体类型,字体背景色以及字体颜色,转义序列\033可以用于改变字体属性。要使转义序列生效,必须使用-e选项。下面列出了部分转义代码:

[0m: 正常

[1m: 粗体

[4m: 字体加上下划线

[7m: 逆转前景和背景色

[8m: 不可见字符

[9m: 跨行字体

[30m: 灰色字体

[31m: 红色字体

[32m: 绿色字体

[33m: 棕色字体

[34m: 蓝色字体

[35m: 紫色字体

[36m: 浅蓝色字体

[37m: 浅灰字体

[38m: 黑色字体

[40m: 黑色背景

[41m: 红色背景

[42m: 绿色背景

[43m: 棕色背景

[44m: 蓝色背景

[45m: 紫色背景

[46m: 浅蓝色背景

[47m: 浅灰色背景

用紫色加粗字体打印输出My Linux。

[root@CentOS7 ~]# echo -e "\033[1m\033[35mMy Linux\033[0m"

用红色字体黑色背景色打印输出My Linux。

[root@CentOS7 ~]# echo -e "\033[31m\033[40mMy Linux\033[0m"

3、tty

tty命令用于显示终端机连接标准输入设备的文件名称。

在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。

语法

tty [-s][--help][--version]

参数说明:

-s或--silent或--quiet 不显示任何信息,只回传状态代码。

--help 在线帮助。

--version 显示版本信息。

实例1:显示当前终端

[root@CentOS7 ~]# tty

/dev/pts/3

4、startx

当我们在终端下想启动图形界面时,我们都会通过输入startx来实现,该命令可以启动一个Xserver,而且可以启动一个漂亮的图形界面。

startx [ [ client ] options ... ] [ -- [ server ] options ... ]。startx其实就是一个脚本,它启动X server就是通过调用xinit命令实现的,startx的参数将全部传给xinit。因此,这些参数的意义和xinit的参数是一样的。

5、export

功能说明:

  设置或显示环境变量。

语法:export [-fnp][变量名称]=[变量设置值]

参数:

-f  代表[变量名称]中为函数名称。

-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p  列出所有的shell赋予程序的环境变量。

实例1:显示当前系统上所有环境变量

直接使用export不加任何选项

Linux成长之路-基础篇(1)

实例2:设置环境变量

[root@Python ~]# export PATH="$PATH:/home/Python"

[root@Python ~]# echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/Python

实例3:定义环境变量赋值

Linux成长之路-基础篇(1)

6、pwd

pwd命令用于显示当前工作目录。

pwd [--help][--version]

参数说明:

实例:查看当前所在目录

[root@CentOS7 network-scripts]# pwd

/etc/sysconfig/network-scripts

7、history

用于显示历史记录和执行过的指令命令。history命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量 HISTSIZE进行控制。

语法:

history [选项] [参数]

-c: 清空命令历史;

-d offset:删除指定命令历史

-r: 从文件读取命令历史至历史列表中;

-w:把历史列表中的命令追加至历史文件中;

history #:显示最近的#条命令

环境变量:

1&gt; HISTSIZE:命令历史的条数

2&gt; HISTFILE:默认为~/.bash_history

3&gt; HISTFILESIZE:HISTFILE文件记录历史的条数

调用历史命令:

1&gt; !# 重复执行第#条命令

2&gt; !! 重复执行上一条命令

3&gt; !str 执行指定str开头的命令(最后一个)

4&gt; !? 获得最后执行的状态码

控制命令历史的记录方式:

1&gt; ignoredups 忽略重复

2&gt; ignorespace 忽略空白开头

3&gt; ignoreboth 上面2个都启用

实例1:显示已记录的历史命令

Linux成长之路-基础篇(1)

实例2:删除历史命令中某条历史命令

[root@CentOS7 ~]# history -d 391

实例3:显示最近10条历史命令

[root@CentOS7 ~]# history 10

实例4:清空所有历史命令

[root@CentOS7 ~]# history -c

8、shutdown、poweroff、reboot

1&gt; shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。

命令示例:

[root@CentOS7 ~]# shutdown

[root@CentOS7 ~]# shutdown now

[root@CentOS7 ~]# shutdown 13:20

[root@CentOS7 ~]# shutdown -p now ##关闭机器

[root@CentOS7 ~]# shutdown -H now ##停止机器

[root@CentOS7 ~]# shutdown -r09:35 ##在 09:35am 重启机器

[root@CentOS7 ~]# shutdown -c ##取消

2&gt; poweroff

会发送一个 ACPI 信号来通知系统关机。

[root@CentOS7 ~]# poweroff 关闭机器

[root@CentOS7 ~]# poweroff --halt 停止机器

[root@CentOS7 ~]# poweroff --reboot 重启机器

3&gt; reboot

通知系统重启

[root@CentOS7 ~]# reboot 重启机器

[root@CentOS7 ~]# reboot --halt 停止机器

[root@CentOS7 ~]# reboot -p 关闭机器

9、hwclock、date

1&gt; date

date 可以用来显示或设定系统的日期与时间。

date [OPTION]... [+FORMAT]

FORMAT

%H 小时(以00-23来表示)。

%I 小时(以01-12来表示)。

%K 小时(以0-23来表示)。

%l 小时(以0-12来表示)。

%M 分钟(以00-59来表示)。

%P AM或PM。

%r 时间(含时分秒,小时以12小时AM/PM来表示)。

%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。

%S 秒(以本地的惯用法来表示)。

%T 时间(含时分秒,小时以24小时制来表示)。

%A 星期的完整名称。

%D 日期(含年月日)。

%Y 年份(以四位数来表示)。

MM 月份(必要)

DD 日期(必要)

hh 小时(必要)

mm 分钟(必要)

ss 秒(选择性)

实例1:显示当前系统时间

[root@CentOS7 ~]# date

Sat Dec 15 19:40:33 CST 2018

实例2:格式化输出时间

[root@CentOS7 ~]# date +"%Y-%m-%d %H:%M:%S"

2018-12-15 19:45:49

实例3:修改系统时间

[[root@CentOS7 ~]# date -s "2012-12-12 12:12:12"

Wed Dec 12 12:12:12 CST 2012

2&gt; hwclock、clock

命令可以用来显示/设置硬件时钟命令。

-s, --hctosys:以硬件为准,把系统调整为与硬件时间相同;

-w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同;

五、获取Linux系统帮助信息

获取命令的使用帮助:

内部命令:

help COMMAND

外部命令:

(1) 命令自带简要格式的使用帮助

~]# COMMAND --help

(2) 使用手册:manual

位置:/usr/share/man

~]# man COMMAND

六、Linux发行版的基础目录名称命名法则及功用规定

linux文件命名法则:

1.文件名严格区分大小写

2.文件可以使用除/以外任意字符

3.文件名长度不能超过255字符

4.以.开头的文件为隐藏文件

在各种版本的linux发行版中,文件系统必要遵循FHS(Filesystem Hierarchy Standard,文件系统结构标准),它定义了一个发行版所必须有的文件目录和可选的文件目录。

FHS:

Filesystem Hierarchy Standard

/bin:所有用户可用的基本命令程序文件;

/sbin:供系统管理使用的工具程序;

/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;

/dev:存储特殊文件或设备文件;

设备有两种类型:字符设备(线性设备)、块设备(随机设备);

/etc:系统程序的配置文件,只能为静态;

/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;

/root:管理员的家目录;可选;

/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块

libc.so.:动态链接的C库;

ld:运行时链接器/加载器;

modules:用于存储内核模块的目录;

/lib64:64位系统特有的存放64位共享库的路径;

/media:便携式设备挂载点,cdrom, floppy等;

/mnt:其它文件系统的临时挂载点;

/opt:附加应用程序的安装位置;可选路径;

/srv:当前主机为服务提供的数据;

/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;

/usr:usr Hierarchy,全局共享的只读数据路径;

bin, sbin

lib, lib64

include:C程序头文件;

share:命令手册页和自带文档等架构特有的文件的存储位置

local:另一个层级目录;

X11R6:X-Window程序的安装位置

src:程序源码文件的存储位置

/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;

/var:/var Hierarchy,存储常发生变化的数据的目录;

cache Application cache data

lib Variable state information

local Variable data for /usr/local

lock Lock files

log Log files and directories

opt Variable data for /opt

run Data relevant to running processes

spool Application spool data

tmp Temporary files preserved between system reboots

继续阅读