课程大纲

课程内容

学习效果

Linux基础

Linux概述

了解

CentOS安装

掌握

Linux目录结构

掌握

远程客户端工具

了解

一、Linux概述

(一)Linux的历史

1、什么是Linux

  1. Linux是一种免费使用和自由传播的类Unix的操作系统,全称GNU/Linux
  2. 常见的操作系统有:Unix、Linux、Dos、Windows、Mac、IOS、Android、Windows Phone等等

2、Linux的诞生

  1. 1991年:芬兰大学大三学生Linus Torvalds(林纳斯•托瓦兹)公开内核:kernel

3、Linux的组成

  1. Minix的编程思想
  2. GNU组件
  3. kernel内核

(二)Linux发行版本

  1. 常见发行版本:Ubuntu、RedHat、CentOS、Debain、Fedora、SUSE、OpenSUSE。大数据常使用的版本:CentOS

二、CentOS7的安装部署

(一)虚拟机软件VMWare15

1、虚拟机软件

  1. 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
  2. 常见的三种虚拟机软件:VMware Workstation、VirtualBox、VMWare Player
  3. 三种虚拟机软件的优缺点:

VMware Workstation:收费、功能强大,磁盘占用高

VirtualBox:开源免费,功能强大,内存CPU占用高

VMWare Player:开源免费,高级功能无法使用

2、vmware15的安装

https://blog.csdn.net/qq_36972345/article/details/119761928

安装有虚拟网卡(VMnet1、VMnet8)

注意:要保证vmware的正常使用,不要把这两个网卡禁用掉

服务列表中有vmware的五个服务

注意:要保证vmware的正常使用,要保证这5个服务状态时正在运行(如果没运行,可以双击该服务,点击启动,启动它),并启动类型时自动,也就是随着电脑开机自动启动。

 软件安装卸载注意事项

(1)查看主机是否开启虚拟化支持

开机时进入BIOS进行查看,如下图:

注意:电脑品牌型号不一样,进入BIOS方式也各不相同

2)卸载注意事项

卸载时使用电脑自带卸载功能,非正确卸载会导致电脑中存在残留的注册信息等,再次安装VMware时很可能安装不上,卸载步骤如下图:

(二)CentOS7系统安装

本次安装Linux操作系统,选择的是CentOS7.5版本,安装步骤较多,请参考安装文档,如下:

CentOS 7安装教程(图文详解)

我这里跟参考文档安装的有些不一样,如下:

继续安装,并设置root用户密码

(三)vmware的网络模式

1、网络基础

  1. 局域网搭建:将来大数据的学习我们将需要多台机器在同一网络中进行互相通信,这时,不得不建立起属于我们自己的局域网络,然而,局域网络的搭建不可避免地涉及到网卡、交换机、路由等一系列设备及相关知识。在搭建局域网之前先了解搭建局域网所需要掌握的知识。
  2. 网络基础知识概念: 网络设备、网关、DHCP、DNS、子网掩码、IP地址

2、VMware的三种网络模式

为什么要在虚拟机安装配置时选择NAT模式 ?

那么首先了解下三种网络模式各有什么特点,以及哪种模式更适合我们学习使用?

VMware的网络模式的分类:Bridged(桥接)、NAT、Host-only(仅主机)

(1)Bridged:桥接模式

桥接模式:将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。

这种方式的虚拟机类似于和主机在同一网段中的物理机一样,可以访问局域网中的任何机器,主机能够上网,虚拟机也可以上网。但是有个问题是此模式下如果物理机的ip发生变化,虚拟机的ip也会去相应的改变。

其网络结构如下图所示:

(2)仅主机模式

仅主机模式:Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。

其网络结构如下图所示:

(3)NAT模式

NAT模式:主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样虚拟机既可以连接主机,也可以连接外网。

NAT设备:联通本地网卡和虚拟交换机的中间设备

其网络结构如下图所示:

3、网络配置

我们安装完vmware之后,会自动随机(每个机器的可能不一样)分配一个子网,并随机给我们在此子网下分配一个IP,所有采用NAT方式上网的虚拟机必须配置在该子网下。

4、VMwareTools

VMwareTools:的主要作用是虚拟硬件的驱动,鼠标的无缝移出移入,剪贴板共享,共享主机上的文件夹等功能。

VMwaretools安装

三、Linux目录结构

Linux的文件系统跟Windows的文件系统不同,Windows是分为若干个分区,每个分区下有各个目录,每个目录可能又有子目录。而Linux只有一个顶级的目录,该顶级目录叫做根目录,用斜杠表示,即/。该根目录下有若干子目录。像一棵倒立的树,顶级目录是树根,各自目录是树干,树干还有树枝。

(一)树状目录结构

(二)目录功能介绍

Linux每个目录都有自己约定俗成的用处,或者说Linux的不同文件分门别类地放到了专门的文件夹,虽然Linux没有强制性的要求我们必须按照这些规定放置文件,但是为了方便起见,还是遵守约定的好。

/bin:是Binary的缩写,这个目录存放着系统必备执行命令,比如ls、cat

/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里。

/dev:Device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的,比如光驱就被映射为/dev/cdrom文件。

/etc:所有的系统管理所需要的配置文件和子目录,例如网络配置

/home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,例如我们在创建完普通用户hadoop后,就会在/home下创建一个子目录/home/hadoop,作为hadoop用户的家目录,但是注意root的家不在这里,在其家是/root。

/lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lib64:开机时常用的动态链接库64位,bin及sbin指令也会调用对应的lib库。

/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认该目录是空的。

/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

/root:该目录为系统管理员,也称作超级权限者的用户主目录。

/run: 系统运行时所产生的信息,以前放置在/var/run中,后来拆分成独立的/run目录。

/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/srv:service缩写,该目录存放一些服务启动之后需要提取的数据。

/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

/tmp:这个目录是应用程序存放一些临时文件的,类似于Windows的回收站,里面的内容会定期删除。

/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,例如各种日志文件。

四、远程客户端工具

(一)为什么使用远程客户端工具

Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器。这时我们就需要远程登录到Linux服务器来管理维护系统。

Linux系统中是通过SSH服务实现的远程登录功能,默认SSH服务端口号为 22。Window系统上 Linux 远程登录客户端有SecureCRT,Putty,SSH Secure Shell,XShell、mobaxterm等。

(二)XShell的安装使用

1、XShell的安装

Xshell 6安装和使用教程

2、xshell的使用

1. 双击桌面”Xshell6”图标打开XShell

2.新建会话,连接远程某一设备

3.自定义连接机器的名称,输入连接机器的IP地址

4.在左侧会话管理器将存在新建的会话,双击进行连接

5.根据提示输入用户名及密码

可根据喜好选择是否一次登录或是保存记录下次连接后直接登录

6、文件传输

五、Linux常用命令

(一)Linux的命令

1、命令的必要性

虽然我们可以使用图形化界面,但图形化界面会影响服务器的性能。一般服务器需要长时间运行(一般为7*24小时不间断运行),图形化的桌面版系统庞大,复杂,容易造成崩溃。 命令行界面不够美观,但运行稳定,干扰性能项相对较少,对于开发人员而言操作也比较快捷方便。

2、命令的格式和语法

(1)命令的格式和语法

命令+空格+选项+空格+参数

(2)命令详解

命令:指单词或者词组的全称或者简写

选项:选项是包括一个或多个字母的代码,前面有一个“-连字符,主要用于扩展基础命令

参数:命令操作的对象

(3)举例说明

如上图的命令行界面,ls -l /root 是一个完整的命令,其中“ls”是命令,“-l”是选项,“/root”是参数,执行ls -l /root 后会将结果展现给我们。

3、命令的分类

(1)命令分类

内部命令:也称作内置命令,随着Linux系统启动而加载到内存中,是常驻内存的,调用速度快,执行效率高。

外部命令:在Linux系统启动时并不随系统一起被加载到内存中,而是在需要时才将其从磁盘加载到内存中,调用速度相对较慢。

(2)命令类型的鉴别

如何区分某个命令是内部命令还是外部命令?

type命令查看指定的命令是否是内部命令

type命令的语法:type+空格+命令

(3)案例

[root@bd-offcn-01 ~]# type ifconfig

ifconfig 是 /usr/sbin/ifconfig

[root@bd-offcn-01 ~]# type cd

cd 是 shell 内嵌

4、常用快捷键和基础命令

(1)who

基本语法:

语法

功能描述

whoami

显示自身用户名称

who am i

显示登录用户的用户名

who

看当前有哪些用户登录到了本台机器上

案例:(root用户登录切换到offcn用户下操作)

[offcn@bd-offcn-01 root]$ whoami

offcn

[offcn@bd-offcn-01 root]$ who am i

root     pts/1        2021-01-28 14:51 (192.168.254.1)

[offcn@bd-offcn-01 root]$ who

root     :0           2021-01-27 15:26 (:0)

root     pts/0        2021-01-28 09:34 (192.168.254.1)

root     pts/1        2021-01-28 14:51 (192.168.254.1)

(2)pwd

基本语法:

语法

功能描述

pwd

显示当前工作目录的绝对路径

案例:

[root@bd-offcn-01 offcn]# pwd

/home/offcn

(3)cd

基本语法:

语法

功能描述

cd 绝对路径

切换到所给的绝对路径下

cd 相对路径

切换到所给的相对路径下

cd ~或者cd

回到自己的家目录

cd -

回到上一次所在目录

cd ..

回到当前目录的上一级目录

   案例:

1、cd 绝对路径

[root@bd-offcn-01 /]# cd /home/

[root@bd-offcn-01 home]# pwd

/home

2、cd 相对路径

[root@bd-offcn-01 home]# cd offcn/

[root@bd-offcn-01 offcn]# pwd

/home/offcn

3、cd ~或者cd

[root@bd-offcn-01 offcn]# cd

[root@bd-offcn-01 ~]# pwd

/root

4、cd -

[root@bd-offcn-01 ~]# cd -

/home/offcn

5、cd ..

[root@bd-offcn-01 offcn]# cd ..

[root@bd-offcn-01 home]# pwd

/home

(4)ifconfig

基本语法:

语法

功能描述

ifconfig

查看网络配置信息

(5)history

基本语法:

语法

功能描述

history

查看历史命令(1000条)

案例:

[root@bd-offcn-01 home]# history

1  ll

2  pwd

3  ifconfig

查看历史命令的存储位置

[root@bd-offcn-01 ~]# cat .bash_history

ll

pwd

ifconfig

快速执行历史命令,可以使用!加命令编号快速执行命令,注意!与编号之间无空格

使用! 执行历史命令。000000

!number 执行第几条命令

!command 从最近的命令查到以command开头的命令执行

!! 执行上一条

(6)快捷键

基本语法:

语法

功能描述

ctrl + c

停止进程

ctrl + l

清屏

tab键

自动补全命令

上下键

查找执行过的命令

(二)常用命令

1、帮助类命令

帮助类命令的作用:查看命令的含义以及使用方法。

(1)whatis

基本语法:

语法

功能描述

whatis + 命令

描述一个命令执行什么功能

案例:

[root@bd-offcn-01 home]# whatis who

who (1)              - 显示已经登录的用户

更新信息库: mandb

(2)man

基本语法:

语法

功能描述

man + 命令

Man即manual手册的简写。指的是命令的使用手册

案例:(退出手册查看方式->键入q)

(3)help

基本语法:

语法

功能描述

help + 内部命令

查看内部命令的使用帮助

外部命令 + --help

查看外部命令的使用帮助

案例:

help + 内部命令

[root@bd-offcn-01 ~]# help pwd

pwd: pwd [-LP]

打印当前工作目录的名字。

选项:

-L 打印 $PWD 变量的值,如果它命名了当前的

工作目录

-P 打印当前的物理路径,不带有任何的符号链接

默认情况下,`pwd' 的行为和带 `-L' 选项一致

退出状态:

除非使用了无效选项或者当前目录不可读,否则

返回状态为0。

外部命令 + --help

[root@bd-offcn-01 ~]# ls --help

用法:ls [选项]... [文件]...

List information about the FILEs (the current directory by default).

Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.

-a, --all         不隐藏任何以. 开始的项目

2、文本编辑命令

(1)Linux文本编辑器介绍

在Windows中,我们可以使用记事本、word等等应用程序来编辑文件,那么在Linux里面我们需要使用vi或者vim编辑器来编辑文件。vi或者vim编辑器也是作为Linux中的命令存在的。

基本语法:

语法

功能描述

vi/vim + 文件

进入某文件的编辑界面对文件内容进行编辑

vi 是老式的文字处理器,来源于Unix操作系统,所有的类Unix系统也都会内建vi文本编辑器。

vim可以理解为是vi的增强版,现在可称为“Vi Improved”(Vi改进版),原来也被称为“Vi Imitation”(Vi模拟版),vim比vi拥有更强大的编辑能力,增加了以字体颜色辨别语法的正确性,跨平台使用等功能,更加方便了程序的设计。

(2)Linux文本编辑器使用

a.一般模式

用vi/vim 打开一个文件就直接进入一般模式了。在该模式中,可以使用上下左右按键来移动光标, 也可以使用复制、粘贴、删除等功能来处理文件内容,但是这里的复制、粘贴、删除与Windows的操作是不同的。

常用语法:

语法

功能描述

yy

复制光标当前一行

y + 数字N + y

从光标闪烁处开始往后复制N行

p

即paste,将复制的内容粘贴到光标所在行的下一行

u

即undo,撤销上一步的操作

dd

即delete,删除光标所在的当前行

d + 数字N + d

从光标所在行开始往后删除N行

shift + ^

移动到光标所在行的行头

shift + $

移动到光标所在行的行尾

gg

移动到文件的第一行

shift + g

移动到文件的末尾行

数字N + shift + g

移动到文件的第N行处

b.编辑模式

在一般模式中可以进行删除、复制、粘贴等等的动作,但是却无法编辑文件内容。我们需要进入编辑模式才可以编辑具体内容,我们可以在一般模式下键入『i, I, o, O, a, A, r, R』等任一字母就可进入编辑模式。

进入编辑模式,会在左下方出现『INSERT 或 REPLACE 或 插入 』的字样。编辑完成后,按下『Esc』这个按键可退出编辑模式,回到一般模式,在一般模式下,可以进入指令模式,选择保存或者不保存文件。

常用语法:

语法

功能描述

键入“i”

在光标所在位置处进入编辑模式

键入“I”

将光标定位到所在行的行头进入编辑模式

键入“a”

将光标定位到当前位置的下一字节进入编辑模式

键入“A”

将光标定位到所在行的行尾进入编辑模式

键入“o”

在光标所在行的下一行新建一行进入编辑模式

键入“O”

在光标所在行的上一行新建一行进入编辑模式

c.指令模式

该模式也被称之为底行模式,在一般模式下,输入『 : / ?』3个中的任何一个按键,就可以将光标移动到页面最底一行进入到指令模式,在该模式下可以进行保存、不保存、显示行号、搜索关键字等操作。按下『Esc』这个按键可退出编辑模式。

常用语法:

语法

功能描述

键入“:或 / 或 ?”

在一般模式下进入指令模式

键入“:”后输入“w”并回车

保存

键入“:”后输入“q”并回车

退出文本编辑器

键入“:”后输入“wq”并回车

保存文本内容并退出文本编辑器

键入“:”后输入“!”并回车

强制执行

键入“:”后输入“q!”并回车

不保存文件,强制退出文本编辑器

键入“:”后输入“wq!”并回车

强制保存并退出文本编辑器

一般模式下按下 Shift + z + z

对非只读文件实现快速保存

键入“/”后输入“关键词”并回车

查询文件中的关键词,按n向下查找下一个关键词

键入“?”后输入“关键词”并回车

查询文件中的关键词,按n向上查找下一个关键词

键入“:”后输入“set nu”并回车

显示每行的行号

键入“:”后输入“%s/word1/word2”并回车

将文件中的word1替换为word2

(3)模式间转换

三种模式之间的转换如下图:

3、文件目录类命令

(1) ls

基本语法:

语法

功能描述

ls + [选项] + 目录

显示指定目录下的所有子目录和文件

选项:

-a :all,全部的文件,连同隐藏的文档( 开头为 . 的文件) 一起列出来(常用)

-l :以详情列表列出,包含文件的属性与权限等等数据;(常用)

-i :查看文件的inode号(inode存储文件的详细信息)

案例:

[root@bd-offcn-01 test]# ls

d1  test1.txt  test2.txt  vi测试数据.txt

[root@bd-offcn-01 test]# ls -l

总用量 20

drwxr-xr-x. 3 root root   16 1月  31 16:30 d1

-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt

-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt

-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt

[root@bd-offcn-01 test]# ll

总用量 20

drwxr-xr-x. 3 root root   16 1月  31 16:30 d1

-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt

-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt

-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt

[root@bd-offcn-01 test]# ll -a

总用量 20

drwxr-xr-x.  3 root root   76 1月  31 16:35 .

dr-xr-xr-x. 18 root root  236 1月  29 17:18 ..

drwxr-xr-x.  3 root root   16 1月  31 16:30 d1

-rw-r--r--.  1 root root   76 1月  31 16:02 test1.txt

-rw-r--r--.  1 root root   66 1月  31 15:44 test2.txt

-rw-r--r--.  1 root root 8892 1月  31 14:47 vi测试数据.txt

[root@bd-offcn-01 test]# ll -i

总用量 20

35513412 drwxr-xr-x. 3 root root   16 1月  31 16:30 d1

35296254 -rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt

35299497 -rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt

35299499 -rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt

(2)touch

常用语法:

语法

功能描述

touch + 文件名称

用来创建新的空文件

案例:

[root@bd-offcn-01 data]# ll

总用量 0

[root@bd-offcn-01 data]# touch test.txt

[root@bd-offcn-01 data]# ll

总用量 0

-rw-r--r--. 1 root root 0 1月  29 15:50 test.txt

(3)mkdir

基本语法:

语法

功能描述

mkdir + [选项] +要创建的目录

创建一个新的目录

选项:

-p :递归创建多级目录

案例:

[root@bd-offcn-01 test]# ll

总用量 20

-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt

-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt

-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt

[root@bd-offcn-01 test]# mkdir data

[root@bd-offcn-01 test]# ll

总用量 20

drwxr-xr-x. 2 root root    6 1月  31 16:30 data

-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt

-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt

-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt

[root@bd-offcn-01 test]# mkdir -p d1/d2/d3

[root@bd-offcn-01 test]# ll

总用量 20

drwxr-xr-x. 3 root root   16 1月  31 16:30 d1

drwxr-xr-x. 2 root root    6 1月  31 16:30 data

-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt

-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt

-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt

[root@bd-offcn-01 test]# ll d1/d2/d3/

总用量 0

(4)echo 和 重定向

echo:输出内容

重定向:将数据写入到指定文件,分为追加写“>>”和覆盖写“>”

常用语法:

语法

功能描述

echo + 输出内容(文本/命令结果/变量)

将内容进行输出显示

echo + 输出内容 >> 文件

将输出内容追加存储在指定文件中

echo + 输出内容 > 文件

将输出内容覆盖存储在指定文件中

案例:

[root@bd-offcn-01 data]# echo "hello"
hello
[root@bd-offcn-01 data]# echo `date`
2021年 01月 29日 星期五 16:47:14 CST
[root@bd-offcn-01 data]# echo $PWD
/test/data
[root@bd-offcn-01 data]# cat test.txt
[root@bd-offcn-01 data]# echo "hello" >> test.txt
[root@bd-offcn-01 data]# echo `date` >> test.txt
[root@bd-offcn-01 data]# cat test.txt
hello
2021年 01月 29日 星期五 16:48:52 CST
[root@bd-offcn-01 data]# echo "world" > test.txt
[root@bd-offcn-01 data]# cat test.txt
world

(5)printf

基本语法:

语法

功能描述

printf + 格式 + 参数

将数据指定格式进行输出

案例:

[root@bd-offcn-01 data]# printf "hello world"
hello world[root@bd-offcn-01 data]#
[root@bd-offcn-01 data]# printf "hello world \n"
hello world
[root@bd-offcn-01 data]# printf "%s \t %d \t %s \n" "zhangsan" 16 "man"
zhangsan         16      man

(6)mv

基本语法:

语法

功能描述

mv + 原文件名 + 新文件名

对文件进行重命名

mv + 文件/目录 + 路径

将文件/目录移动到指定路径下

[root@bd-offcn-01 data]# ll
总用量 4
-rw-r--r--. 1 root root 6 1月  29 16:49 test.txt
[root@bd-offcn-01 data]# mv test.txt test1.txt
[root@bd-offcn-01 data]# ll
总用量 4
-rw-r--r--. 1 root root 6 1月  29 16:49 test1.txt
[root@bd-offcn-01 data]# mv test1.txt /opt/
[root@bd-offcn-01 data]# ll /opt/
总用量 4
drwxr-xr-x. 2 root root 6 9月   7 2017 rh
-rw-r--r--. 1 root root 6 1月  29 16:49 test1.txt

(7)cp

基本语法:

语法

功能描述

cp + 原文件 + 目标路径

将一个或多个文件复制到指定的路径下

cp + 原文件 + 目标文件

将一个文件复制到目标文件中

目标文件

1、已存在文件,则覆盖其内容

2、不存在文件,则自动创建新文件

cp -r + 原目录 + 目标路径

将该目录以及所有子目录下的所有文件拷贝到目标路径下

目标路径

1、已存在路径,则拷贝到此路径下

2、不存在路径,则自动创建新目录

案例:

[root@bd-offcn-01 opt]# ll
总用量 4
drwxr-xr-x. 2 root root 6 9月   7 2017 rh
-rw-r--r--. 1 root root 0 1月  31 09:24 test11.txt
-rw-r--r--. 1 root root 6 1月  29 16:49 test1.txt
[root@bd-offcn-01 opt]# ll /test/
总用量 12
drwxr-xr-x. 2 root root    6 1月  31 09:35 data
-rw-r--r--. 1 root root 8890 1月  29 10:50 vi测试数据.txt
[root@bd-offcn-01 opt]# cp test1* /test/
[root@bd-offcn-01 opt]# ll /test/
总用量 16
drwxr-xr-x. 2 root root    6 1月  31 09:35 data
-rw-r--r--. 1 root root    0 1月  31 09:36 test11.txt
-rw-r--r--. 1 root root    6 1月  31 09:36 test1.txt
-rw-r--r--. 1 root root 8890 1月  29 10:50 vi测试数据.txt
[root@bd-offcn-01 opt]# cp -r /test/data/ /opt/
[root@bd-offcn-01 opt]# ll
总用量 4
drwxr-xr-x. 2 root root 6 1月  31 09:37 data
drwxr-xr-x. 2 root root 6 9月   7 2017 rh
-rw-r--r--. 1 root root 0 1月  31 09:24 test11.txt
-rw-r--r--. 1 root root 6 1月  29 16:49 test1.txt
[root@bd-offcn-01 opt]# cp -r /test/data/ /opt/data2
[root@bd-offcn-01 opt]# ll
总用量 4
drwxr-xr-x. 2 root root 6 1月  31 09:37 data
drwxr-xr-x. 2 root root 6 1月  31 09:37 data2
drwxr-xr-x. 2 root root 6 9月   7 2017 rh
-rw-r--r--. 1 root root 0 1月  31 09:24 test11.txt
-rw-r--r--. 1 root root 6 1月  29 16:49 test1.txt

(8)ln

基本语法:

语法

功能描述

ln + 原文件 + 目标文件

给原文件创建一个硬链接存放到目标文件

ln -s + 原文件(绝对路径) + 目标文件

给原文件创建一个软链接存放到目标文件

   案例:

[root@bd-offcn-01 opt]# ll -i
总用量 4
102334040 drwxr-xr-x. 2 root root 6 1月  31 10:01 data
102286313 drwxr-xr-x. 2 root root 6 9月   7 2017 rh137008 -rw-r--r--. 1 root root 0 1月  31 09:24 test11.txt67377416 -rw-r--r--. 1 root root 6 1月  29 16:49 test1.txt
[root@bd-offcn-01 opt]# ll -i data/
总用量 0
[root@bd-offcn-01 opt]# ln test1.txt data/
[root@bd-offcn-01 opt]# ll -i data/
总用量 4
67377416 -rw-r--r--. 2 root root 6 1月  29 16:49 test1.txt
[root@bd-offcn-01 opt]# ln test1.txt data/test1-1.txt
[root@bd-offcn-01 opt]# ll -i data/
总用量 8
67377416 -rw-r--r--. 3 root root 6 1月  29 16:49 test1-1.txt
67377416 -rw-r--r--. 3 root root 6 1月  29 16:49 test1.txt
[root@bd-offcn-01 opt]# ln -s /opt/test11.txt data/
[root@bd-offcn-01 opt]# ll -i data/
总用量 867377416 -rw-r--r--. 3 root root  6 1月  29 16:49 test1-1.txt
102334041 lrwxrwxrwx. 1 root root 15 1月  31 10:03 test11.txt -> /opt/test11.txt67377416 -rw-r--r--. 3 root root  6 1月  29 16:49 test1.txt
[root@bd-offcn-01 opt]# ln -s /opt/test11.txt data/test11-1.txt
[root@bd-offcn-01 opt]# ll -i data/
总用量 8
102334042 lrwxrwxrwx. 1 root root 15 1月  31 10:03 test11-1.txt -> /opt/test11.txt67377416 -rw-r--r--. 3 root root  6 1月  29 16:49 test1-1.txt
102334041 lrwxrwxrwx. 1 root root 15 1月  31 10:03 test11.txt -> /opt/test11.txt67377416 -rw-r--r--. 3 root root  6 1月  29 16:49 test1.txt

(9)cat

基本语法:

语法

功能描述

cat + [选项] + 文件

查看文件内容,从第一行开始输出显示

选项

-n :列出行号,连同空白行也会有行号

-b :列出行号,仅对非空白行显示行号

-s :当遇到连续两行以上的空白行,转换为一行的空白行

-v :列出一些看不出来的特殊字符

(特殊字符输出ctrl+V ctrl+字符,比如输出空字符ctrl+V ctrl+@)

-E :在每行结束处显示 $

-T :将 TAB 字符显示为 ^I

-e :等价于"-vE"选项

-t :等价于"-vT"选项

-A : --show-all,等价于 -vET

案例:

[root@bd-offcn-01 opt]# cat -n test11.txt1  line 1234  line 25  line 3
[root@bd-offcn-01 opt]# cat -b test11.txt1  line 12  line 23  line 3
[root@bd-offcn-01 opt]# cat -s test11.txt
line 1line 2
line 3
[root@bd-offcn-01 opt]# cat -v test11.txt
line 1line 2
line 3^@
[root@bd-offcn-01 opt]# cat -E test11.txt
line 1  $
$
$
line 2$
line 3$
[root@bd-offcn-01 opt]# cat -T test11.txt
line 1^Iline 2
line 3
[root@bd-offcn-01 opt]# cat -e test11.txt
line 1  $
$
$
line 2$
line 3^@$
[root@bd-offcn-01 opt]# cat -t test11.txt
line 1^Iline 2
line 3^@
[root@bd-offcn-01 opt]# cat -A test11.txt
line 1^I$
$
$
line 2$
line 3^@$

(10)tac

基本语法:

语法

功能描述

tac + 文件

将文件内容倒序输出

(11)head

基本语法:

语法

功能描述

head + [选项] + 文件

从头开始显示文件内容,默认显示前10行

选项:

-c : 显示的字节数

-n : 显示的行数

(12)tail

基本语法:

语法

功能描述

tail + [选项] + 文件

倒序按行显示文件内容,默认显示后10行

选项:

-c : 倒序按字节显示的字节数

-n : 倒序按行显示的行数

-f : 实时追踪文档的更新内容

-F : 根据文件名字进行实时追踪,当文件改名或删除文件后,保持重试,当有新的文件和它同名时,继续追踪

tailf + [选项] + 文件

几乎等同于tail -f, 当文件改名之后它也能继续跟踪。与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件

案例:

[root@bd-offcn-01 test]# tail -c 10 vi测试数据.txt
line 500
[root@bd-offcn-01 test]# tail -n 2 vi测试数据.txt
this is line 499
this is line 500

(13)more

基本语法:

语法

功能描述

more + 文件

查看文件内容,一页一页的显示文件内容,并且显示当前查看文件的进度

功能使用说明

空白键 (space)或按Ctrl+F:向下翻一页

按Enter键:向下翻一行

按f键:向下翻两页 forward

按b键:向上翻一页 back

按=:输出当前行的行号

按v键:调用vi编辑器

输入/后面跟需要搜索的字符串,按回车进行搜索,按n匹配下一个字符串

按q键:离开more ,不再显示该文件内容

(14)less

基本语法:

语法

功能描述

less + 文件

使用与more比较类似,可查看文件内容,

功能使用说明:

按Enter键或向下键:代表向下翻一行

按y键或向上键:代表向上翻一行

按pagedown键或f键或空格键:向下翻动一页

按pageup键或b键:向上翻动一页

输入/后面跟需要搜索的字符串,按回车进行搜索,按n匹配下一个字符串按N匹配上一个字符串

输入?后面跟需要搜索的字符串,按回车进行搜索,按n匹配上一个字符串按N匹配下一个字符串

按v键:调用vi编辑器

按q键:离开less,不再显示该文件内容

(15)egrep

基本语法:

语法

功能描述

egrep + 字符串规则 + 文件或目录

在文件或目录中查找指定的字符串

   案例:

[root@bd-offcn-01 test]# egrep 99 测试数据.txtthis is line 99this is line 199this is line 299this is line 399this is line 499

(16)diff

基本语法:

语法

功能描述

diff + [选项] + 文件1 + 文件2

比较给定的两个文件的不同

选项:

-i :不检查大小写的不同

-y :并列的显示文件的异同之处

   案例:

[root@bd-offcn-01 test]# cat test1.txt
this is line 1
this is line 2
this is line 3
This is line 4
this is line 05
[root@bd-offcn-01 test]# cat test2.txt
this is line 1
my line 2
i love you
this is line 4
this is line 5
[root@bd-offcn-01 test]# diff -iy test1.txt test2.txt
this is line 1                                                  this is line 1
this is line 2                                                | my line 2
this is line 3                                                | i love you
This is line 4                                                  this is line 4
this is line 05                                               | this is line 5

(17)rm

基本语法:

语法

功能描述

rm + [选项] + 文件或目录

删除文件或目录

选项:

-r :删除目录以及其下的所有文件

-f :省略“是否删除”的确认询问

案例:

[root@bd-offcn-01 test]# ll
总用量 20
drwxr-xr-x. 2 root root    6 1月  31 09:35 data
-rw-r--r--. 1 root root    0 1月  31 09:36 test11.txt
-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt
-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt
-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt
[root@bd-offcn-01 test]# rm -f test11.txt
[root@bd-offcn-01 test]# ll
总用量 20
drwxr-xr-x. 2 root root    6 1月  31 09:35 data
-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt
-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt
-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt
[root@bd-offcn-01 test]# rm -rf data/
[root@bd-offcn-01 test]# ll
总用量 20
-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt
-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt
-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt

(18)rmdir

基本语法:

语法

功能描述

rmdir + 要删除的空目录

删除一个空目录

案例:

[root@bd-offcn-01 test]# ll
总用量 20
drwxr-xr-x. 3 root root   16 1月  31 16:30 d1
drwxr-xr-x. 2 root root    6 1月  31 16:30 data
-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt
-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt
[root@bd-offcn-01 test]# rmdir d1
rmdir: 删除 "d1" 失败: 目录非空
[root@bd-offcn-01 test]# rmdir data
[root@bd-offcn-01 test]# ll
总用量 20
drwxr-xr-x. 3 root root   16 1月  31 16:30 d1
-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt
-rw-r--r--. 1 root root 8892 1月  31 14:47 vi测试数据.txt

4、 时间日期类命令

基本语法:

语法

功能描述

date + 格式化字符串

显示当前日期

date -d + 参数 + [格式化字符串]

显示非当前日期

date -s + 时间格式字符串

设置系统时间

cal + [选项]

查看日历

选项:

-3 :查看近3月的日历

年份 :查看某年的全年的日历

hwclock

查看硬件时间

hwclock -s

将硬件时间写入到系统时间

ntpdate -u + 远程时间服务器地址

同步远程(网络)时间服务器的时间

   案例:

[root@bd-offcn-01 test]# date
2021年 02月 01日 星期一 09:16:51 CST
[root@bd-offcn-01 test]# date +"%Y-%m-%d"
2021-02-01
[root@bd-offcn-01 test]# date -d next-day +%Y%m%d
20210202
[root@bd-offcn-01 test]# date -d yesterday +%Y%m%d
20210131
[root@bd-offcn-01 test]# date -s "20210101"
2021年 01月 01日 星期五 00:00:00 CST[root@bd-offcn-01 test]# cal二月 2021
日 一 二 三 四 五 六1  2  3  4  5  67  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28
[root@bd-offcn-01 test]# cal -3一月 2021             二月 2021             三月 2021
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六1  2      1  2  3  4  5  6      1  2  3  4  5  63  4  5  6  7  8  9   7  8  9 10 11 12 13   7  8  9 10 11 12 13
10 11 12 13 14 15 16  14 15 16 17 18 19 20  14 15 16 17 18 19 20
17 18 19 20 21 22 23  21 22 23 24 25 26 27  21 22 23 24 25 26 27
24 25 26 27 28 29 30  28                    28 29 30 31
31
[root@bd-offcn-01 test]# cal 2022
#12个月的日历,此处省略输出结果…
[root@bd-offcn-01 test]# hwclock
2021年02月01日 星期一 09时19分33秒  -0.695238 秒
[root@bd-offcn-01 test]# hwclock -s
[root@bd-offcn-01 test]# date
2021年 02月 01日 星期一 09:19:49 CST
[root@bd-offcn-01 test]# ntpdate -u ntp.api.bz
1 Feb 09:30:03 ntpdate[41937]: adjust time server 114.118.7.161 offset -0.08740 sec

5、用户管理命令

(1)useradd

基本语法:

语法

功能描述

useradd + 用户名

添加新用户(前提是有权限)

案例:

[root@bd-offcn-01 ~]# useradd hadoop

(2)passwd

基本语法:

语法

功能描述

passwd + 用户名

设置用户密码

案例:

[root@bd-offcn-01 ~]# passwd hadoop

更改用户 hadoop 的密码 。

新的 密码:

无效的密码: 密码是一个回文

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

注意:在输入密码时,虽然你没看到输入,实际上已经在输入了,没提示而已

(3)id

基本语法:

语法

功能描述

id + 用户名

判断用户是否存在

案例:

[root@bd-offcn-01 ~]# id hadoop

uid=1001(hadoop) gid=1001(hadoop) 组=1001(hadoop)

(4)su

基本语法:

语法

功能描述

su + 用户名

切换用户,只能获得用户执行权限,不能获得环境变量

su - + 用户名

切换用户,获得该用户的执行权限和环境变量

案例:

[root@bd-offcn-01 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@bd-offcn-01 ~]# su hadoop

[hadoop@bd-offcn-01 root]$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[hadoop@bd-offcn-01 root]$ su - hadoop

密码:

上一次登录:一 2月  1 10:31:40 CST 2021pts/2 上

[hadoop@bd-offcn-01 ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoop/.local/bin:/home/hadoop/bin

(5)visudo

基本语法:

语法

功能描述

visudo

等价于vi /etc/sudoers,修改用户权限

案例:

[root@bd-offcn-01 ~]# visudo

## Sudoers allows particular users to run various commands as

## Allow root to run any commands anywhere

root    ALL=(ALL)     ALL

hadoop   ALL=(ALL)     ALL

(6)sudo

基本语法:

语法

功能描述

sudo + 命令

设置普通用户以root用户权限执行命令

案例:

[hadoop@bd-offcn-01 home]$ pwd

/home

[hadoop@bd-offcn-01 home]$ ll

总用量 1164

-rw-r--r--.  1 root   root   1186996 1月  28 09:56 app-2021-01-10.log

drwx------.  5 hadoop hadoop     128 2月   1 13:38 hadoop

drwx------. 15 offcn  offcn     4096 2月   1 13:39 offcn

[hadoop@bd-offcn-01 home]$ rm -rf app-2021-01-10.log

rm: 无法删除"app-2021-01-10.log": 权限不够

[hadoop@bd-offcn-01 home]$ sudo rm -rf app-2021-01-10.log

[sudo] hadoop 的密码:

配置成采用sudo命令时,不需要输入密码,则配置如下:

[root@bd-offcn-01 ~]# visudo

## Sudoers allows particular users to run various commands as

## Allow root to run any commands anywhere

root    ALL=(ALL)     ALL

hadoop   ALL=(ALL)   NOPASSWD:ALL

(7)usermod

基本语法:

语法

功能描述

usermod + 选项 + 参数

修改用户信息

选项:

-g :修改用户所属组

-l :修改用户名称

   案例:

# usermod -l 新用户名 旧用户名

[root@bd-offcn-01 ~]# usermod -l hadoop2 hadoop

[root@bd-offcn-01 ~]# ll /home/

总用量 1164

-rw-r--r--.  1 root    root   1186996 1月  28 09:56 app-2021-01-10.log

drwx------.  5 hadoop2 hadoop     128 2月   1 13:38 hadoop

drwx------. 15 offcn   offcn     4096 2月   1 13:39 offcn

[root@bd-offcn-01 ~]# id hadoop2

uid=1001(hadoop2) gid=1001(hadoop) 组=1001(hadoop)

# usermod -g 用户组 用户名

[root@bd-offcn-01 ~]# usermod -g offcn hadoop2

[root@bd-offcn-01 ~]# id hadoop2

uid=1001(hadoop2) gid=1000(offcn) 组=1000(offcn)

[root@bd-offcn-01 ~]# ll /home/

总用量 1164

-rw-r--r--.  1 root    root  1186996 1月  28 09:56 app-2021-01-10.log

drwx------.  5 hadoop2 offcn     128 2月   1 13:38 hadoop

drwx------. 15 offcn   offcn    4096 2月   1 13:39 offcn

(8)userdel

基本语法:

语法

功能描述

userdel + 用户名

删除用户但保存用户主目录

userdel -r + 用户名

删除用户以及对应的主目录

案例:

[root@bd-offcn-01 ~]# id tom
uid=1002(tom) gid=1002(tom) 组=1002(tom)
[root@bd-offcn-01 ~]# id hadoop2
uid=1001(hadoop2) gid=1000(offcn) 组=1000(offcn)
[root@bd-offcn-01 ~]# ll /home/
总用量 1164
drwx------.  5 hadoop2 offcn     128 2月   1 13:38 hadoop
drwx------. 15 offcn   offcn    4096 2月   1 13:39 offcn
drwx------.  3 tom     tom        78 2月   1 14:53 tom
[root@bd-offcn-01 ~]# userdel tom
[root@bd-offcn-01 ~]# id tom
id: tom: no such user
[root@bd-offcn-01 ~]# ll /home/
总用量 1164
drwx------.  5 hadoop2 offcn     128 2月   1 13:38 hadoop
drwx------. 15 offcn   offcn    4096 2月   1 13:39 offcn
drwx------.  3    1002  1002      78 2月   1 14:53 tom
[root@bd-offcn-01 ~]# userdel -r hadoop2
[root@bd-offcn-01 ~]# id hadoop2
id: hadoop2: no such user
[root@bd-offcn-01 ~]# ll /home/
总用量 1164
drwx------. 15 offcn offcn    4096 2月   1 13:39 offcn
drwx------.  3  1002  1002      78 2月   1 14:53 tom

(9)查看已创建的用户

[root@bd-offcn-01 ~]# cat /etc/passwd

6、用户组管理命令

(1)查看已创建用户组

[root@bd-offcn-01 home]# cat  /etc/group

offcn:x:1000:

hadoop:x:1001:

(2)groupadd

基本语法:

语法

功能描述

groupadd + 用户组名

创建一个新的工作组

案例:

[root@bd-offcn-01 home]# groupadd jerry

[root@bd-offcn-01 home]# cat  /etc/group

offcn:x:1000:

hadoop:x:1001:

jerry:x:1002:

(3)groupmod

基本语法:

语法

功能描述

groupmod -n + 新组名 + 旧组名

修改用户组名

案例:

[root@bd-offcn-01 home]# groupmod -n jerry2 jerry

[root@bd-offcn-01 home]# cat /etc/group

offcn:x:1000:

hadoop:x:1001:

jerry2:x:1002:

(4)groupdel

基本语法:

语法

功能描述

groupdel + 组名

删除组

案例:

[root@bd-offcn-01 home]# groupdel jerry2

[root@bd-offcn-01 home]# cat /etc/group

offcn:x:1000:

hadoop:x:1001:

7、文件权限类命令

(1)文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组。

例如:

[root@bd-offcn-01 test]# ll

总用量 20

drwxr-xr-x. 3 root root   16 1月  31 16:30 d1

-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt

-rw-r--r--. 1 root root   66 1月  31 15:44 test2.txt

从左到右的10个字符表示:

如果没有权限,就会出现减号[ - ]而已。从左至右用0-9这些数字来表示:

从左到右的10个字符表示:

如果没有权限,就会出现减号[ - ]而已。从左至右用0-9这些数字来表示:

  1. 第0位表示类型

字符

含义

-

代表文件

d

代表目录

c

字符流,串行端口设备,例如键盘、鼠标(一次性读取装置)

s

socket

p

管道

l

链接文档(link file)

b

设备文件,可供储存的接口设备(可随机存取装置)

  1. 第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User
  2. 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group
  3. 第7-9位确定其他用户拥有该文件的权限 ---Other

文件类型

属主权限

属组权限

其他用户权限

0

1    2    3

4    5    6

7    8    9

d

r    w    x

r    -    x

r    -    x

目录文件

读   写  执行

读   写  执行

读   写  执行

(2)文件权限

a. 作用到文件

权限

解读

r

代表可读(read): 可以读取,查看

w

代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。

x

代表可执行(execute):可以被系统执行

b. 作用到目录

权限

解读

r

代表可读,可以查看目录中的文件列表

w

代表可修改,可对目录内的文件进行创建、删除、移动等操作

x

代表可以进入该目录

案例:

  1. 如果是文件:链接数指的是硬链接个数。
  2. 如果是目录:链接数指的是子文件夹个数。

(3)chmod

a.字母方式改变权限

基本语法:

语法

功能描述

chmod + {ugoa}{+-=}{rwx} + 文件或目录

变更文件或目录的权限

u:所属主     g:所属组     o:其它用户       a:(all)代表ugo

+:增加权限       -:去掉权限       =:仅有某些权限

文件: r查看;w修改;x执行文件

目录: r列出目录内容;w在目录中创建和删除;x进入目录

   案例:

[root@bd-offcn-01 test]# ll
-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# chmod u+x test1.txt
[root@bd-offcn-01 test]# ll
-rwxr--r--. 1 root root   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# chmod u-x test1.txt
[root@bd-offcn-01 test]# ll
-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# chmod g=wx test1.txt
[root@bd-offcn-01 test]# ll
-rw--wxr--. 1 root root   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# chmod a-w test1.txt
[root@bd-offcn-01 test]# ll
-r----xr--. 1 root root   76 1月  31 16:02 test1.txt

b.数字方式改变权限

基本语法:

语法

功能描述

chmod + 十进制数字 + 文件或目录

变更文件或目录的权限

案例:

[root@bd-offcn-01 test]# ll

-rwxrw-r--. 1 root root   76 1月  31 16:02 test1.txt

[root@bd-offcn-01 test]# chmod 644 test1.txt

[root@bd-offcn-01 test]# ll

-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt

(4)chown

基本语法:

语法

功能描述

chown + 用户名 + 文件或目录

变更文件或目录的所有者

(只有root用户可操作)

chown + 用户名:用户组 + 文件或目录

变更文件或目录的所有者及所属组

chown -R + 用户名 + 目录

递归变更目录的所有者

chown -R + 用户名:用户组 + 目录

递归变更目录的所有者及所属组

案例:

[root@bd-offcn-01 test]# ll
drwxr-xr-x. 3 root root   16 1月  31 16:30 d1
-rw-r--r--. 1 root root   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# chown offcn test1.txt
[root@bd-offcn-01 test]# ll
drwxr-xr-x. 3 root  root   16 1月  31 16:30 d1
-rw-r--r--. 1 offcn root   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# chown offcn:offcn test1.txt
[root@bd-offcn-01 test]# ll
drwxr-xr-x. 3 root  root    16 1月  31 16:30 d1
-rw-r--r--. 1 offcn offcn   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# chown -R offcn d1
[root@bd-offcn-01 test]# ll
drwxr-xr-x. 3 offcn root    16 1月  31 16:30 d1
-rw-r--r--. 1 offcn offcn   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# ll d1/
drwxr-xr-x. 3 offcn root 16 1月  31 16:30 d2
[root@bd-offcn-01 test]# chown -R offcn:offcn d1
[root@bd-offcn-01 test]# ll
drwxr-xr-x. 3 offcn offcn   16 1月  31 16:30 d1
-rw-r--r--. 1 offcn offcn   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# ll d1/
drwxr-xr-x. 3 offcn offcn 16 1月  31 16:30 d2

(5)chgrp

基本语法:

语法

功能描述

chgrp + 用户组 + 文件或目录

改变文件或目录的所属组

案例:

[root@bd-offcn-01 test]# ll
-rw-r--r--. 1 offcn offcn   76 1月  31 16:02 test1.txt
[root@bd-offcn-01 test]# chgrp root test1.txt
[root@bd-offcn-01 test]# ll
-rw-r--r--. 1 offcn root    76 1月  31 16:02 test1.txt

8、系统监控类

(1)df

基本语法:

语法

功能描述

df + [选项]

列出文件系统的整体磁盘使用情况

选项:

-k :以 KBytes 的容量显示各文件系统(默认);

-m :以 MBytes 的容量显示各文件系统;

-h :即human,以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

-T :显示文件系统类型

案例:

[root@bd-offcn-01 test]# df
文件系统                    1K-块      已用      可用 已用% 挂载点
/dev/mapper/centos-root  36805060   5767540  31037520   16% /
devtmpfs                  1997092         0   1997092    0% /dev
tmpfs                     2014212         0   2014212    0% /dev/shm
tmpfs                     2014212     12872   2001340    1% /run
tmpfs                     2014212         0   2014212    0% /sys/fs/cgroup
/dev/sda1                 1038336    160428    877908   16% /boot
tmpfs                      402844         4    402840    1% /run/user/42
tmpfs                      402844        56    402788    1% /run/user/0
vmhgfs-fuse             314572796 141786252 172786544   46% /mnt/hgfs[root@bd-offcn-01 test]# df -m
文件系统                 1M-块   已用   可用 已用% 挂载点
/dev/mapper/centos-root  35943   5633  30311   16% /
devtmpfs                  1951      0   1951    0% /dev
tmpfs                     1968      0   1968    0% /dev/shm
tmpfs                     1968     13   1955    1% /run
tmpfs                     1968      0   1968    0% /sys/fs/cgroup
/dev/sda1                 1014    157    858   16% /boot
tmpfs                      394      1    394    1% /run/user/42
tmpfs                      394      1    394    1% /run/user/0
vmhgfs-fuse             307200 138464 168737   46% /mnt/hgfs[root@bd-offcn-01 test]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   36G  5.6G   30G   16% /
devtmpfs                 2.0G     0  2.0G    0% /dev
tmpfs                    2.0G     0  2.0G    0% /dev/shm
tmpfs                    2.0G   13M  2.0G    1% /run
tmpfs                    2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1               1014M  157M  858M   16% /boot
tmpfs                    394M  4.0K  394M    1% /run/user/42
tmpfs                    394M   56K  394M    1% /run/user/0
vmhgfs-fuse              300G  136G  165G   46% /mnt/hgfs[root@bd-offcn-01 test]# df -Th
文件系统                类型              容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs                36G  5.6G   30G   16% /
devtmpfs                devtmpfs          2.0G     0  2.0G    0% /dev
tmpfs                   tmpfs             2.0G     0  2.0G    0% /dev/shm
tmpfs                   tmpfs             2.0G   13M  2.0G    1% /run
tmpfs                   tmpfs             2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1               xfs              1014M  157M  858M   16% /boot
tmpfs                   tmpfs             394M  4.0K  394M    1% /run/user/42
tmpfs                   tmpfs             394M   56K  394M    1% /run/user/0
vmhgfs-fuse             fuse.vmhgfs-fuse  300G  136G  165G   46% /mnt/hgfs

(2)du

基本语法:

语法

功能描述

du + [选项] + [文件或目录]

用于显示目录或文件的大小

选项:

-b : 显示目录或文件大小时,以byte为单位;

-k :以1KB为单位;

-m :以1MB为单位;

-h :以K,M,G为单位,提高信息的可读性;

-s :仅显示总计

案例:

[root@bd-offcn-01 ~]# du -b jdk-8u144-linux-x64.tar.gz185515842  jdk-8u144-linux-x64.tar.gz[root@bd-offcn-01 ~]# du -k jdk-8u144-linux-x64.tar.gz181168 jdk-8u144-linux-x64.tar.gz[root@bd-offcn-01 ~]# du -m jdk-8u144-linux-x64.tar.gz177 jdk-8u144-linux-x64.tar.gz[root@bd-offcn-01 ~]# du -h jdk-8u144-linux-x64.tar.gz177M   jdk-8u144-linux-x64.tar.gz[root@bd-offcn-01 ~]# du -s jdk-8u144-linux-x64.tar.gz181168 jdk-8u144-linux-x64.tar.gz[root@bd-offcn-01 ~]#[root@bd-offcn-01 ~]# du -s -h /home/5.4M   /home/[root@bd-offcn-01 ~]# du -s -h /usr/*142M   /usr/bin0   /usr/etc0   /usr/games14M /usr/include1.2G   /usr/lib1.1G   /usr/lib64110M   /usr/libexec4.0K   /usr/local63M /usr/sbin1.3G   /usr/share60M /usr/src0   /usr/tmp

(3)iostat

iostat命令是I/O statistics(输入/输出统计)的缩写,主要用于监控并统计系统设备的IO负载情况及CPU负载情况,仅对系统的整体情况进行分析,不能对某个进程进行深入分析。主要用它来检查哪个设备有问题,哪个设备io有问题,用户可以通过指定统计的次数和时间来获得所需的统计信息。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。

基本语法:

语法

功能描述

iostat + [选项]

用于监控磁盘IO及CPU的负载情况

选项:

-d :只显示磁盘使用情况;

-c :只显示CPU使用情况;

-k :以 KB 为单位显示
-m :以 MB 为单位显示

-t :显示统计的时间

-x :显示详细信息;

-N :显示磁盘名称;

-p :显示每个磁盘的详细信息,比如sda这个磁盘分了两个区,都要让它显示出来

数字n1 + 数字n2 :每隔n1秒统计一次,共统计n2次

案例:

[root@bd-offcn-01 test]# iostat
Linux 3.10.0-862.el7.x86_64 (bd-offcn-01)       2021年02月22日  _x86_64_        (2 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle1.19    0.01    5.96    0.00    0.00   92.83Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00         84          0
sda               0.46        10.85        11.63    2322489    2489371
dm-0              0.48        10.80        11.62    2311839    2487139
dm-1              0.00         0.01         0.00       2256         44[root@bd-offcn-01 test]# iostat -d
Linux 3.10.0-862.el7.x86_64 (bd-offcn-01)       2021年02月22日  _x86_64_        (2 CPU)Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00         84          0
sda               0.46        10.85        11.63    2322489    2489371
dm-0              0.48        10.80        11.62    2311839    2487139
dm-1              0.00         0.01         0.00       2256         44[root@bd-offcn-01 test]# iostat -c
Linux 3.10.0-862.el7.x86_64 (bd-offcn-01)       2021年02月22日  _x86_64_        (2 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle1.19    0.01    5.96    0.00    0.00   92.83[root@bd-offcn-01 test]# iostat -d -m
Linux 3.10.0-862.el7.x86_64 (bd-offcn-01)       2021年02月22日  _x86_64_        (2 CPU)Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
scd0              0.00         0.00         0.00          0          0
sda               0.46         0.01         0.01       2268       2431
dm-0              0.48         0.01         0.01       2257       2428
dm-1              0.00         0.00         0.00          2          0[root@bd-offcn-01 test]# iostat  -t
Linux 3.10.0-862.el7.x86_64 (bd-offcn-01)       2021年02月22日  _x86_64_        (2 CPU)2021年02月22日 09时51分16秒
avg-cpu:  %user   %nice %system %iowait  %steal   %idle1.19    0.01    5.96    0.00    0.00   92.83Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00         84          0
sda               0.46        10.84        11.62    2322489    2489500
dm-0              0.48        10.79        11.61    2311839    2487268
dm-1              0.00         0.01         0.00       2256         44

解析:

结果分为两部分:cpu统计信息、设备统计信息。

%user:用户模式下所花费CPU时间的百分比,合理值为<60%

%nice:用户进程改变过优先级的进程占用CPU时间的百分比

%system:内核进程所花费的CPU时间的百分比,合理值为%user+%system <80%

%iowait:IO等待所占用的CPU时间的百分比(重要),合理值为<30%(不同功能的服务器不同,比如邮件服务器会比该值要大)

%steal:丢失时间占用CPU时间的百分比

一般来说%idle持续游走在20%以下,说明CPU繁忙,空闲太少,瓶颈出现在CPU的性能层面。

%iowait高而%idle 在70%以上,说明cpu不忙,但是数据还在等待读写,瓶颈出现在IO设备层面,也就是磁盘有问题。

Device:设备名称,这里还有个dm,它是disk mapper的缩写,可以在/dev/mapper下查对应关系,或者使用iostat -N 直接显示出磁盘分区对应关系。

tps:设备每秒接受的I/O传输请求tps = transfers per second

kB_read/s设备每秒读取的数据量(KB),参数-m可以换成MB

kB_wrtnls设备每秒写入的数据量(KB),参数-m可以换成MB

kB_read设备读取的总数据量

kB_wrtn设备写入的总数据量

直接输入iostat命令统计的是自系统启动以来的数据,而不是此时此刻的数据,要想统计近实时的结果,可以采用类似如下命令

iostat 2 3:每隔2秒统计一次,总共统计3次,第一次的结果是自系统启动以来的统计,我们看得是包括第二次及以后的统计。为了实现更准确的结果,也可以把统计的间隔设置的大一点,例如每隔10s统计一下,iostat 10 3

[root@bd-offcn-01 test]# iostat 2 3
Linux 3.10.0-862.el7.x86_64 (bd-offcn-01)       2021年02月22日  _x86_64_        (2 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle1.19    0.01    5.97    0.00    0.00   92.82Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00         84          0
sda               0.46        10.81        11.59    2322489    2489606
dm-0              0.48        10.77        11.58    2311839    2487374
dm-1              0.00         0.01         0.00       2256         44avg-cpu:  %user   %nice %system %iowait  %steal   %idle3.79    0.00    8.08    0.00    0.00   88.13Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00          0          0
sda               0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0
dm-1              0.00         0.00         0.00          0          0avg-cpu:  %user   %nice %system %iowait  %steal   %idle3.29    0.00    8.35    0.00    0.00   88.35Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00          0          0
sda               0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0
dm-1              0.00         0.00         0.00          0          0

上边我们得出了各种参数,可以根据这些参数,判断此时系统的io负载,是不是超过了经验值,下表给出了大多数机械硬盘不同驱动器、不同block大小的极限值,此处的r是指随机读写,如果超过了这些值则认为系统io负载过重,需要优化io读写。

例如,我们的磁盘是SATA/7200,格式化时block是512字节,此时的tps极限值区间为47-63,如果根据iostat得出的tps是80,则此时磁盘承受的读写太重了,需要降低读写频率,或者我们根据iostat得出的读速率是50M/s,写速率是20M/s,那么读写总共70M/s,则明显超过了吞吐量24.3-32.1的范围,那么也能够说明,读写过重了。

(4)free

基本语法:

语法

功能描述

free + [选项]

用于输出显示系统中内存的使用情况

选项:

-b :以字节为存储单位对当前的内存使用情况输出

-k :以KB为存储单位对当前的内存使用情况输出

-m :以MB为存储单位对当前的内存使用情况输出

-g :以GB为存储单位对当前的内存使用情况输出

-h :以人类可读的方式输出

-s :指定以秒为时间单位,持续输出当前系统内存的使用状况,直到按下ctrl+c停止输出。

-t :输出物理内存加上虚拟内存的总和

案例:

[root@bd-offcn-01 ~]# freetotal        used        free      shared  buff/cache   available
Mem:        4026164      577016     2970852       12672      478296     3122160
Swap:       4063228           0     4063228[root@bd-offcn-01 ~]#  free -mtotal        used        free      shared  buff/cache   available
Mem:           3931         563        2901          12         467        3049
Swap:          3967           0        3967[root@bd-offcn-01 ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           3.8G        563M        2.8G         12M        467M        3.0G
Swap:          3.9G          0B        3.9G

解析:
Mem 行(第二行)是物理内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列:显示系统总的可用物理内存和交换空间大小。
used 列:显示已经被使用的物理内存和交换空间。
free 列:显示还有多少物理内存和交换空间可用使用。
shared 列:显示被共享使用的物理内存大小,在linux里面有很多共享内存,比如一个libc库,很多程序调用,但实际只存一份。
buff/cache 列:显示被 buffer 和 cache 使用的物理内存大小,即buff/cache的意思是 buffer 和 cache之和。
available 列:显示还可以被应用程序使用的物理内存大小。

关系:

total = used + free + buff/cache

available = free + buff/cache

其实 free 命令中输出的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观。

[root@bd-offcn-01 ~]#  cat /proc/meminfo
MemTotal:        4026164 kB
MemFree:         2971140 kB
MemAvailable:    3122476 kB
Buffers:            3572 kB
Cached:           329624 kB
SwapCached:            0 kB
Active:           343248 kB
Inactive:         282788 kB
Active(anon):     294052 kB
Inactive(anon):    11456 kB
Active(file):      49196 kB
Inactive(file):   271332 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4063228 kB
SwapFree:        4063228 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        292892 kB
Mapped:            95228 kB
Shmem:             12672 kB
Slab:             145060 kB
SReclaimable:      71648 kB
SUnreclaim:        73412 kB

buffer/cache:buff/cache的意思是 buffer 和 cache之和。

buffer 指 Linux 内存的:Buffer cache,翻译为缓冲区缓存。

cache 指 Linux 内存的:Page cache,翻译为页面缓存。

buffer:解决写的效率问题

A buffer is something that has yet to be "written" to disk.翻译过来就是:buffer是尚未“写入”到磁盘的东西。buffer是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。buffer将数据缓冲下来,解决速度慢和快的交接问题;速度快的需要通过缓冲区将数据一点一点传给速度慢的区域。例如:从内存中将数据往硬盘中写入,并不是直接写入,而是缓冲到一定大小之后刷入硬盘中。

cache:解决读的效率问题

A cache is something that has been "read" from the disk and stored for later use.翻译过来就是:cache就是从磁盘读取数据然后存起来方便以后使用。cache实现数据的重复使用,速度慢的设备需要通过缓存将经常要用到的数据缓存起来,缓存下来的数据可以提供高速的传输速度给速度快的设备。例如:将硬盘中的数据读取出来放在内存的缓存区中,这样以后再次访问同一个资源,速度会快很多。

free与available

在 free 命令的输出中,有一个 free 列,同时还有一个 available 列。这二者到底有何区别?

free 是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available  = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。

交换空间(swap space)

swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。

如何回收 cache ?

Linux 内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。一般情况下,这个操作中主要的内存释放都来自于对 buffer /cache 的释放。尤其是被使用更多的 cache 空间。既然它主要用来做缓存,只是在内存够用的时候加快进程对文件的读写速度,那么在内存压力较大的情况下,当然有必要清空释放 cache ,作为 free 空间分给相关进程使用。所以一般情况下,我们认为 buffer/cache 空间可以被释放,这个理解是正确的。

但是这种清缓存的工作也并不是没有成本。理解 cache 是干什么的就可以明白清缓存必须保证 cache 中的数据跟对应文件中的数据一致,才能对 cache 进行释放。所以伴随着 cache 清除的行为的,一般都是系统 IO 飙高。因为内核要对比 cache 中的数据和对应硬盘文件上的数据是否一致,如果不一致需要写回,之后才能回收。

在系统中除了内存将被耗尽的时候可以清缓存以外,我们还可以使用下面这个文件来人工触发缓存清除的操作:

清除 pagecache:

[root@bd-offcn-01 ~]# echo 1 > /proc/sys/vm/drop_caches

清除slab 分配器中的对象(包括dentries目录项缓存和 inode文件项缓存)。 为了直接获得列表,操作系统可以去dentries目录缓存和inode文件缓存中读取某个目录下的文件列表。如果没有,则会去磁盘上将其读入内存,以便可以重复使用:

[root@bd-offcn-01 ~]# echo 2 > /proc/sys/vm/drop_caches

清除所有(pagecache 和 slab 分配器中)的缓存对象:

[root@bd-offcn-01 ~]# echo 3 > /proc/sys/vm/drop_caches

(5)fdisk

基本语法:

语法

功能描述

fdisk + 选项

用于查看磁盘分区详情

选项:

-l :列出分区表;

案例:

[root@bd-offcn-01 ~]# fdisk -l
磁盘 /dev/sda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0001be6b设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM磁盘 /dev/mapper/centos-root:48.4 GB, 48444211200 字节,94617600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Device:分区序列
Boot:引导
Start:从X磁柱开始
End:到Y磁柱结束
Blocks:容量
Id:分区类型ID
System:分区类型

(6)mount

如果Linux外接了多个磁盘,比如插入了U盘,或者光驱,此时它并不是Linux文件系统的一部分,必须通过一种叫做“挂载”的操作,让该磁盘变为Linux文件系统的一部分才能够使用。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。

挂载前准备(必须要有光盘或者已经连接镜像文件)

基本语法:

语法

功能描述

mount + [选项] + [参数]

让外部设备(如外部磁盘)变为Linux文件系统的一部分

使用说明:

mount [-t vfstype] [-o options] device dir

a)        -t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。

常用类型有:

光盘或光盘镜像:iso9660

DOS fat16文件系统:msdos

Windows 9x fat32文件系统:vfat

Windows NT ntfs文件系统:ntfs

Mount Windows文件网络共享:smbfs

UNIX(LINUX) 文件网络共享:nfs

b)        -o options 主要用来描述设备或档案的挂接方式。常用的参数有:

loop:用来把一个文件当成硬盘分区挂接上系统

ro:采用只读方式挂接设备

rw:采用读写方式挂接设备

iocharset:指定访问文件系统所用字符集

c)        device 要挂接(mount)的设备

d)        dir设备在系统上的挂接点(mount point)

案例:

先创建要挂载的目录,然后将光驱挂载到该目录。

[root@bd-offcn-01 ~]# mkdir /mnt/mycdrom
[root@bd-offcn-01 ~]# mount -t iso9660 -o ro /dev/sr0 /mnt/mycdrom/
[root@bd-offcn-01 ~]# ls /mnt/mycdrom/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

(7)umount

基本语法:

语法

功能描述

mount + 路径

用于卸载已经加载的文件系统

案例:

[root@bd-offcn-01 ~]# umount /dev/sr0 或者umount /mnt/mycdrom

卸载时,如果该目录正在被使用,可能无法卸载,可以通过fuser命令找到占用该目录的进程,将其kill,再进行卸载,下边3475是指占用该目录的进程id,c代表目录正在被占用,除了c之外,还有其他含义:

* c: current directory.

* e: executable being run.

* f: open file. f is omitted in default display mode.

* F: open file for writing. F is omitted in default display mode.

* r: root directory.

* m: mmap'ed file or shared library.

(8)mkfs

基本语法:

语法

功能描述

mkfs + 选项 + 参数

用于在设备上(通常为硬盘)创建Linux文件系统

将Linux关机,添加一块硬盘

[root@bd-offcn-01 ~]# poweroff

添加完毕之后,将Linux开机,开机后,可以看到多出一块硬盘

接下来,按照如下步骤创建硬盘信息

  1. 输入命令:fdisk /dev/sdb
  2. 按n添加分区,选p(主分区);
  3. 选1,也就是sdb1;
  4. 然后就是空间划分,一路回车。默认是使用整个磁盘空间。
  5. 然后按w写入分区信息

格式化磁盘

[root@bd-offcn-01 ~]# mkfs -t ext3 /dev/sdb1

创建需要mount的目录,并将新磁盘挂载到该目录

[root@bd-offcn-01 ~]# mkdir -p /mnt/myseconddisk

[root@bd-offcn-01 ~]# mount /dev/sdb1 /mnt/myseconddisk  -o rw

如果需要每次启动加载,在/etc/fstab文件最后一行添加

/dev/sdb1 /mnt/myseconddisk ext3 defaults 0 0

9、搜索查找类命令

(1)find

基本语法:

语法

功能描述

find + 选项 + 参数

在指定目录下查找文件

选项:

-name + filename :查找名为filename的文件

-user + username :按文件属主来查找

-group + groupname :按组来查找

-type b/d/c/p/l/f :查是块设备、目录、字符设备、管道、链接、普通文件

-size + n[c] :查长度为n块[或n字节]的文件

案例:

按名称查找:查找/root目录以及子目录下包含cf的文件

[root@bd-offcn-01 ~]# find /root/ -name '*cf*'

查找当前目录以及子目录下以.cfg为后缀的文件

[root@bd-offcn-01 ~]# find . -name '*.cfg'

按用户名查找

[root@bd-offcn-01 ~]# touch aa.txt

[root@bd-offcn-01 ~]# chown -R offcn:root aa.txt

查找当前目录以及子目录属主为offcn的文件

[root@bd-offcn-01 ~]# find . -user offcn

按组名查找

查找当前目录以及子目录属组为root的文件

[root@bd-offcn-01 ~]# find . -group root

按文件类型查找

查找/root目录以及子目录的普通文件

[root@bd-offcn-01 ~]# find /root/ -type f

查找/dev目录以及子目录的块设备

[root@bd-offcn-01 ~]# find /dev -type b

查找/dev目录以及子目录的链接

[root@bd-offcn-01 ~]# find /dev -type l

查找/dev目录以及子目录的目录

[root@bd-offcn-01 ~]# find /mnt -type d

按文件大小查找

查找/root目录及子目录下大于150M的文件,等于用=,小于用-,也可更改大小的单位,比如K,

[root@bd-offcn-01 ~]# find /root/ -size -150M

(2)locate

该命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

基本语法:

语法

功能描述

locate + 文件名称

从Linux自带的数据库中查找文件

案例:

[root@bd-offcn-01 ~]# locate anaconda-ks.cfg

/root/anaconda-ks.cfg

[root@bd-offcn-01 ~]# touch bb.txt

[root@bd-offcn-01 ~]# locate bb.txt

[root@bd-offcn-01 ~]# updatedb

[root@bd-offcn-01 ~]# locate bb.txt

/root/bb.txt

查找包含txt的文件和目录

[root@bd-offcn-01 ~]# locate   txt

(3)grep

该命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,它通常配合管道符一块使用。

管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

基本语法:

语法

功能描述

grep + [选项] + [参数]

在文本中根据条件按行匹配查找内容

选项:

-c :显示有多少行被匹配到

-n :显示行号

-i :忽略大小写

-v :反向搜索,即不显示要搜索的东西

案例:

[root@bd-offcn-01 ~]# ll | grep txt
-rw-r--r--. 1 offcn root         0 1月  28 20:19 aa.txt
-rw-r--r--. 1 root  root         0 1月  28 20:39 bb.txt[root@bd-offcn-01 ~]# ll | grep -n txt
2:-rw-r--r--. 1 offcn root         0 1月  28 20:19 aa.txt
4:-rw-r--r--. 1 root  root         0 1月  28 20:39 bb.txt[root@bd-offcn-01 ~]# ll | grep  TXT
[root@bd-offcn-01 ~]# ll | grep -i TXT
-rw-r--r--. 1 offcn root         0 1月  28 20:19 aa.txt
-rw-r--r--. 1 root  root         0 1月  28 20:39 bb.txt[root@bd-offcn-01 ~]# ll | grep -v txt
总用量 181176
-rw-------. 1 root  root      1709 1月  27 14:31 anaconda-ks.cfg
drwxr-xr-x. 2 root  root         6 1月  28 20:02 df
drwxr-xr-x. 2 root  root        21 1月  28 19:45 haha
-rw-r--r--. 1 root  root      1740 1月  27 14:34 initial-setup-ks.cfg
-rw-r--r--. 1 root  root 185515842 8月  19 2017 jdk-8u144-linux-x64.tar.gz
drwxr-xr-x. 2 root  root         6 1月  27 14:35 公共
drwxr-xr-x. 2 root  root         6 1月  27 14:35 模板
drwxr-xr-x. 2 root  root         6 1月  27 14:35 视频
drwxr-xr-x. 2 root  root         6 1月  27 14:35 图片
drwxr-xr-x. 2 root  root         6 1月  27 14:35 文档
drwxr-xr-x. 2 root  root         6 1月  27 14:35 下载
drwxr-xr-x. 2 root  root         6 1月  27 14:35 音乐
drwxr-xr-x. 3 root  root        77 1月  27 17:02 桌面

(4)which

基本语法:

语法

功能描述

which + 命令

查找并显示某个系统命令是否存在,以及显示给定命令的绝对路径

案例:

[root@bd-offcn-01 ~]# which date

/usr/bin/date

[root@bd-offcn-01 ~]# which ls

alias ls='ls --color=auto'

/usr/bin/ls

(5)whereis

用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。如果省略选项,则返回所有信息。

基本语法:

语法

功能描述

where + [选项] + [参数]

用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。如果省略选项,则返回所有信息。

选项:

-b :搜索二进制文件

-m :搜索man说明文件

-s :搜索源代码文件

案例:

[root@bd-offcn-01 ~]# whereis python

python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz

[root@bd-offcn-01 ~]# whereis -b python

python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7

[root@bd-offcn-01 ~]# whereis -m python

python: /usr/share/man/man1/python.1.gz

[root@bd-offcn-01 ~]# whereis -s python

10、进程线程类命令

(1)ps

即process status,用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。

基本语法:

语法

功能描述

ps + [选项]

查看当前系统的进程状态

选项:

-a :显示现行终端机下的所有程序,包括其他用户的程序。

-u :以用户为主的格式来显示程序状况。

-x  :显示所有程序,不以终端机来区分。

案例:

[root@bd-offcn-01 ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 194164  7216 ?        Ss   1月28   0:03 /usr/lib/systemd/systemd --switched-
root          2  0.0  0.0      0     0 ?        S    1月28   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    1月28   0:02 [kworker/0:0]
root          4  0.0  0.0      0     0 ?        S<   1月28   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    1月28   0:00 [ksoftirqd/0]
root          7  0.0  0.0      0     0 ?        S    1月28   0:06 [migration/0]

解析:

USER:该进程是由哪个用户产生的

PID:进程的ID号

%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源

%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ:该进程占用虚拟内存的大小,单位KB

RSS:该进程占用实际物理内存的大小,单位KB

TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。

STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台

START:该进程的启动时间

TIME:该进程占用CPU的运算时间,注意不是系统时间

COMMAND:产生此进程的命令名

另外,也可以使用ps -ef,

那么ps -ef 和ps -aux 有什么区别呢?

其实区别不是很大,这就要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。目前大部分Linux系统都是支持使用这两种方式。

[root@bd-offcn-01 ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 1月28 ?       00:00:03 /usr/lib/systemd/systemd --switched-root --system --d
root          2      0  0 1月28 ?       00:00:00 [kthreadd]
root          3      2  0 1月28 ?       00:00:02 [kworker/0:0]
root          4      2  0 1月28 ?       00:00:00 [kworker/0:0H]
root          6      2  0 1月28 ?       00:00:00 [ksoftirqd/0]
root          7      2  0 1月28 ?       00:00:06 [migration/0]
root          8      2  0 1月28 ?       00:00:00 [rcu_bh]

(2)pstree

基本语法:

语法

功能描述

pstree + [选项]

以树状图的方式比较直观的展现进程之间的派生关系

选项:

-p :显示进程的PID

-u :显示进程的所属用户

案例:

[root@bd-offcn-01 ~]# pstree -u

[root@bd-offcn-01 ~]# pstree -p

(3)top

可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

基本语法:

语法

功能描述

top + [选项]

实时动态地查看系统的整体运行情况选项:

-d + 秒数 :指定top命令每隔几秒更新。默认是3秒。

-i :使top不显示任何闲置或者僵死进程。

-p :通过指定监控进程ID来仅仅监控某个进程的状态。

按键操作:

P :以CPU使用率排序,默认就是此项

M :以内存的使用率排序

N :以PID排序

q :退出top

R :按某列颠倒顺序排序

案例:

[root@bd-offcn-01 ~]# top
top - 13:52:47 up 18:26,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 214 total,   1 running, 213 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4026164 total,  2774228 free,   579048 used,   672888 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  3117360 avail Mem PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                          839 root      20   0  246628   6656   5184 S   0.3  0.2   0:45.76 vmtoolsd                         1 root      20   0  194164   7216   4152 S   0.0  0.2   0:03.77 systemd                          2 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kthreadd                         3 root      20   0       0      0      0 S   0.0  0.0   0:02.66 kworker/0:0                      4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                     6 root      20   0       0      0      0 S   0.0  0.0   0:00.38 ksoftirqd/0                      7 root      rt   0       0      0      0 S   0.0  0.0   0:06.83 migration/0                      8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                           9 root      20   0       0      0      0 S   0.0  0.0   0:02.50 rcu_sched                        10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.19 watchdog/0     [root@bd-offcn-01 ~]#  top -d 1
[root@bd-offcn-01 ~]#  top -i
[root@bd-offcn-01 ~]#  top -p 2575

解析:

第一行信息为任务队列信息

内容

说明

12:26:46

系统当前时间

up 1 day, 13:32

系统的运行时间,本机已经运行1天

13小时32分钟

2 users

当前登录了两个用户

load  average:  0.00, 0.00, 0.00

系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。

第二行为进程信息

Tasks:  95 total

系统中的进程总数

1 running

正在运行的进程数

94 sleeping

睡眠的进程

0 stopped

正在停止的进程

0 zombie

僵尸进程。如果不是0,需要手工检

查僵尸进程

第三行为CPU信息

Cpu(s):  0.1%us

用户模式占用的CPU百分比

0.1%sy

系统模式占用的CPU百分比

0.0%ni

改变过优先级的用户进程占用的CPU百分比

99.7%id

空闲CPU的CPU百分比

0.1%wa

等待输入/输出的进程的占用CPU百分比

0.0%hi

硬中断请求服务占用的CPU百分比

0.1%si

软中断请求服务占用的CPU百分比

0.0%st

st(Steal  time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。

第四行为物理内存信息

Mem:    625344k total

物理内存的总量,单位KB

571504k used

已经使用的物理内存数量

53840k free

空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了

65800k buffers

作为缓冲的内存数量

第五行为交换分区(swap)信息

Swap:   524280k total

交换分区(虚拟内存)的总大小

0k used

已经使用的交互分区的大小

524280k free

空闲交换分区的大小

409280k cached

作为缓存的交互分区的大小

(4)netstat

基本语法:

语法

功能描述

netstat + [选项]

显示Linux中网络系统的状态信息

选项:

-a :显示所有通信状态的进程

-n :以数字化的方式显示

-p :显示pid

-t :显示tcp协议通信的进程

-l :显示listen状态的进程

案例:
[root@bd-offcn-01 ~]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      801/rpcbind
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1757/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1423/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1429/cupsd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1660/master
tcp        0      0 192.168.168.111:22      192.168.168.1:8586      ESTABLISHED 2168/sshd: root@pts
tcp        0     52 192.168.168.111:22      192.168.168.1:8942      ESTABLISHED 2378/sshd: root@pts [root@bd-offcn-01 ~]# netstat -nltp|grep 22
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1757/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1423/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1423/sshd

(5)kill 

基本语法:

语法

功能描述

kill + [选项] + 参数

停止执行中的程序或工作

选项:

-9 :表示强迫进程立即停止

案例:

启动firefox浏览器程序,找到其pid,并将该程序停掉。

[root@bd-offcn-01 ~]# ps -ef |grep firefox

root      15277  14281 19 14:17 ?        00:00:02 /usr/lib64/firefox/firefox

root      15355  15277  4 14:17 ?        00:00:00 /usr/lib64/firefox/plugin-container -greomni /usr/lib64/firefox/omni.ja -appomni /usr/lib64/firefox/browser/omni.ja -appdir /usr/lib64/firefox/browser 15277 tab

root      15422   2388  0 14:17 pts/1    00:00:00 grep --color=auto firefox

[root@bd-offcn-01 ~]# kill -9 15277

11、压缩和解压类命令

(1)gzip/gunzip压缩

基本语法:

语法

功能描述

gzip + 文件

压缩文件,只能将文件压缩为*.gz文件,执行后,原来文件消失,生成压缩文件

gunzip + 文件.gz

解压缩文件命令,执行后,压缩文件消失,生成解压后的文件

特点:

(1)只能压缩文件不能压缩目录

(2)不保留原来的文件

案例:

gzip压缩

[root@bd-offcn-01 ~]# cd /opt/
[root@bd-offcn-01 opt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 9月   7 2017 rh
[root@bd-offcn-01 opt]# touch test.java
[root@bd-offcn-01 opt]# ls
rh  test.java
[root@bd-offcn-01 opt]# gzip test.java
[root@bd-offcn-01 opt]# ll
总用量 4
drwxr-xr-x. 2 root root  6 9月   7 2017 rh
-rw-r--r--. 1 root root 30 1月  29 14:43 test.java.gz

gunzip解压缩文件

[root@bd-offcn-01 opt]# gunzip test.java.gz
[root@bd-offcn-01 opt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 9月   7 2017 rh
-rw-r--r--. 1 root root 0 1月  29 14:43 test.java

(2)zip/unzip

基本语法:

语法

功能描述

zip + [选项] + 参数

压缩文件或目录,压缩后会另外产生具有“.zip”扩展名的压缩文件,会保留原来的文件

选项:

-r :压缩目录

unzip + 文件 + [选项] + [参数]

解压缩文件或目录,执行后,会保留原来的文件

选项:

-d + 路径 :解压到指定路径下

案例:

压缩

[root@bd-offcn-01 opt]# touch 1.txt 2.txt
[root@bd-offcn-01 opt]# mkdir test
[root@bd-offcn-01 opt]# touch test/3.txt
[root@bd-offcn-01 opt]# zip -r my.zip 1.txt  2.txt  testadding: 1.txt (stored 0%)adding: 2.txt (stored 0%)adding: test/ (stored 0%)adding: test/3.txt (stored 0%)

解压

[root@bd-offcn-01 opt]# unzip my.zip

-d参数指定解压到/tmp目录,如果目标目录存在相同文件,则会提示输入相应字母进行相关操作。

输入y,替换当前文件,

输入n,不替换当前文件,

输入A,全部替换,

输入N,全不替换,

输入r,对当前文件重命名

[root@bd-offcn-01 opt]# unzip my.zip -d /tmp/
Archive:  my.zip
replace /tmp/1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: Aextracting: /tmp/1.txt              extracting: /tmp/2.txt              extracting: /tmp/test/3.txt

(3)tar

基本语法:

语法

功能描述

tar + 选项 + 参数

为linux的文件或目录创建压缩包

选项:

-c :产生.tar打包文件 create

-v :显示详细信息 verbose

-f :指定压缩后的文件名 filename

-z :打包同时压缩

-x :解包.tar文件

案例:

将1.txt 2.txt my.zip test压缩到my.tar.gz

[root@bd-offcn-01 opt]# tar -zcvf my.tar.gz 1.txt 2.txt my.zip test

将my.tar.gz解压到当前目录

[root@bd-offcn-01 opt]# tar -zxvf my.tar.gz

加-C参数指定解压到/tmp目录

[root@bd-offcn-01 opt]# tar -zxvf my.tar.gz -C /tmp/

12、后台服务管理类命令

(1)service(centos6旧命令)

基本语法:

语法

功能描述

service + 服务名 + 指令

用来临时启动、停止、重新启动和关闭系统服务,以及显示系统服务的当前状态。

使用:

service 服务名 start :开启服务

service 服务名 stop  :关闭服务

service 服务名 restart :重新启动服务

service  服务名 status :查看服务状态

案例:

查看防火墙服务状态

[root@bd-offcn-01 ~]# service firewalld status

关闭防火墙服务

[root@bd-offcn-01 ~]# service firewalld stop

启动防火墙服务

[root@bd-offcn-01 ~]# service firewalld start

重启防火墙服务

[root@bd-offcn-01 ~]# service firewalld restart

(2)chkconfig(centos6旧命令)

基本语法:

语法

功能描述

chkconfig + 服务名 + 指令

检查、设置系统的各种服务自启状态

使用:

chkconfig :查看所有服务器自启配置

chkconfig 服务名 off :关掉指定服务的自动启动

chkconfig 服务名 on :开启指定服务的自动启动

chkconfig 服务名 --list :查看服务开机启动状态

案例:(centos6 可用,centos7不可用)

查看防火墙服务的开机自启状态

[root@bd-offcn-01 ~]# chkconfig iptables --list

设置防火墙服务开机自启

[root@bd-offcn-01 ~]# chkconfig iptables on

设置防火墙服务开机不自启

[root@bd-offcn-01 ~]# chkconfig iptables off

以下是在centos7上执行有关防火墙的开机自启设置

查看防火墙服务的开机自启状态,centos7无法使用chkconfig iptables --list命令,用 systemctl is-enabled firewalld代替。CentOS 7默认的防火墙是firewalld,不是iptables。如果想使用iptables,首先应该停用默认的firewalld,然后安装iptables服务,并且开启80端口、3306端口等。

[root@bd-offcn-01 ~]#  systemctl is-enabled firewalld

设置防火墙服务开机自启

[root@bd-offcn-01 ~]# chkconfig firewalld on

设置防火墙服务开机不自启

[root@bd-offcn-01 ~]# chkconfig firewalld off

(3)systemctl(centos7新命令)

基本语法:

语法

功能描述

systemctl + 指令 + 服务名

系统服务管理器指令,将service和chkconfig这两个命令组合到一起。既能临时启停服务,也能设置开机自启。

使用:

systemctl start   服务名 :开启服务

systemctle stop   服务名 :关闭服务

systemctl  restart 服务名 :重新启动服务

systemctl  status 服务名 :查看服务状态

systemctl  --type  service :查看正在运行的服务

systemctl  list-unit-files :查看所有服务器自启配置

systemctl  disable 服务名 :关掉指定服务的自动启动

systemctl  enable  服务名 :开启指定服务的自动启动

systemctl  is-enabled 服务名 :查看服务开机启动状态

案例:

临时启停服务

查看防火墙服务状态

[root@bd-offcn-01 ~]# systemctl status firewalld

关闭防火墙

[root@bd-offcn-01 ~]# systemctl stop firewalld

开启防火墙

[root@bd-offcn-01 ~]# systemctl start firewalld

重启防火墙

[root@bd-offcn-01 ~]# systemctl restart firewalld

查看所有正在运行的服务

[root@bd-offcn-01 ~]# systemctl  --type  service

开机自启服务管理

查看防火墙服务的开机自启状态

[root@bd-offcn-01 ~]# systemctl is-enabled firewalld

设置防火墙服务开机自启

[root@bd-offcn-01 ~]# systemctl enable firewalld

设置防火墙服务开机不自启

[root@bd-offcn-01 ~]#systemctl disable firewalld

(4)服务后台执行

基本语法:

语法

功能描述

命令 + &

将命令放在后台执行

案例:

命令在前台执行,会阻塞我们继续输入命令。

[root@bd-offcn-01 ~]# tail -f anaconda-ks.cfg

%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda

pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty

pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok

pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty

%end

将命令放在后台执行后,可以继续输入命令,只需要在要执行的命令后边加一个&符号,并在此连续敲击两个回车即可。

[root@bd-offcn-01 ~]# tail -f anaconda-ks.cfg &

将命令放在后台执行后,可以通过jobs命令查看。

注意:jobs命令只能看到当前终端的后台进程,不能看到其它终端的后台进程。

[root@bd-offcn-01 ~]# jobs -l

[1]+  运行中               tail -f anaconda-ks.cfg &

如果将多个命令放到后台执行,就会看到多个,jobs加参数l,可以显示出进程pid。

解析:

第一列:例如 1、2、3、4,是jobs给每个进程的任务编号,+代表最新(只有一个)放入后台的进程,-代表次新(只有一个)进程。

第二列:例如 5521,是jobs每个进程的pid

第三列:例如,运行中、已停止,是该进程的状态

第四列:生成该进程的命令

[root@bd-offcn-01 ~]# tail -f anaconda-ks.cfg &
[root@bd-offcn-01 ~]# tail -f anaconda-ks.cfg &
[root@bd-offcn-01 ~]# tail -f anaconda-ks.cfg &
[root@bd-offcn-01 ~]# tail -f anaconda-ks.cfg &
[root@bd-offcn-01 ~]# jobs -l
[1]   5521运行中               tail -f anaconda-ks.cfg &
[2]   5522 运行中               tail -f anaconda-ks.cfg &
[3]-  5523运行中               tail -f anaconda-ks.cfg &
[4]+  5524运行中               tail -f anaconda-ks.cfg &

进程进入后台执行后,我们也可以将其通过fg命令,即foreground再调回前台执行,参数4代表任务编号,不是pid。

[root@bd-offcn-01 ~]# fg 4

tail -f anaconda-ks.cfg

进程再次来到前台执行后,可以通过按下ctrl+z命令,将进程再次置于后台执行,只不过该进程会变成已停止状态,而此时如果按下ctrl+c命令的话,该进程会结束。

[root@bd-offcn-01 ~]# fg 4
tail -f anaconda-ks.cfg
^Z
[4]+  已停止               tail -f anaconda-ks.cfg
[root@bd-offcn-01 ~]# jobs -l
[1]   5521 运行中               tail -f anaconda-ks.cfg &
[2]   5522 运行中               tail -f anaconda-ks.cfg &
[3]   5523 运行中               tail -f anaconda-ks.cfg &
[4]+  5524 停止                  tail -f anaconda-ks.cfg

要想让该进程继续在后台运行,可以按下ctrl+z后,用bg命令,即background。

[root@bd-offcn-01 ~]# bg 4
[4]+ tail -f anaconda-ks.cfg &
[root@bd-offcn-01 ~]# jobs -l
[1]   5521 运行中               tail -f anaconda-ks.cfg &
[2]   5522 运行中               tail -f anaconda-ks.cfg &
[3]   5523 运行中               tail -f anaconda-ks.cfg &
[4]   5524 运行中               tail -f anaconda-ks.cfg &

注意:如果退出当前ssh会话,进入后台的命令,虽然会继续运行,但是通过jobs看不到了,jobs只能看到当前会话下的后台命令

(5)nohup 命令

基本语法:

语法

功能描述

nohup + 命令 + &

将程序放在后台执行,不会因为终端关闭而结束

案例:

nohup指不断地运行,是no hang up的缩写,指不间断,不挂断。运行一个进程的时候,不想让其在你退出账户时关闭,即可用nohup。

[root@bd-offcn-01 ~]# nohup tail -f anaconda-ks.cfg >> /root/my.out 2>&1  &

解析:

&:&为后台运行

nohup:不间断的运行tail -f anaconda-ks.cfg这个命令,并且将该命令输出的内容重定向输入my.out中(>>意为追加,如果用>会将以前的内容清空)

2>&1:2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。0 表示stdin标准输入,用户键盘输入的内容,1 表示stdout标准输出,输出到显示屏的内容,2 表示stderr标准错误,报错内容。

整体含义:将tail -f anaconda-ks.cfg命令放到后台不间断的运行,将该命令的标准错误和标准输出合并在一起,追加到my.out文件中

13、crontab系统定时任务

(1)crontab

用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

基本语法:

语法

功能描述

crontab + [选项]

用来提交和管理用户的需要周期性执行的任务.

选项:

-e :编辑crontab定时任务

-l :查询crontab任务

-r :删除当前用户所有的crontab任务

案例:

[root@bd-offcn-01 ~]# crontab -l

(2)crontab表达式

当要周期性的执行某个任务的时候,需要指定时间,这个指定时间的表达式就是crontab表达式,用5个*来表示,即*****,每个*的具体含义如下:

项目

含义

范围

第一个“*”

一小时当中的第几

0-59

第二个“*”

一天当中的第几小

0-23

第三个“*”

一个月当中的第几

1-31

第四个“*”

一年当中的第几

1-12

第五个“*”

当中的星期

0-7(0和7都代表星期日)

特殊符号:

特殊符号

含义

*

代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。

代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令

-

代表连续的时间范围。比如“0 5  *  *  1-6命令”,代表在周一到周六的凌晨5点0分执行命令

*/n

代表每隔多久执行一次。比如“*/10  *  *  *  *  命令”,代表每隔10分钟就执行一遍命令

(3)案例分析

时间

含义

15 20 * * * 命令

在20点15分执行命令

1 17 * * 2 命令

每周2 的17点1分执行命令

0 19 1,15 * * 命令

每月1号和15号的19点0分执行命令

0 9 * * 1-5 命令

每周一到周五的凌晨9点0分执行命令

*/10 5 * * * 命令

每天的凌晨5点开始,到6点结束,每隔10分钟执行一次命令

0 0 1,15 * 1 命令

每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为定义的都是天。非常容易让管理员混乱。

实操:

执行crontab -e,向里面添加周期性任务。添加时,使用方式跟vi编辑器相同。

[root@bd-offcn-01 ~]# crontab -e

添加如下:

*/1 * * * * /bin/echo `date` >> /tmp/test.txt

可以通过查看/tmp/test.txt的内容验证定时任务有没有正确触发,也可以通过查看定时任务的调度日志验证。

[root@bd-offcn-01 ~]# tail -f /var/log/cron

14、上传下载类

(1)sftp

是一款交互式的文件传输程序,命令的运行和使用方式与ftp命令相似,但是,sftp命令对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。

示例:

登录远端服务器,在bd-offcn-01采用bd-offcn-02的用户名root和密码登录bd-offcn-02。bd-offcn-01称之为本地服务器,bd-offcn-02称之为远程服务器。

[root@bd-offcn-01 ~]# sftp root@bd-offcn-02

root@bd-offcn-02's password:

Connected to bd-offcn-02.

sftp>

显示远程工作目录

sftp> pwd

Remote working directory: /root

显示本地工作目录

sftp> lpwd

Local working directory: /root

切换远程工作目录

sftp> cd /opt/

sftp> pwd

Remote working directory: /opt

切换本地工作目录

sftp> lcd /tmp/

sftp> lpwd

Local working directory: /tmp

列出远程服务工作目录内容

sftp> ls

1.txt      2.txt      Packages   my.tar.gz  my.zip     rh         test       test.java

列出本地服务器工作目录内容

sftp> !ls

1.txt

2.txt

anaconda.log

firefox_root

hsperfdata_root

ifcfg.log

ks-script-r_cdEf

mozilla_root0

my.zip

packaging.log

program.log

sensitive-info.log

storage.log

yum.log

!command用法,当我们直接输入一个命令时,默认是操作远端服务器的,前边加一个感叹号!就是操作的本地服务器。

删除远程服务器文件

sftp> ls

1.txt      2.txt      Packages   my.tar.gz  my.zip     rh         test       test.java

sftp> rm  1.txt

Removing /opt/1.txt

删除本地服务器文件

sftp> !rm test.txt

在远程服务器创建目录

sftp> mkdir /opt/mytest

sftp> ls

2.txt      Packages   my.tar.gz  my.zip     mytest     rh         test       test.java

在本地创建目录

sftp> !mkdir /mytest

sftp> !ls /

bin   dev  home  lib64 mnt opt   root  sbin  sys  usr

boot  etc  lib media mytest proc  run   srv   tmp  var

上传文件到远程服务器工作目录

sftp> put yum.log

Uploading yum.log to /opt/yum.log

yum.log                                                              100%    0     0.0KB/s   00:00

sftp> ls

2.txt      Packages   my.tar.gz  my.zip     mytest     rh         test       test.java  yum.log

从远程服务器下载文件到本地工作目录

sftp> get my.tar.gz

Fetching /opt/my.tar.gz to my.tar.gz

/opt/my.tar.gz                                                       100%  361     7.1KB/s   00:00

sftp> !ls

1.txt

2.txt

anaconda.log

firefox_root

hsperfdata_root

ifcfg.log

ks-script-r_cdEf

mozilla_root0

my.tar.gz

从远程服务器退出

sftp> bye

(2)wget

用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕,所以支持断点续传。

格式:wget+选项+参数

centos7默认已经安装了wget命令,如果没有该命令的话,可以通过一下方式安装。

[root@bd-offcn-01 ~]# yum install -y wget

查看帮助手册

[root@bd-offcn-01 ~]#  wget --help

示例

下载文件到当前目录

[root@bd-offcn-01 ~]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

下载支持断点续传,并将下载的文件重命名

[root@bd-offcn-01 ~]# wget -c -O 163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

(3)lrzsz

https://blog.csdn.net/weixin_43665682/article/details/103616389

(4)scp

scp [可选参数] file_source file_target

15、软件安装卸载类命令

(1)软件离线安装rpm

RPM(RedHat Package Manager),即Rethat软件包管理工具,类似windows里面的exe可执行文件,因Centos系统来自于Redhat,故Centos系统也可以使用这种软件包管理方式,它是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。

RPM包的名称格式:

Apache-1.3.23-11.i386.rpm

-“apache” 软件名称

-“1.3.23-11”软件的版本号,主版本和此版本

-“i386”是软件所运行的硬件平台

-“rpm”文件扩展名,代表RPM包

缺点:需要自己解决软件包的依赖问题,要手动将某个软件依赖的软件安装。

格式:rpm+选项+参数
示例:

查询已安装rpm包

查询所有已安装rpm包

[root@bd-offcn-01 ~]# rpm -qa

查询是否已经安装火狐

[root@bd-offcn-01 ~]# rpm -qa|grep firefox

firefox-52.7.0-1.el7.centos.x86_64

卸载rpm包

格式:rpm -e rpm软件包

格式:rpm -e --nodeps rpm软件包,如果要卸载的某个rpm包被其它rpm包依赖,可以通过加--nodeps参数强制卸载。

卸载火狐安装包:

[root@bd-offcn-01 ~]# rpm -e firefox-52.7.0-1.el7.centos.x86_64

安装rpm包

格式:rpm -ivh 软件包文件

选项解读:

-i=install,安装

-v=verbose,显示详细信息

-h=hash,进度条

安装firefox软件

先将firefox上传到root家目录

执行安装

[root@bd-offcn-01 ~]# rpm -ivh firefox-52.7.0-1.el7.centos.x86_64.rpm
准备中...                          ################################# [100%]
正在升级/安装...1:firefox-52.7.0-1.el7.centos      

(2)软件在线安装yum

a.基本使用

YUM(全称为 Yellow dog Updater, Modified),是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

格式:yum+选项+参数

选项说明:

-y:对所有提问都回答“yes”

参数说明:

install:安装rpm软件包

update:更新rpm软件包

check-update:检查是否有可用的更新rpm软件包

remove:删除指定的rpm软件包

list:显示yum仓库的软件包信息

clean:清理yum过期的缓存

deplist:显示yum软件包的所有依赖关系

清理所有缓冲数据
[root@bd-offcn-01 ~]# yum clean all
删除火狐浏览器
[root@bd-offcn-01 ~]# yum remove firefox
安装火狐浏览器
[root@bd-offcn-01 ~]# yum install firefox
安装tree命令
[root@bd-offcn-01 ~]# yum -y install tree
使用tree命令
[root@bd-offcn-01 ~]# tree
yun源查看
[root@bd-offcn-01 yum.repos.d]# pwd
/etc/yum.repos.d
[root@bd-offcn-01 yum.repos.d]# ll
总用量 32
-rw-r--r--. 1 root root 1664 4月  29 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 4月  29 2018 CentOS-CR.repo
-rw-r--r--. 1 root root  649 4月  29 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 4月  29 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 4月  29 2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 4月  29 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 4768 4月  29 2018 CentOS-Vault.repo

b.关联网络yum源

默认的系统YUM源,需要连接国外apache网站,网速比较慢,可以修改关联的网络YUM源为国内镜像的网站,比如网易163。

1.前期文件准备

(1)前提条件linux系统必须可以联网

(2)在Linux环境中访问该网络地址:http://mirrors.163.com/.help/centos.html,在使用说明中点击CentOS7->再点击保存,如下所示

(3)查看文件保存的位置

在打开的终端中输入如下命令,就可以找到文件的保存位置。

[root@bd-offcn-01 下载]# pwd

/root/下载

2.替换本地yum文件

(1)把下载的文件移动到/etc/yum.repos.d/目录

[root@bd-offcn-01 下载]# mv CentOS7-Base-163.repo /etc/yum.repos.d/

进入到/etc/yum.repos.d/目录

[root@bd-offcn-01 下载]# cd /etc/yum.repos.d/

[root@bd-offcn-01 yum.repos.d]# pwd

/etc/yum.repos.d

  1. 把CentOS-Base.repo文件备份

[root@bd-offcn-01 yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo_bak

(3)用CentOS7-Base-163.repo替换CentOS-Base.repo

[root@bd-offcn-01 yum.repos.d]# mv CentOS7-Base-163.repo CentOS-Base.repo

mv:是否覆盖"CentOS-Base.repo"? y

(4)清除本地缓存,检测yum源是否可用

[root@bd-offcn-01 yum.repos.d]# yum clean all

[root@bd-offcn-01 yum.repos.d]# yum repolist all

base/7/x86_64                                       CentOS-7 - Base - 163.com                             启用

3.为rpm包建立本地的元数据索引

[root@bd-offcn-01 yum.repos.d]#yum makecache

yum makecache就是把服务器的包信息下载到本地电脑缓存起来

4.测试

[root@bd-offcn-01 yum.repos.d]#yum list | grep firefox

[root@bd-offcn-01 yum.repos.d]#yum -y install firefox.x86_64

c.制作只有本机能访问的本地YUM源

因为从网络上下载rpm的话,网速会比较慢,因此可以将常用的rpm包放到本地,让yum从本地下载rpm包速度会更快。

1. 准备一台Linux服务器,版本CentOS-7.5-x86_64-DVD-1804.iso

2. 配置好这台服务器的IP地址

3. 将CentOS-7.5-x86_64-DVD-1804.iso镜像挂载到/mnt/mycdrom目录

[root@bd-offcn-01 ~]# mkdir /mnt/mycdrom

[root@bd-offcn-01 ~]# ls /mnt/mycdrom/

[root@bd-offcn-01 ~]# mount -t iso9660 /dev/cdrom /mnt/mycdrom

mount: /dev/sr0 写保护,将以只读方式挂载

[root@bd-offcn-01 ~]# ls /mnt/mycdrom/

CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7

EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

4. 将光盘中用到软件包拷贝到本地任一目录中(复制过程比较慢)

[root@bd-offcn-01 ~]# mkdir -p /mnt/mylocalrepo

[root@bd-offcn-01 ~]# cp -r /mnt/mycdrom/* /mnt/mylocalrepo/

5. 修改本机上的YUM源配置文件,将源指向本地rpm包存储位置

拷贝一份yum源配置文件,并修改为以下内容

[root@bd-offcn-01 yum.repos.d]# cp CentOS-Media.repo mylocal.repo

[root@bd-offcn-01 yum.repos.d]# vi mylocal.repo

[mylocal_yum]

name=this is my local repo

baseurl=file:///mnt/mylocalrepo/

gpgcheck=0

enabled=1

priority=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

因为本地有多个yum源,我们想让yum下载的时候优先从本地yum源下载,因此设置优先级为1,即priority=1,数字越小,优先级越高,同时修改原来的163yum源的优先级为2

[root@bd-offcn-01 yum.repos.d]# vi CentOS-Base.repo

[base]

name=CentOS-$releasever - Base - 163.com

#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/

gpgcheck=1

priority=2

gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

#released updates

[updates]

name=CentOS-$releasever - Updates - 163.com

#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates

baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/

gpgcheck=1

priority=2

6. 安装yum优先级工具,以便配置的优先级生效

[root@bd-offcn-01 yum.repos.d]# yum -y install yum-priorities

7. 清除YUM缓存

[root@bd-offcn-01 yum.repos.d]# yum clean all

8 列出可用的YUM仓库

[root@bd-offcn-01 yum.repos.d]# yum repolist all

mylocal_yum                                       this is my local repo                              启用:

9. 删除火狐并测试

[root@bd-offcn-01 yum.repos.d]# yum -y remove firefox

[root@bd-offcn-01 yum.repos.d]# yum -y install firefox

已加载插件:fastestmirror, langpacks, priorities

Loading mirror speeds from cached hostfile

6753 packages excluded due to repository priority protections

正在解决依赖关系

--> 正在检查事务

---> 软件包 firefox.x86_64.0.52.7.0-1.el7.centos 将被 安装

--> 解决依赖关系完成

依赖关系解决

======================================================================================================================

Package                 架构                   版本                                源                           大小

======================================================================================================================

正在安装:

firefox                 x86_64                 52.7.0-1.el7.centos                 mylocal_yum                  83 M

事务概要

======================================================================================================================

安装  1 软件包

总下载量:83 M

安装大小:149 M

Downloading packages:

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

正在安装    : firefox-52.7.0-1.el7.centos.x86_64                                                                1/1

验证中      : firefox-52.7.0-1.el7.centos.x86_64                                                                1/1

已安装:

firefox.x86_64 0:52.7.0-1.el7.centos

完毕!

d.制作其他主机通过网络能访问的本地YUM源

上节制作的yum源只能在本机访问,其它机器不能访问,有时候我们会在局域网环境,在某台机器上搭建yum源,让其它机器也能够访问,加快下载速度。

我们在bd-offcn-01机器上搭建能够允许其他机器访问的yum源,然后再准备一台bd-offcn-02机器,做测试,让bd-offcn-02使用bd-offcn-01上搭建的yum源。

1. 在bd-offcn-01上搭建yum源

安装相应的软件

yum源就是一个供我们下载rpm包的站点,我们安装一个类似于tomcat的软件httpd供我们搭建站点。

[root@bd-offcn-01 yum.repos.d]# yum install -y httpd

启动httpd服务

[root@bd-offcn-01 yum.repos.d]# systemctl start httpd

使用物理机浏览器或者Linux的浏览器访问http://bd-offcn-01:80/(如果访问不通,要关闭防火墙),如果看到一下页面,证明httpd启动成功。

配置rpm包到httpd的html目录

[root@bd-offcn-01 ~]# cp -r /mnt/mylocalrepo /var/www/html/

在浏览器能看到拷贝过去的包

http://bd-offcn-01/mylocalrepo/

2. 配置其它机器并测试

准备另一台机器bd-offcn-02,修改其yum源,将其yum源指向bd-offcn-01

[root@bd-offcn-02 ~]# cd /etc/yum.repos.d/

[root@bd-offcn-02 yum.repos.d]# cp CentOS-Base.repo  CentOS-Base.repo.bak

编辑CentOS-Base.repo文件:

[root@bd-offcn-02 yum.repos.d]# vi CentOS-Base.repo

把原来内容清空,添加如下内容:

[bd-offcn-01]

name= this is bd-offcn-01 repo

baseurl=http://bd-offcn-01/Packages

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

同时要删除原来的本地yum源

[root@bd-offcn-02 yum.repos.d]# rm -rf mylocal.repo

注意添加hosts文件映射关系

[root@bd-offcn-02 ~]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.111 bd-offcn-01

192.168.1.112 bd-offcn-02

192.168.1.113 bd-offcn-03

192.168.1.114 bd-offcn-04

192.168.1.115 bd-offcn-05

在这台新的服务器上执行YUM的命令

[root@bd-offcn-02 yum.repos.d]# yum clean all

已加载插件:fastestmirror, langpacks

正在清理软件源: base

Cleaning up everything

Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos

Cleaning up list of fastest mirrors

[root@bd-offcn-02 yum.repos.d]# yum repolist all

已加载插件:fastestmirror, langpacks

Determining fastest mirrors

base                                                                            | 2.9 kB  00:00:00

base/primary_db                                                                 | 3.1 MB  00:00:00

源标识                                        源名称                                              状态

base                                          bd-offcn-01                                         3,971

repolist: 3,971

[root@bd-offcn-01 yum.repos.d]# yum -y remove firefox

[root@bd-offcn-01 yum.repos.d]# yum -y install firefox

16、虚拟机克隆

(1)快速搭建一台相同配置的centos

有时候,我们需要用到多个虚拟机。重新安装会花费大量的时间,此时,可以通过vmware虚拟机自带的功能快速克隆出完全相同的系统,节约时间。

前提:被克隆的虚拟机系统要处于关闭状态。

(2)克隆类型

克隆分为链接克隆和完整克隆。

链接克隆:是对原始虚拟机的引用,所需的存储磁盘空间较少。但是,必须能够访问原始康拟机才能运行。

完整克隆:是原始虚拟机当前状态的完整副本。此副本虚拟机完全独立,但需要较多的存储磁盘空间。

我们选择完整克隆。

(3)克隆步骤

我们以bd-offcn-01为模板,先将其关机。

选择克隆

选择克隆虚拟机的当前状态,并下一步

选择完整克隆并下一步

选择一个目录,并给新机器命名

开始克隆,这个过程根据自己的电脑性能,要耗费几分钟的时间,这期间尽量不要做其它操作,等待着它的完成。

克隆完成,点击关闭

(4)克隆后配置

克隆完成后,将克隆后的虚拟机开机,做一些配置。

修改主机名

在虚拟机界面打开终端,修改主机名为bd-offcn-02

[root@bd-offcn-01 ~]# hostnamectl set-hostname bd-offcn-02

修改ip地址,重新指定一个新的ip地址
[root@bd-offcn-02 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="8125b2f3-1e37-4b5d-8027-0e9776c61af3"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.168.112
GATEWAY=192.168.168.2
DNS1=192.168.168.2
重启网络服务
[root@bd-offcn-02 ~]# systemctl restart network

(5)ssh安全外壳协议

SSH为Secure Shell(安全外壳协议)的缩写,简单说,SSH只是一种网络协议,用于计算机之间的加密登录。很多通信方式,比如ftp、telnet在本质上都是不安全的,因为它们在网络上角明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。通过使用SSH,你可以把所有传输的数据进行加密,别人即使截获了这些数据,也没法解密了。

SSH是由客户端和服务端的软件组成的,

服务端是一个守护进程(sshd),他在后台运行并监听和响应来自客户端的连接请求。

客户端包含ssh程序以及像scp(远程拷贝)、sftp(安全文件传输)等其他的应用程序。

默认情况下,centos7已经安装了ssh的服务端和客户端,可以通过以下方式查看。

[root@bd-offcn-01 ~]# yum list installed | grep openssh-serveropenssh-server.x86_64                   7.4p1-16.el7                   @anaconda

查看服务端,有sshd进程监听22号端口,等待着客户端的连接,

[root@bd-offcn-01 ~]# netstat -anp|grep 22tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1342/sshd          tcp        0     52 192.168.168.111:22      192.168.168.1:2354      ESTABLISHED 4379/sshd: root@ptstcp        0      0 192.168.168.111:22      192.168.168.1:1465      ESTABLISHED 1875/sshd: root@ptstcp6       0      0 :::22                   :::*                    LISTEN      1342/sshd    

查看客户端命令

[root@bd-offcn-01 ~]# which ssh

/usr/bin/ssh

如果没有安装,可以通过以下方式安装

[root@bd-offcn-01 ~]# yum install openssh-server

示例:

在bd-offcn-01机器上,使用该机器安装的ssh客户端命令,采用bd-offcn-02机器上的用户名root和密码登录bd-offcn-02

[root@bd-offcn-01 ~]# ssh root@bd-offcn-02
The authenticity of host 'bd-offcn-02 (192.168.168.112)' can't be established.
ECDSA key fingerprint is SHA256:miQCJ2x5roY26B53LUO9/F4njpMjNiJgjX8mHJAzNDs.
ECDSA key fingerprint is MD5:93:a7:f9:d1:94:eb:de:f0:3d:47:95:d2:6f:82:62:0d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bd-offcn-02,192.168.168.112' (ECDSA) to the list of known hosts.
root@bd-offcn-02's password:
Last login: Tue Feb  2 10:09:30 2021
[root@bd-offcn-02 ~]#

从bd-offcn-02机器上退回到bd-offcn-01

[root@bd-offcn-02 ~]# exit
登出
Connection to bd-offcn-02 closed.
[root@bd-offcn-01 ~]#

在bd-offcn-01机器上,使用该机器安装的ssh客户端命令,采用bd-offcn-02机器上的用户名offcn和密码登录bd-offcn-02

[root@bd-offcn-01 ~]# ssh offcn@bd-offcn-02
offcn@bd-offcn-02's password:
Last login: Wed Jan 27 14:43:51 2021
[offcn@bd-offcn-02 ~]$

(6)SSH免密登录配置

在上步我们登录到其他机器上都需要输入密码,这样非常麻烦。那么能不能提前把密码配置上,实现免密码登录呢?答案是可以的。

无密钥配置

  1. 免密登录原理

1、生成公钥和私钥:(-t 指定密钥类型,默认是 rsa,可省略不写,rsa是一种加密算法)

[root@bd-offcn-01 .ssh]$ pwd

/root/.ssh

[root@bd-offcn-01 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

2、将公钥拷贝到要免密登录的目标机器上(注意将ip和主机名映射添加hosts文件)

[root@bd-offcn-01.ssh]$ ssh-copy-id bd-offcn-01
[root@bd-offcn-01.ssh]$ ssh-copy-id bd-offcn-02
[root@bd-offcn-01.ssh]$ ssh-copy-id bd-offcn-03[root@bd-offcn-01 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.111 bd-offcn-01
192.168.1.112 bd-offcn-02
192.168.1.113 bd-offcn-03
192.168.1.114 bd-offcn-04
192.168.1.115 bd-offcn-05

.ssh文件夹下(~/.ssh)的文件功能解释

  1. known_hosts :记录ssh访问过计算机的公钥(public key)
  2. id_rsa  :生成的私钥
  3. id_rsa.pub  :生成的公钥
  4. authorized_keys :存放授权过的可以无密登录本服务器的其它机器的公钥

day30~31_linux概述及安装设置相关推荐

  1. linux安装软路由,软路由安装设置教程【详细步骤】-太平洋IT百科手机版

    导读:随着 现代 生活中科学技术的不断发展,网络应用成为家家必须的东西,更因为如此也出现了如今的"低头族"们,不过在家庭中我们所使用的网络都需要有路由器这样的设备,其实路由器也分为 ...

  2. 海蜘蛛软路由linux安装教程,软路由安装设置教程【详细步骤】-太平洋IT百科

    导读:随着 现代 生活中科学技术的不断发展,网络应用成为家家必须的东西,更因为如此也出现了如今的"低头族"们,不过在家庭中我们所使用的网络都需要有路由器这样的设备,其实路由器也分为 ...

  3. 2.淘宝购买行为分析项目——Hive查询、Sqoop的介绍与使用、SQLyog的安装与使用、Superset的概述与安装使用

    1.热卖商品Top10 思路:对于表中,需要求最热卖的商品,其实就是对商品的it进行分组,然后求有多少个用户id出现过(同一个用户可以反复购买,所以不需要去重),排序后再取前10个即可. select ...

  4. REDIS01_概述、安装、key、字符串String、列表List、集合Set、Hash哈希、Zset有序集合、持久化策略

    文章目录 ①. Redis - 概述 ②. Redis - 安装 ③. 常用五大数据类型 ④. 字符串类型 - String ⑤. 列表类型 - list ⑥. 集合类型 - Set ⑦. 哈希类型 ...

  5. 大数据开发基础入门与项目实战(二)Java Web数据可视化之3.Linux概述、安装和结构

    文章目录 前言 1.Linux概述 (1)Linux简介 (2)Linux的应用领域及版本介绍 2.安装Linux (1)VMWare的安装 (2)使用VMWare构建虚拟机器 (3)安装CentOS ...

  6. Element Plus 实例详解(一)___安装设置

    Element Plus 实例详解(一) ___安装设置 本篇目录: 一.前言 二.安装方法 1.环境支持 2.Element Plus安装使用方式 (1).使用包管理器 (2).浏览器直接引入 3. ...

  7. Apach Geode概述及安装启动测试

    一.概述 Apache Geode是一个数据管理平台,在广泛分布的云架构中提供对数据密集型应用程序的实时,一致的访问. Geode可以跨多个进程池内存,CPU,网络资源和可选的本地磁盘,以管理应用程序 ...

  8. MDaemon插件之Outlook connector客户端安装设置

    上篇,我们介绍了Outlook Connector 2.2.8的服务器端安装设置,接下来介绍一下客户端如何实现的.接下来的操作和截图都是在win7系.IE9.0,及Microsoft office20 ...

  9. kodi教程_KODI清理缓存插件安装设置教程

    具体安装设置方法请看下方视频. 如果你是个高清电影爱好者,你一定会考虑如何将客厅的电脑打造成一台强大的家庭影院影音播放中心! Kodi (原名 XBMC) 是一款经典免费开源.跨平台且极其强大专业的多 ...

最新文章

  1. 【55】让自己熟悉Boost
  2. ReactNative生成android平台的bundle文件命令
  3. 使用wxSqlite3来解决sqlite加密问题zz
  4. 玩转Mixly – 5、Arduino AVR编程 之 逻辑
  5. 浅谈iOS 开发中的界面通信
  6. 人工智能 | 自然语言处理(NLP)(国内外研究组)
  7. java 2d 教程_Java 2D开发技巧之“灯光与阴影”
  8. matlab自考本科真题,行政管理学自考专科试题及答案
  9. linux开源软件_为什么要使用Linux和开源软件?
  10. 小瓦怕扫地机器人_小瓦扫地机器人青春版评测报告
  11. linux 拷机软件,拷机软件跑起来,OS X平台下OpenGL初体验
  12. ElasticSearch8.1.2 ik分词器
  13. egret 显示帧动画
  14. mac查看内存使用情况命令
  15. 去掉桌面图标蓝底的方法
  16. 数独-比回溯法更优的人类思维逻辑的数独解法
  17. python+appium+android模拟器自动化测试 源码
  18. 七、torch.nn
  19. 大数据十年:Cloudera向左,Palantir向右
  20. 专业的音乐创作类软件,Helio最新版软件可以帮助用户处理音乐创作中遇到的各种问题。

热门文章

  1. UI一揽子计划 15 (XML的解析方式 (SAX解析/ DOM解析) 、JSON 解析)
  2. 理解MVCSmalltalk-80
  3. 在html5代码中加个时间,HTML5中video标签“事件”详解(实时监测当前播放时间)代码...
  4. 宝塔Ubuntu手动安装LuaSandbox
  5. 【6月比赛合集】42场可报名的「创新应用」、「数据分析」和「程序设计」大奖赛,任君挑选!
  6. Flutter | 启动,渲染,setState 流程
  7. 亚马逊物流批量清货计划的优势你知道?
  8. 计算机组成原理试题(五)(附参考答案)
  9. 巧用无线路由器 让有线、无线网络互通(组图)
  10. 委托与事件 信用卡还款