课程大纲 |
课程内容 |
学习效果 |
Linux基础 |
Linux概述 |
了解 |
CentOS安装 |
掌握 |
|
Linux目录结构 |
掌握 |
|
远程客户端工具 |
了解 |
1、什么是Linux
2、Linux的诞生
3、Linux的组成
1、虚拟机软件
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时很可能安装不上,卸载步骤如下图:
本次安装Linux操作系统,选择的是CentOS7.5版本,安装步骤较多,请参考安装文档,如下:
CentOS 7安装教程(图文详解)
我这里跟参考文档安装的有些不一样,如下:
1、网络基础
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的文件系统跟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 6安装和使用教程
1. 双击桌面”Xshell6”图标打开XShell
2.新建会话,连接远程某一设备
3.自定义连接机器的名称,输入连接机器的IP地址
4.在左侧会话管理器将存在新建的会话,双击进行连接
5.根据提示输入用户名及密码
可根据喜好选择是否一次登录或是保存记录下次连接后直接登录
6、文件传输
虽然我们可以使用图形化界面,但图形化界面会影响服务器的性能。一般服务器需要长时间运行(一般为7*24小时不间断运行),图形化的桌面版系统庞大,复杂,容易造成崩溃。 命令行界面不够美观,但运行稳定,干扰性能项相对较少,对于开发人员而言操作也比较快捷方便。
(1)命令的格式和语法
命令+空格+选项+空格+参数
(2)命令详解
命令:指单词或者词组的全称或者简写
选项:选项是包括一个或多个字母的代码,前面有一个“-”连字符,主要用于扩展基础命令。
参数:命令操作的对象
(3)举例说明
如上图的命令行界面,ls -l /root 是一个完整的命令,其中“ls”是命令,“-l”是选项,“/root”是参数,执行ls -l /root 后会将结果展现给我们。
(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 内嵌
(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)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 不隐藏任何以. 开始的项目
(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文本编辑器使用
用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行处 |
在一般模式中可以进行删除、复制、粘贴等等的动作,但是却无法编辑文件内容。我们需要进入编辑模式才可以编辑具体内容,我们可以在一般模式下键入『i, I, o, O, a, A, r, R』等任一字母就可进入编辑模式。
进入编辑模式,会在左下方出现『INSERT 或 REPLACE 或 插入 』的字样。编辑完成后,按下『Esc』这个按键可退出编辑模式,回到一般模式,在一般模式下,可以进入指令模式,选择保存或者不保存文件。
常用语法:
语法 |
功能描述 |
键入“i” |
在光标所在位置处进入编辑模式 |
键入“I” |
将光标定位到所在行的行头进入编辑模式 |
键入“a” |
将光标定位到当前位置的下一字节进入编辑模式 |
键入“A” |
将光标定位到所在行的行尾进入编辑模式 |
键入“o” |
在光标所在行的下一行新建一行进入编辑模式 |
键入“O” |
在光标所在行的上一行新建一行进入编辑模式 |
该模式也被称之为底行模式,在一般模式下,输入『 : / ?』3个中的任何一个按键,就可以将光标移动到页面最底一行进入到指令模式,在该模式下可以进行保存、不保存、显示行号、搜索关键字等操作。按下『Esc』这个按键可退出编辑模式。
常用语法:
语法 |
功能描述 |
键入“:或 / 或 ?” |
在一般模式下进入指令模式 |
键入“:”后输入“w”并回车 |
保存 |
键入“:”后输入“q”并回车 |
退出文本编辑器 |
键入“:”后输入“wq”并回车 |
保存文本内容并退出文本编辑器 |
键入“:”后输入“!”并回车 |
强制执行 |
键入“:”后输入“q!”并回车 |
不保存文件,强制退出文本编辑器 |
键入“:”后输入“wq!”并回车 |
强制保存并退出文本编辑器 |
一般模式下按下 Shift + z + z |
对非只读文件实现快速保存 |
键入“/”后输入“关键词”并回车 |
查询文件中的关键词,按n向下查找下一个关键词 |
键入“?”后输入“关键词”并回车 |
查询文件中的关键词,按n向上查找下一个关键词 |
键入“:”后输入“set nu”并回车 |
显示每行的行号 |
键入“:”后输入“%s/word1/word2”并回车 |
将文件中的word1替换为word2 |
(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 rh
137008 -rw-r--r--. 1 root root 0 1月 31 09:24 test11.txt
67377416 -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/
总用量 8
67377416 -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.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/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.txt
67377416 -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.txt
67377416 -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.txt
1 line 1
2
3
4 line 2
5 line 3
[root@bd-offcn-01 opt]# cat -b test11.txt
1 line 1
2 line 2
3 line 3
[root@bd-offcn-01 opt]# cat -s test11.txt
line 1
line 2
line 3
[root@bd-offcn-01 opt]# cat -v test11.txt
line 1
line 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^I
line 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^I
line 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 测试数据.txt
this is line 99
this is line 199
this is line 299
this is line 399
this 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
基本语法:
语法 |
功能描述 |
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 6
7 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 6
3 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
(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:
(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这些数字来表示:
字符 |
含义 |
- |
代表文件 |
d |
代表目录 |
c |
字符流,串行端口设备,例如键盘、鼠标(一次性读取装置) |
s |
socket |
p |
管道 |
l |
链接文档(link file) |
b |
设备文件,可供储存的接口设备(可随机存取装置) |
文件类型 |
属主权限 |
属组权限 |
其他用户权限 |
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 |
代表可以进入该目录 |
案例:
(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
(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.gz
185515842 jdk-8u144-linux-x64.tar.gz
[root@bd-offcn-01 ~]# du -k jdk-8u144-linux-x64.tar.gz
181168 jdk-8u144-linux-x64.tar.gz
[root@bd-offcn-01 ~]# du -m jdk-8u144-linux-x64.tar.gz
177 jdk-8u144-linux-x64.tar.gz
[root@bd-offcn-01 ~]# du -h jdk-8u144-linux-x64.tar.gz
177M jdk-8u144-linux-x64.tar.gz
[root@bd-offcn-01 ~]# du -s jdk-8u144-linux-x64.tar.gz
181168 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/bin
0 /usr/etc
0 /usr/games
14M /usr/include
1.2G /usr/lib
1.1G /usr/lib64
110M /usr/libexec
4.0K /usr/local
63M /usr/sbin
1.3G /usr/share
60M /usr/src
0 /usr/tmp
(3)iostat
iostat命令是I/O statistics(输入/输出统计)的缩写,主要用于监控并统计系统设备的IO负载情况及CPU负载情况,仅对系统的整体情况进行分析,不能对某个进程进行深入分析。主要用它来检查哪个设备有问题,哪个设备io有问题,用户可以通过指定统计的次数和时间来获得所需的统计信息。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。
基本语法:
语法 |
功能描述 |
iostat + [选项] |
用于监控磁盘IO及CPU的负载情况 选项: -d :只显示磁盘使用情况; -c :只显示CPU使用情况; -k :以 KB 为单位显示 -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 %idle
1.19 0.01 5.96 0.00 0.00 92.83
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 -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 %idle
1.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 %idle
1.19 0.01 5.96 0.00 0.00 92.83
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.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 %idle
1.19 0.01 5.97 0.00 0.00 92.82
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.81 11.59 2322489 2489606
dm-0 0.48 10.77 11.58 2311839 2487374
dm-1 0.00 0.01 0.00 2256 44
avg-cpu: %user %nice %system %iowait %steal %idle
3.79 0.00 8.08 0.00 0.00 88.13
Device: 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
avg-cpu: %user %nice %system %iowait %steal %idle
3.29 0.00 8.35 0.00 0.00 88.35
Device: 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 ~]# free
total used free shared buff/cache available
Mem: 4026164 577016 2970852 12672 478296 3122160
Swap: 4063228 0 4063228
[root@bd-offcn-01 ~]# free -m
total used free shared buff/cache available
Mem: 3931 563 2901 12 467 3049
Swap: 3967 0 3967
[root@bd-offcn-01 ~]# free -h
total 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开机,开机后,可以看到多出一块硬盘
接下来,按照如下步骤创建硬盘信息
格式化磁盘
[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
(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
(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
(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 test
adding: 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: A
extracting: /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/
(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文件中
(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
(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
(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
[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
(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-server
openssh-server.x86_64 7.4p1-16.el7 @anaconda
查看服务端,有sshd进程监听22号端口,等待着客户端的连接,
[root@bd-offcn-01 ~]# netstat -anp|grep 22
tcp 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@pts
tcp 0 0 192.168.168.111:22 192.168.168.1:1465 ESTABLISHED 1875/sshd: root@pts
tcp6 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、生成公钥和私钥:(-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文件)
[[email protected]]$ ssh-copy-id bd-offcn-01
[[email protected]]$ ssh-copy-id bd-offcn-02
[[email protected]]$ 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)的文件功能解释