• 150455

    文章

  • 1009

    评论

  • 13

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

第二课:《Linux就该这么学》课堂笔记


“工作马马虎虎,只想在兴趣和游戏中寻觅快活,充其量只能获得一时的快感,绝不能尝到从心底涌出的惊喜和快乐,但来自工作的喜悦并不像糖果那样—放进嘴里就甜味十足,而是需要从苦劳与艰辛中渗出,因此当我们聚精会神,孜孜不倦,克服艰辛后的成就感,世上没有哪种喜悦可以类比”。——稻盛和夫

“更何况人类生活中工作占据了较大的比重,如果不能从劳动中、工作中获得充实感,那么即使从别的地方找到快乐,最终我们仍然会感到空虚和缺憾”。——稻盛和夫

————————————————————————————————————————

学习重点: 

第一章   部署虚拟环境安装Linux系统

1.1 准备您的工具

1.2  安装配置VM虚拟机

VM虚拟机软件为用户提供了3种可选的网络模式,分别为桥接模式、NAT模式与仅主机模式。这里选择“仅主机模式”

Ø   桥接模式:相当于在物理主机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网。

Ø   NAT模式:让VM虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网,在真机中NAT虚拟机网卡对应的物理网卡是VMnet8。

Ø   仅主机模式:仅让虚拟机内的主机与物理主机通信,不能访问外网,在真机中仅主机模式模拟网卡对应的物理网卡是VMnet1。

USB控制器、声卡、打印机设备等不需要的设备统统移除掉。移掉声卡后可以避免在输入错误后发出提示声音,确保自己在今后实验中思绪不被打扰。

1.3  安装您的Linux系统

RHEL 7CentOS 7系统时,您的电脑的CPU需要支持VT(Virtualization Technology,虚拟化技术)

所谓VT,指的是让单台计算机能够分割出多个独立资源区,并让每个资源区按照需要模拟出系统的一项技术,其本质就是通过中间层实现计算机资源的管理和再分配,让系统资源的利用率最大化。如果开启虚拟机后依然提示“CPU不支持VT技术”等报错信息,请重启电脑并进入到BIOS中把VT虚拟化功能开启即可。

1.4  重置root管理员密码

平日里让运维人员头疼的事情已经很多了,因此偶尔把Linux系统的密码忘记了并不用慌,只需简单几步就可以完成密码的重置工作。但是,如果您是第一次阅读本书,或者之前没有Linux系统的使用经验,请一定先跳过本节,等学习完Linux系统的命令后再来学习本节内容。如果您刚刚接手了一台Linux系统,要先确定是否为RHEL 7系统。如果是,然后再进行下面的操作。

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

    Red Hat Enterprise Linux Server release 7.0 (Maipo)

重启Linux系统主机并出现引导界面时,按下键盘上的e键进入内核编辑界面

linux16参数这行的最后面追加“rd.break”参数,然后按下Ctrl + X组合键来运行修改过的内核程序

大约30秒过后,进入到系统的紧急求援模式。

依次输入以下命令,等待系统重启操作完毕,然后就可以使用新密码linuxprobe来登录Linux系统了。命令行执行效果如图1-49所示。

1-49  重置Linux系统的root管理员密码

mount -o remount,rw /sysroot

chroot /sysroot

passwd

touch /.autorelabel

exit

reboot

1.5  RPM(红帽软件包管理器)

RPM(红帽软件包管理器)公布之前,要想在Linux系统中安装软件只能采取源码包的方式安装。

RPM机制则为解决这些问题而设计的。RPM有点像Windows系统中的控制面板,会建立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。表1-1是一些常用的RPM软件包命令。

1-1                                                    常用的RPM软件包命令

安装软件的命令格式

rpm -ivh filename.rpm

升级软件的命令格式

rpm -Uvh filename.rpm

卸载软件的命令格式

rpm -e filename.rpm

查询软件描述信息的命令格式

rpm -qpi filename.rpm

列出软件文件信息的命令格式

rpm -qpl filename.rpm

查询文件属于哪个RPM的命令格式

rpm -qf filename

1.6  Yum软件仓库

尽管RPM能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决,而有些大型软件可能与数十个程序都有依赖关系。Yum软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。Yum软件仓库的技术拓扑:

 

1-50  Yum软件仓库的技术拓扑图

1-2                                                          常见的Yum命令

命令

作用

yum repolist all

列出所有仓库

yum list all

列出仓库中所有软件包

yum info软件包名称

查看软件包信息

yum install软件包名称

安装软件包

yum reinstall软件包名称

重新安装软件包

yum update软件包名称

升级软件包

yum remove软件包名称

移除软件包

yum clean all

清除所有仓库缓存

yum check-update

检查可更新的软件包

yum grouplist

查看系统中已经安装的软件包组

yum groupinstall软件包组

安装指定的软件包组

yum groupremove软件包组

移除指定的软件包组

yum groupinfo软件包组

查询指定的软件包组信息

1.7  systemd初始化进程

Linux操作系统的开机过程是这样的,即从BIOS开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为Linux系统的第一个进程,它需要完成Linux系统中相关的初始化工作,为用户提供合适的工作环境。红帽RHEL 7系统已经替换掉了熟悉的初始化进程服务System V init,正式采用全新的systemd初始化进程服务。如果您之前学习的是RHEL 5RHEL 6系统,可能会不习惯。systemd初始化进程服务采用了并发启动机制,开机速度得到了不小的提升。

systemd用目标(target)代替了System V init中运行级别的概念,这两者的区别:

1-3                                    systemdSystem V init的区别以及作用

System V init运行级别

systemd目标名称

作用

0

runlevel0.target, poweroff.target

关机

1

runlevel1.target, rescue.target

单用户模式

2

runlevel2.target, multi-user.target

等同于级别3

3

runlevel3.target, multi-user.target

多用户的文本界面

4

runlevel4.target, multi-user.target

等同于级别3

5

runlevel5.target, graphical.target

多用户的图形界面

6

runlevel6.target, reboot.target

重启

emergency

emergency.target

紧急Shell

如果想要将系统默认的运行目标修改为“多用户,无图形”模式,可直接用ln命令把多用户模式目标文件连接到/etc/systemd/system/目录:

 [root@linuxprobe ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/

 system/default.target

RHEL 7系统中是使用systemctl命令来管理服务的。RHEL 6系统中System V init命令与RHEL 7系统中systemctl命令的对比。

1-4            systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令

System V init命令(RHEL 6系统)

systemctl命令(RHEL 7系统)

作用

service foo start

systemctl start foo.service

启动服务

service  foo restart

systemctl restart foo.service

重启服务

service foo stop

systemctl stop foo.service

停止服务

service foo reload

systemctl reload foo.service

重新加载配置文件(不终止服务)

service foo status

systemctl status foo.service

查看服务状态

1-5    systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令

System V init命令(RHEL 6系统)

systemctl命令(RHEL 7系统)

作用

chkconfig foo on

systemctl enable foo.service

开机自动启动

chkconfig foo off

systemctl disable foo.service

开机不自动启动

chkconfig foo

systemctl is-enabled foo.service

查看特定服务是否为开机自动启动

chkconfig --list

systemctl list-unit-files --type=service

查看各个级别下服务的启动与禁用情况

第二章  新手必须掌握的Linux命令

2.1  强大好用的Shell

图形化工具相较于Linux命令行界面会更加消耗系统资源,因此经验丰富的运维人员甚至都不会给Linux系统安装图形界面,需要开始运维工作时直接通过命令行模式远程连接过去,不得不说这样做确实挺高效的。

2-1  用户与Linux系统的交互

Shell就是这样的一个命令行工具。Shell也称为终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是BashBourne-Again SHell)解释器。主流Linux系统选择Bash解释器作为命令行终端主要有以下4项优势,读者可以在今后的学习和生产工作中细细体会Linux系统命令行的美妙之处,真正从心里爱上它们。

Ø   通过上下方向键来调取过往执行过的Linux命令;

Ø   命令或参数仅需输入前几位就可以用Tab键补全;

Ø   具有强大的批处理脚本;

Ø   具有实用的环境变量功能。

2.2  执行查看帮助命令

既然Linux系统中已经有了Bash这么好用的“翻译官”,那么接下来就有必要好好学习下怎么跟它沟通了。

常见执行Linux命令的格式是这样的:

命令名称  [命令参数]  [命令对象]

注意,命令名称、命令参数、命令对象之间请用空格键分隔

命令对象一般是指要处理的文件、目录、用户等资源,而命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用---作为前缀。Linux新手不会执行命令大多是因为参数比较复杂,参数值需要随不同的命令和需求情况而发生改变。因此,要想灵活搭配各种参数,执行自己想要的功能,则需要长时间的经验积累了。

2-1                                             命令参数的长格式与短格式示例

长格式

man --help

短格式

man -h

man命令帮助信息的界面中,所包含的常用操作按键及其用途如表2-2所示。

长格式和短格式命令顺口溜:

“长长不可合并,长短不可合并,短短可以合并,只保留一个减号”

2-2                                              man命令中常用按键以及用途

按键

用途

空格键

向下翻一页

PaGe down

向下翻一页

PaGe up

向上翻一页

home

直接前往首页

end

直接前往尾页

/

从上至下搜索某个关键词,如“/linux

?

从下至上搜索某个关键词,如“?linux

n

定位到下一个搜索到的关键词

N

定位到上一个搜索到的关键词

q

退出帮助文档

一般来讲,使用man命令查看到的帮助内容信息都会很长很多,如果读者不了解帮助文档信息的目录结构和操作方法,乍一看到这么多信息可能会感到相当困惑。man命令的帮助信息的结构如表2-3所示。

2-3                                          man命令帮助信息的结构以及意义

结构名称

代表意义

NAME

命令的名称

SYNOPSIS

参数的大致使用方法

DESCRIPTION

介绍说明

EXAMPLES

演示(附带简单说明)

OVERVIEW

概述

DEFAULTS

默认的功能

OPTIONS

具体的可用选项(带介绍)

ENVIRONMENT

环境变量

FILES

用到的文件

SEE ALSO

相关的资料

HISTORY

维护历史与联系方式

2.3  常用系统工作命令

1.echo命令

echo命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。

例如,把指定字符串“Linuxprobe.com”输出到终端屏幕的命令为:

[root@linuxprobe ~]# echo Linuxprobe.Com

该命令会在终端屏幕上显示如下信息:

Linuxprobe.Com

下面,我们使用$变量的方式提取变量SHELL的值,并将其输出到屏幕上:

[root@linuxprobe ~]# echo $SHELL

/bin/bash

2.date命令

date命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]”。

只需在强大的date命令中输入以“+”号开头的参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。例如,把打包后的文件自动按照“年--日”的格式打包成“backup-2017-9-1.tar.gz”,用户只需要看一眼文件名称就能大概了解到每个文件的备份时间了。date命令中常见的参数格式及作用如表2-4所示。

2-4                                                 date命令中的参数以及作用

参数

作用

%t

跳格[Tab]

%H

小时(0023

%I

小时(0012

%M

分钟(0059

%S

秒(0059

%j

今年中的第几天

按照默认格式查看当前系统时间的date命令如下所示:

[root@linuxprobe ~]# date

Mon Aug 24 16:11:23 CST 2017

按照“年-- 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:

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

2017-08-24 16:29:12

将系统的当前时间设置为201791830分的date命令如下所示:

[root@linuxprobe ~]# date -s "20170901 8:30:00"

Fri Sep 1 08:30:00 CST 2017

再次使用date命令并按照默认的格式查看当前的系统时间,如下所示:

[root@linuxprobe ~]# date

Fri Sep 1 08:30:01 CST 2017

date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示。

[root@linuxprobe ~]# date "+%j"

244

3reboot命令

reboot命令用于重启系统,其格式为reboot

由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启,其命令如下:

[root@linuxprobe ~]# reboot

4poweroff命令

poweroff命令用于关闭系统,其格式为poweroff

该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑,其命令如下:

[root@linuxprobe ~]# poweroff

5wget命令

wget命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。

如果您没有Linux系统的管理经验,当前只需了解一下wget命令的参数以及作用,然后看一下下面的演示实验即可,切记不要急于求成。后面章节将逐步讲解Linux系统的配置管理方法,可以等您掌握了网卡的配置方法后再来进行这个实验操作。表2-5所示为wget命令的参数以及参数的作用。

2-5                                                  wget命令的参数以及作用

参数

作用

-b

后台下载模式

-P

下载到指定目录

-t

最大尝试次数

-c

断点续传

-p

下载页面内所有资源,包括图片、视频等

-r

递归下载

尝试使用wget命令从本书的配套站点中下载本书的最新pdf格式电子文档,这个文件的完整路径为http://www.linuxprobe.com/docs/LinuxProbe.pdf,执行该命令后的下载效果如下:

[root@linuxprobe ~]# wget http://www.linuxprobe.com/docs/LinuxProbe.pdf

--2017-08-24 19:30:12 -- http://www.linuxprobe.com/docs/LinuxProbe.pdf

Resolving www.linuxprobe.com (www.linuxprobe.com)... 220.181.105.185

Connecting to www.linuxprobe.com (www.linuxprobe.com)|220.181.105.185|:80...

connected.

HTTP request sent, awaiting response... 200 OK

Length: 45948568 (44M) [application/pdf]

Saving to: ‘LinuxProbe.pdf’

100%[==========================================>] 45,948,568 32.9MB/s in 1.3s

2017-08-24 19:30:14 (32.9 MB/s) - ‘LinuxProbe.pdf’ saved [45948568/45948568]

接下来,我们使用wget命令递归下载www.linuxprobe.com网站内的所有页面数据以及文件,下载完后会自动保存到当前路径下一个名为www.linuxprobe.com的目录中。执行该操作的命令为wget -r -p http://www.linuxprobe.com,该命令的执行结果如下。

[root@linuxprobe ~]# wget -r -p http://www.linuxprobe.com

--2017-08-24 19:31:41-- http://www.linuxprobe.com/

Resolving www.linuxprobe.com... 106.185.25.197

Connecting to www.linuxprobe.com|106.185.25.197|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: unspecified [text/html]

Saving to: 'www.linuxprobe.com/index.html'

………………省略下载过程………………

6ps命令

ps命令用于查看系统中的进程状态,格式为“ps [参数]”。

2-6                                                    ps命令的参数以及作用

参数

作用

-a

显示所有进程(包括其他用户的进程)

-u

用户以及其他详细信息

-x

显示没有控制终端的进程

Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中,有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示。

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

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

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

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

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

当执行ps aux命令后通常会看到如表2-7所示的进程状态,表2-7中只是列举了部分输出值,而且正常的输出值中不包括中文注释。

2-7       进程状态

USER

PID

%CPU

%MEM

VSZ

RSS

TTY

STAT

START

TIME

COMMAND

进程的所有者

进程ID

运算器占用率

内存占用率

虚拟内存使用量(单位是KB

占用的固定内存量(单位是KB

所在终端

进程

状态

被启动

的时间

实际使用
CPU的时间

命令名称与参数

root

1

0.0

0.4

53684

7628

?

Ss

07 :22

0:02

/usr/lib/systemd/systemd

root

2

0.0

0.0

0

0

?

S

07:22

0:00

[kthreadd]

root

3

0.0

0.0

0

0

?

S

07:22

0:00

[ksoftirqd/0]

root

5

0.0

0.0

0

0

?

S<

07:22

0:00

[kworker/0:0H]

root

7

0.0

0.0

0

0

?

S

07:22

0:00

[migration/0]

………………省略部分输出信息………………

 

 

 

注:

 

 

如前面所提到的,在Linux系统中的命令参数有长短格式之分,长格式和长格式之间不能合并,长格式和短格式之间也不能合并,但短格式和短格式之间是可以合并的,合并后仅保留一个-(减号)即可。另外ps命令可允许参数不加减号(-),因此可直接写成ps aux的样子。

7top命令

top命令用于动态地监视进程活动与系统负载等信息,其格式为top

top命令相当强大,能够动态地查看系统运维状态,完全将它看作Linux中的“强化版的Windows任务管理器”。top命令的运行界面如图2-6所示。

2-6  top命令的运行界面

在图2-6中,top命令执行结果的前5行为系统整体的统计信息,其所代表的含义如下。

Ø   第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。

Ø   第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。

Ø   第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。

注:

 

 

3行中的数据均为CPU数据并以百分比格式显示,例如97.1 id”意味着有97.1%CPU处理器资源处于空闲。

Ø   第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。

Ø   第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。

8pidof命令

pidof命令用于查询某个指定服务进程的PID值,格式为“pidof [参数] [服务名称]”。

每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程。例如,可以使用如下命令来查询本机上sshd服务程序的PID

[root@linuxprobe ~]# pidof sshd

2156

9kill命令

kill命令用于终止某个指定PID的服务进程,格式为“kill [参数] [进程PID]”。

接下来,我们使用kill命令把上面用pidof命令查询到的PID所代表的进程终止掉,其命令如下所示。这种操作的效果等同于强制停止sshd服务。

[root@linuxprobe ~]# kill 2156

10killall命令

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

[root@linuxprobe ~]# pidof httpd

13581 13580 13579 13578 13577 13576

[root@linuxprobe ~]# killall httpd

[root@linuxprobe ~]# pidof httpd

[root@linuxprobe ~]# 

注:

 

 

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

 


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客