分享

Linux入门教程资料分享

 书房1974 2019-10-31

Linux简介

严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL协议,允许任何人任意改动。但是,修改后的程序必须遵循GPL协议。

Linux 是一个多用户多任务的操作系统,也是一款自由软件,完全兼容POSIX标准,拥有良好的用户界面,支持多种处理器架构,移植方便。

为程序分配系统资源,处理计算机内部细节的软件叫做操作系统或者内核。如果你希望详细了解操作系统的概念,请查看操作系统教程。

用户通过Shell与Linux内核交互。Shell是一个命令行解释工具(是一个软件),它将用户输入的命令转换为内核能够理解的语言(命令)。

Linux下,很多工作都是通过命令完成的,学好Linux,首先要掌握常用命令。

Linux版本

内核版本指的是在 Linus 领导下的开发小组开发出的系统内核的版本号。Linux 的每个内核版本使用形式为 x.y.zz-www 的一组数字来表示。其中:

x.y:为linux的主版本号。通常y若为奇数,表示此版本为测试版,系统会有较多bug,主要用途是提供给用户测试。

zz:为次版本号。

www:代表发行号(注意,它与发行版本号无关)。

当内核功能有一个飞跃时,主版本号升级,如 Kernel2.2、2.4、2.6等。如果内核增加了少量补丁时,常常会升级次版本号,如Kernel2.6.15、2.6.20等。

一些组织或厂家将 Linux 内核与GNU软件(系统软件和工具)整合起来,并提供一些安装界面和系统设定与管理工具,这样就构成了一个发型套件,例如Ubuntu、Red Hat、Centos、Fedora、SUSE、Debian、FreeBSD等。相对于内核版本,发行套件的版本号随着发布者的不同而不同,与系统内核的版本号是相对独立的。因此把Red Hat等直接说成是Linux是不确切的,它们是Linux的发行版本,更确切地说,应该叫做'以linux为核心的操作系统软件包'。

Linux体系结构

注;C/C++ Linux服务器开发学习资料私信“资料”,免费分享

下面是Linux体系结构的示意图:

Linux入门教程资料分享

在所有Linux版本中,都会涉及到以下几个重要概念:

内核:内核是操作系统的核心。内核直接与硬件交互,并处理大部分较低层的任务,如内存管理、进程调度、文件管理等。

Shell:Shell是一个处理用户请求的工具,它负责解释用户输入的命令,调用用户希望使用的程序。

命令和工具:日常工作中,你会用到很多系统命令和工具,如cp、mv、cat和grep等。在Linux系统中,有250多个命令,每个命令都有多个选项;第三方工具也有很多,他们也扮演着重要角色。

文件和目录:Linux系统中所有的数据都被存储到文件中,这些文件被分配到各个目录,构成文件系统。Linux的目录与Windows的文件夹是类似的概念。

系统启动(开机)

如果你有一台装有Linux的电脑,加电后系统会自动启动,然后提示你登录系统,只有登录后才能进行其他操作。

登录Linux

第一次使用Linux,会看到登录的提示,如下所示:

login:

登录步骤:

登录Linux必须有用户名(用户ID)和密码,如果没有,可以向管理员所要。

在登录提示处输入用户名并回车;用户名是区分大小写的,输入时要注意。

然后会提示你输入密码,密码也是区分大小写的。

如果用户名和密码正确,那么会成功登录,并看到上次登录信息。

Linux入门教程资料分享

登录后会出现命令提示符($),你可以输入任何命令。下面通过 cal 命令来查看日历:

Linux入门教程资料分享

修改密码

Linux系统通过密码来保证数据和文件的安全,防止黑客破解和攻击。你可以通过以下方法来修改密码:

输入 password 命令。

输入你现在使用的密码。

输入新密码。注意密码不要过于简单,简单的密码往往会为入侵者大开便利之门。

确认密码,再输入一遍刚才的密码。

Linux入门教程资料分享

注意:输入的密码是看不到的,只会看到一个占位符(*)。

查看目录和文件

在Linux中,所有的数据都被保存在文件中,所有的文件又被分配到不同的目录;目录是一种类似树的结构,称为文件系统。

你可以使用 ls 命令来查看当前目录下的文件和目录。下面的例子,使用了 ls 命令的 -l 选项:

Linux入门教程资料分享

注意:以 d* 开头的为目录,如 uml、univ、urlspedia等;其他的都是文件。

查看当前用户信息

登录系统后,如果你希望知道自己的用户名(用户ID),可以使用 whoami 命令

Linux入门教程资料分享

如果你希望了解更多关于当前用户的信息,可以使用 who am i 命令,读者可以自己尝试一下。

查看当前在线用户

如果你希望知道当前在线的用户(同时登录到系统的用户),可以使用 users、who 和 w 命令:

Linux入门教程资料分享

w 命令可以看到在线用户的更多信息,读者可以自己尝试。

退出登录

完成工作后,你需要退出系统,防止他人使用你的账户。

使用 logout 命令即可退出登录,系统会清理有关信息并断开连接。

关闭系统(关机)

关系Linux系统可以使用下列命令:

Linux入门教程资料分享

注意:一般情况下只有超级用户和root用户(Linux系统中的最高特权用户)才有关闭系统的权限,但是给普通用户赋予相应权限也可以关闭系统。

Linux文件管理

Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录。目录是一种类似于树的结构,称为文件系统。

当你使用Linux时,大部分时间都会和文件打交道,通过本节可以了解基本的文件操作,如创建文件、删除文件、复制文件、重命名文件以及为文件创建链接等。

在Linux中,有三种基本的文件类型:

1) 普通文件

普通文件是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本和二进制对Linux来说并无区别,对普通文件的解释由处理该文件的应用程序进行。

2) 目录

目录可以包含普通文件和特殊文件,目录相当于Windows和Mac OS中的文件夹。

3) 设备文件

有些教程中称特殊文件,是一个含义。Linux 与外部设备(例如光驱,打印机,终端,modern等)是通过一种被称为设备文件的文件来进行通信。Linux 输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。Linux 和一个外部设备通讯之前,这个设备必须首先要有一个设备文件存在。

例如,每一个终端都有自己的设备文件来供 Linux 写数据(出现在终端屏幕上)和读取数据(用户通过键盘输入)。

设备文件和普通文件不一样,设备文件中并不包含任何数据。

设备文件有两种类型:字符设备文件和块设备文件。

字符设备文件以字母'c'开头。字符设备文件向设备传送数据时,一次传送一个字符。典型的通过字符传送数据的设备有终端、打印机、绘图仪、modern等。字符设备文件有时也被称为'raw'设备文件。

块设备文件以字母'b'开头。块设备文件向设备传送数据时,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘。磁盘和CD-ROMS既可以使用字符设备文件也可以使用块设备文件。

查看文件

查看当前目录下的文件和目录可以使用 ls 命令,例如:

Linux入门教程资料分享

通过 ls 命令的 -l 选项,你可以获取更多文件信息,例如:

Linux入门教程资料分享

每一列的含义如下:

第一列:文件类型。

第二列:表示文件个数。如果是文件,那么就是1;如果是目录,那么就是该目录中文件的数目。

第三列:文件的所有者,即文件的创建者。

第四列:文件所有者所在的用户组。在Linux中,每个用户都隶属于一个用户组。

第五列:文件大小(以字节计)。

第六列:文件被创建或上次被修改的时间。

第七列:文件名或目录名。

注意:每一个目录都有一个指向它本身的子目录'.' 和指向它上级目录的子目录'..',所以对于一个空目录,第二列应该为 2。

通过 ls -l 列出的文件,每一行都是以 a、d、- 或 l 开头,这些字符表示文件类型:

  • 提示:通俗的讲软连接就是windows的快捷方式,原来文件删了,快捷方式虽然在但是不起作用了。
  • 元字符
  • 元字符是具有特殊含义的字符。* 和 ? 都是元字符:
  • * 可以匹配 0 个或多个任意字符;
  • ? 匹配一个字符。

  • 例如

Linux入门教程资料分享

可以显示所有以 ch 开头,以 .doc 结尾的文件:

Linux入门教程资料分享

这里,* 匹配任意一个字符。如果你希望显示所有以 .doc 结尾的文件,可以使用

Linux入门教程资料分享

隐藏文件

隐藏文件的第一个字符为英文句号或点号(.),Linux程序(包括Shell)通常使用隐藏文件来保存配置信息。

下面是一些常见的隐藏文件:

.profile:Bourne shell (sh) 初始化脚本

.kshrc:Korn shell (ksh) 初始化脚本

.cshrc:C shell (csh) 初始化脚本

.rhosts:Remote shell (rsh) 配置文件

查看隐藏文件需要使用 ls 命令的 -a 选项:

Linux入门教程资料分享

一个点号(.)表示当前目录,两个点号(..)表示上级目录

注意:输入密码时,星号(*)作为占位符,代表你输入的字符个数。

创建文件

在Linux中,可以使用 vi 编辑器创建一个文本文件,例如:

Linux入门教程资料分享

上面的命令会创建文件 filename 并打开,按下 i 键即可进入编辑模式,你可以向文件中写入内容。例如:

Linux入门教程资料分享

完成编辑后,可以按 esc 键退出编辑模式,也可以按组合键 Shift + ZZ 完全退出文件。这样,就完成了文件的创建。

Linux入门教程资料分享

编辑文件

vi 编辑器可以用来编辑文件。由于篇幅限制,这里仅作简单介绍,将在后面章节进行详细讲解。

如下可以打开一个名为 filename 的文件:

Linux入门教程资料分享

当文件被打开后,可以按 i 键进入编辑模式,按照自己的方式编辑文件。如果想移动光标,必须先按 esc 键退出编辑模式,然后使用下面的按键在文件内移动光标:

l 键向右移动

h 键向左移动

k 键向上移动

j 键向下移动

使用上面的按键,可以将光标快速定位到你想编辑的地方。定位好光标后,按 i 键再次进入编辑模式。编辑完成后按 esc 键退出编辑模式或者按组合键 Shift+ZZ 退出当前文件。

查看文件内容

可以使用 cat 命令来查看文件内容,下面是一个简单的例子:

Linux入门教程资料分享

可以通过 cat 命令的 -b 选项来显示行号,例如:

Linux入门教程资料分享

统计单词数目

可以使用 wc 命令来统计当前文件的行数、单词数和字符数,下面是一个简单的例子:

Linux入门教程资料分享

  • 一列的含义如下:
  • 第一列:文件的总行数
  • 第二列:单词数目
  • 第三列:文件的字节数,即文件的大小
  • 第四列:文件名

  • 也可以一次查看多个文件的内容,例如:

Linux入门教程资料分享

复制文件

可以使用 cp 命令来复制文件。cp 命令的基本语法如下:

Linux入门教程资料分享

注:Linux系统有5种常见的进程状态:运行、中断、不可中断、僵死、停止,其各含义如下:

R运行(R)进程正在运行或在运行队列中等待

R中断(S)进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。

R不可中断(D)进程不响应系统异步信号,即使用kill命令也不能将其中断。

R僵死(Z)进程已经终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放。

R停止(T)进程收到停止信号后停止运行。

注:短格式与短格式之间是可以合并的,合并后仅保留一个-(减号)即可,另外ps命令可允许参数不加减号(-),因此可以直接写成:ps aux

top命令:用于动态监视进程的活动及系统负载等信息

格式:top命令

命令强大,可以看作“Linux”中的强化版的windows任务管理者。

pidof命令:用于查看某个指定服务进程的pid值

格式:pidof [参数][服务名称]

注:每个pid值是唯一的,因此可通过pid来区分不同的进程。

[root@linuxprobe ~]#pidof sshd

结果:2156

kill命令:杀死某个指定pid的服务进程

格式:kill[参数] [进程PID]

[root@linuxprobe ~]#kill 2156 //这种操作等同于强制停止sshd服务

killall命令:用于终止某个指定名称的服务所对应的所有进程。格式:killall [参数][服务名称]

注:ctrl+C组合键,在系统终端中执行一个命令后想立即停止它。

[root@linuxprobe ~]#pidof sshd

13591 13580 13579 13578 13577 13576

[root@linuxprobe ~]#killall sshd

[root@linuxprobe ~]#pidof sshd

[root@linuxprobe ~]#

注:如果我们在系统终端中执行一个命令后想立即停止它,可以同时按下ctrl+C组合键(生产环境中经常用到的一个快捷键)这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个&符号,这样命令将进入系统后台来执行。

系统状态检测命令

作为一名运维人员,想要更快,更好的了解linux服务器,必须具备快速查看linux系统运行状态的能力,接下来逐个讲解与网卡网络、系统内核、系统负载、内存使用情况、当前启用终端数量、历史登录记录、命令执行记录以及救援诊断等相关命令的使用方法。

ifconfig命令:用于获取网卡配置与网络状态等信息

格式:ifconfig [网络设备] [参数]

主要查看的就是网卡的名称,inet参数后面的IP地址、ether参数后面的网卡物理地址(又称MAC地址)以及RX、TX的接收数据包与发送数据包的个数及累计流量

uname命令:用于查看系统内核与系统版本等信息。

格式:uname [-a]

注: -a参数来完整的查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。

顺便一提,如果查看当前系统版本的详细信息,则需要查看redhat-release文件,其命令及相应的结果如下 :

[root@linuxprobe ~]# cat /etc/redhat-release

结果:Red Hat Enterprise Linux Server release 7.0(Maipo)

uptime命令:用于查看系统的负载信息

格式:uptime

uptime命令真的很棒,它可以显示当前系统时间、系统已运行时间,启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况,负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。

[root@linuxprobe ~]# uptime

结果:22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.18

free命令:用于显示当前系统中内存的使用量信息

格式: free [-h]

为了保证linux系统不会因资源耗尽而突然宕机,运维人员需要经常关注内存的使用量

who命令:用于查看当前登入主机的用户终端信息

格式:who [参数]

[root@linuxprobe ~]#who

linuxprobe :0 2018-09-12 14:37 (:0)

linuxprobe pts/0 2018-09-12 14:53 (:0)

Linux入门教程资料分享

last命令:用于查看所有系统的登录记录。

格式:last [参数]

history命令:用于显示历史执行过的命令。

格式 :history [-c] //清除所有历史执行过的命令

执行history命令能显示出当前用户在本地计算机中执行过的最近1000条记录。在使用history命令时,如果使用-c参数则会清空所有的命令历史记录。还可以使用“!编码数字”的方式来重复执行某一次命令。

sosreport命令:收集系统配置及架构信息并输出诊断文档。 格式为:sosreport

当Linux系统出现故障需要联系技术人员时,大多时候都先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术人员能够远程解决一些小问题,提前了解某些复杂问题。

Linux常用的基础指令

1.命令行行提示符含义

Linux入门教程资料分享

kiosk: 用户名称(root则表示为超级用户)

@: 分隔符

foundation31: 主机短名称

~: 当前所在系统目录(输入qwd,可以显示当先目录,~为默认, 如果切换目录则会相应的改变)

Linux入门教程资料分享

2:超级用户登陆方式

在命令行输入 su-

再输入密码,登陆成功后命令提示符将会改变为root用户,身份提示符变为#

Linux入门教程资料分享

3:命令的组成

命令 参数 目标

4;虚拟机的启动和关闭

Linux入门教程资料分享

Linux入门教程资料分享

虚拟机的启

动不会显示窗口,所以必须要view显示窗口才能看见虚拟机

Linux入门教程资料分享

Linux入门教程资料分享

5:Linux系统结构

linux体系结构要分为用户空间和内核空间的原因是:

1)、现代cpu实现了不同的工作模式,不同模式下cpu可以执行的指令和访问的寄存器不同。

2)、linux从cpu的角度出发,为了保护内核的安全,把系统分成了两部分。

用户空间和内核空间是程序执行的两种不同的状态,我们可以通过系统调用和硬件中断来完成用户空间到内核空间的转移。

linux内核结构:

Linux入门教程资料分享

内核网络结构

注;C/C++ Linux服务器开发学习资料私信“资料”,免费分享

在Linux内核中,对网络部分按照网络协议层、网络设备层、设备驱动功能层和网络媒介层的分层体系设计。

网络驱动功能层主要通过网络驱动程序实现。

在Linux内核,所有的网络设备都被抽象为一个接口处理,该接口提供了所有的网络操作。

net_device结构表示网络设备在内核中的情况,也就是网络设备接口。网络设备接口既包括软件虚拟的网络设备接口,如环路设备,也包括了网络硬件设备,如以太网卡。

Linux内核有一个dev_base的全局指针,指向一个设备链表,包括了系统内的所有网络设备。该设备链表每个节点是一个网络设备。

在net_device结构中提供了许多供系统访问和协议层调用的设备方法,包括初始化、打开关闭设备、数据包发送和接收等。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多