云计算的介绍

什么是服务器

能够为其他计算机提供服务的更高级的电脑,分为机架式、塔式、机柜式、刀片式

典型服务模式

C/S,Client/Server架构
–由服务器提供资源或某种功能
–客户机使用资源或功能

TCP/IP协议及配置

TCP/IP是最广泛支持的通信协议集合
–包括大量Internet应用中的标准协议
–支持跨网络架构、跨操作系统平台的通信

主机与主机之间通信的三个要素

–IP地址(IP address)
–子网掩码(subnet mask)
–IP路由(IP router)网络设备 路由器

IP地址(IP address)

作用:用来标识一个节点(连网设备)的网络地址
地址组成(点分十进制): 一共32个二进制数,表示为4个十进制数,以 . 隔开
IPv4地址32个二进制数:11001100.01010101.11110000.10101010
4个十进制数: 192.168.1.1 1.2.3.4 18.17.16.15
IPv6地址:128个二进制数

IP地址的分类

  • 判断的依据只需要查看IP地址的第一个十进制数192.168.1.1
    –A类:1 ~ 127 网+主+主+主
    –B类:128 ~ 191 网+网+主+主
    –C类:192 ~ 223 网+网+网+主
    •组播及科研专用(了解内容)
    –D类:224 ~ 239 组播
    –E类:240 ~ 254 科研
  • A类地址:范围从0~127,实际上是1~126。 0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的。 可用的A类网络有126个。

    IP地址的组成:网络位与主机位

    网络位=类似身份证开头的6个数字,起到作用为标识一个地理区域
    主机位=编号
    标识区域或网络时,标识的名字:网络位不变,主机位全为0
    192.168.10.1—-》C类地址—-》默认为网+网+网+主—-》255.255.255.0—-》所在的192.168.10.0网络

    子网掩码

    为计算机标识IP地址的网络位与主机位,利用二进制的1标识网络位,利用二进制的0标识主机位
    192.168.1.1 255.255.255.0 = 192.168.1.1/24(此地址有24个网络位)

    网关概念与DNS服务器的概念

    配置IP地址方式

    1、手工配置 2、DHCP自动获取(前提是网络中有dhcp服务器)

    网关:一个网络到另一个网络的关口地址,涉及到网络设备路由器

    一个网络的出口地址
    一个网络的入口地址

    DNS服务器:域名解析系统,提供域名解析的机器。

    域名解析:能够将域名解析为IP地址
    www.baidu.com————》DNS服务器———-》 IP地址 ————》 百度的服务器

Linux简介

Linux是一种操作系统!!
操作系统:一堆软件的集合,让计算机硬件正常的工作
C/S结构:客户端(简单、方便)与服务端(稳定、高效、安全)

Unix/Linux发展史

• UNIX诞生,1970-1-1
• Linux之父,Linus Torwalds
– 1991年10月,发布0.02版(第一个公开版)内核
– 1994年03月,发布1.0版内核
– 标准读音:“哩呐科斯”

内核:调配计算机硬件资源

用户——>内核——>硬件
内核版本号:主版本.次版本.修订号

Linux版本及应用

• 发行版的名称/版本由发行方决定
– Red Hat Enterprise Linux 5/6/7/8
– Suse Linux Enterprise 12
– Debian Linux 7.8
– Ubuntu Linux 14.10/15.04
Red Hat系列版本
• 红帽 Linux 企业版
– 简称RHEL(Red Hat Enterprise Linux)
• Fedora Core 社区版
• CentOS,社区企业操作系统
– Community Enterprise Operating System

Linux系统的安装

1 Linux系统的安装

Linux目录结构

路径:/abc/1.txt # 在根目录下,有abc目录,在abc目录里有1.txt文件。在Linux中一个路径,只有开头的/ 才表示为根目录
Unix/Linux的基本哲学理念:一切皆文件

常用的重要目录

/根目录:Linux系统的起点(所有的数据存放的目录)
/boot:引导程序,内核等存放的目录。
/sbin:超级用户可以使用的命令的存放目录。
/bin:普通用户可以使用的命令的存放目录。
/lib:根目录下的所程序的共享库目录。
/dev:硬盘,键盘,鼠标,网卡,终端等设备文件目录。
/home:普通用户的家目录。
/root:用户root的家目录
/etc:全局的配置文件存放目录。
/usr:这个目录中包含了命令库文件和在通常操作中不会修改的文件。
/proc:特殊文件目录。系统只存在内存当中,而不占用外存空间。
/opt:可择的文件目录。
/mnt:临时挂载目录。
/media:挂载的媒体设备目录。
/usr/lib:目标库文件,包括动态连接库加上一些通常不是直接调用的可执行文件的存放位置。
/usr/bin:一般使用者使用并且不是系统自检等所必需可执行文件的目录。
/usr/sbin:管理员使用的非系统必须的可执行文件存放目录。
/usr/share:存放共享文件的目录。
/usr/local:安装本地程序的一般默认路径。


Linux基本操作

基础知识

获取命令行

方式一:获得命令行终端(tty)
虚拟控制台切换( Ctrl + Alt + Fn 组合键)
– tty1:图形桌面控制台;– tty2~tty6:命令字符界面控制台
方式二:获得命令行终端(tty)
• 右键“打开终端”
字体变大:ctrl shift +;字体变小:ctrl -

命令行提示符

[当前登录的用户@ 主机名 当前所在的目录]
以# 结尾表示当前登录的身份为root
以$结尾表示当前登录的身份为普通用户

绝对/相对路径

绝对路径:以根开始的路径
相对路径:以当前为参照的路径
..:表示上一层目录

目录文件颜色

目录:蓝色
文本文件:黑色
快捷方式:青色
绿色:可以执行的程序

Linux命令行基础

用来实现某一类功能的指令或程序
在Linux中执行大多数命令时,都要找到命令所对应的程序
]# which hostname # 查询命令对应的程序
命令的执行依赖于解释器(默认解释器/bin/bash)
用户—->解释器(shell)—->内核—->硬件
绿色:可以执行的程序
shell:壳,解释器
命令行完整格式:命令字 [选项]… [参数1] [参数2]…

常用操作指令

使用通配符

– *:任意多个任意字符
– ?:单个字符
– [a-z]:多个字符或连续范围中的一个,若无则忽略
– {a,min,xy}:多组不同的字符串,全匹配

文件管理相关操作指令

pwd(Print Working Directory)查看当前所在目录

cd(Change Directory)的命令使用:切换目录

. 当前目录
.. 父目录(上一层)
~:表示家目录
-:返回上次进入的目录
家目录:专门存放用户个性化信息的目录
~user:用户user的家目录
/root:是Linux管理员的家目录
/home:存放所有普通用户的家目录

ls — List(列出目录下文件):ls [选项]… [目录或文件名]

– -l:以长格式显示,显示详细信息
– -r:将文件以相反次序显示(默认依英文字母次序)
– -t:根据最后的修改时间排序
– -h:提供易读的容量单位(K、M等)
– -d:显示目录本身(而不是内容)的属性
– -A:显示所有内容包含隐藏数据
– -R:递归显示内容

mkdir创建目录

– 格式:mkdir [/路径/]目录名…
[-p]:连同父目录一并创建,递归创建目录

touch创建文本文件

mv — Move移动(源数据会消失):mv 原文件… 目标路径

重命名:路径不变的移动
]# mv /opt/nsd01 /opt/abc

cp — Copy(源数据不会消失):cp [选项]… 原文件… 目标路径

• 常用命令选项
– -r:递归,复制目录时必须有此选项
– -p:连同权限等一同复制
– -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
– -a:等价于“dpr”选项
– -l:对源文件建立硬连接,而非复制文件
– -s:对源文件建立符号连接,而非复制文件
复制可以支持两个以上的参数,永远把最后一个参数作为目标,其他的所有的参数都作为源数据
重名进行强制覆盖
]# \cp -r /boot/ /opt/ # 本次操作临时取消别名

rm删除数据:rm [选项]… 文件或目录…

-r:递归删除目录(目录本身以及目录下所有)
-f: 强制删除(不要提示)

wget文件下载

-h –-help 打印语法帮助
-b, –-background 启动后转入后台执行
-e –-execute=COMMAND
-O 已指定的文件名保存
使用wget下载单个文件:
[root@linuxcool ~]# wget [http://www.Linuxcool.com/testfile.zip](http://www.linuxcool.com/testfile.zip)
下载并以不同的文件名保存:
[root@linuxcool ~]# wget -O test.zip [http://www.Linuxcool.com](http://www.linuxcool.com/)

ln制作链接文件(制作快捷方式)

格式:ln -s /路径/源数据 /路径/快捷方式的名称 # 软链接
]# ln -s /etc/sysconfig/network-scripts/ifcfg-lo /mylo
软链接(符号连接)优势:可以针对目录与文件制作快捷方式,支持跨分区
软链接缺点:源数据消失,快捷方式失效
格式:ln /路径/源数据 /路径/快捷方式的名称 # 硬链接
]# ln /opt/A.txt /opt/C.txt # 硬链接
硬链接优势:源数据消失,快捷方式仍然有效
硬链接缺点:只能针对文件制作快捷方式,不支持跨分区

文档查看编辑相关指令

cat查看文本文件内容,适合查看内容较少文件

less查看文本文件内容,适合查看内容较多文件

head、tail 命令

默认查看10行内容
– 格式:head -n 数字 文件名;tail -n 数字 文件名

grep命令过滤文本文件内容

作用:输出包含指定字符串的行
[root@A /]#grep root /etc/passwd# 搜索password中包含root的行
grep高级使用:grep [选项] 字符串 /路径/文本文件
-v 取反匹配
-i 忽略大小写
-p 不输出结果,保持沉默
-w 匹配整词
-r 递归搜索
-n 列出所有的匹配行,显示行号
-c 只输出匹配行的数量
-A n:显示匹配到的字符串所在的行及其后n行,after
-B n:显示匹配到的字符串所在的行及其前n行,before
-C n:显示匹配到的字符串所在的行及其前后各n行,context

模糊搜索:^word:以word开头; word$:以word结尾; ^&:表示空行
]# grep -v ^# /etc/login.defs | grep -v ^$ //显示配置文件有效信息(去除以# 开头的注释行和去除空行)

find精确查找

find[目录] [条件1]
– 常用条件表示:
-type
类型(f:文本文件、d:目录、l:快捷方式)**-name “文档名称”
-iname “文档名称” 忽略大小写查找名称**-size +|-文件大小(k、M、G)**-user 用户名**-mtime 修改时间(-|+ 90)**-perm 查找权限 ( find /usr -perm -g=s )

  1. - g=w 将只匹配具有模式0020的文件
  2. - -g=w 匹配任何具有组写权限的文件

find高级使用:find [范围] [条件] -exec 处理命令 {}\;
处理find找到的数据,每查找的一个就传递一次
-exec额外操作的开始
{} 永远表示前面find查找的结果
\; 额外操作的结束
]# find / -user natasha -type f -exec cp {} /myfiles/ \;

vim修改文本文件内容(文本编辑器)

三个模式:命令模式、插入模式、末行模式
vim当文件不存在时,会自动创建此文件
vim不能创建目录

vim使用技巧大全:

1.使用xshell是粘贴文本格式错乱时:末行模式下输入: set paste + 回车,然后粘贴即可
2.ctrl+n可在vim中快速补全重复的单词
3.r 命令:替换当前字符
Vim 普通模式下按下 r 键会用接下来键入的一个字符替换当前光标下的字符 (但仍然处在普通模式下)。
按下 r 键后可以按 Esc 取消本次替换操作,使得接下来键入的字符不会替换当前光标所在字符。
4.替换模式R命令
让你一步到位进入替换模式:对于需要替换多个字符,更好的方案是直接进入替换模式。按下大写的R键,屏幕左下角出现—REPLACE—字样,说明你已经处于替换模式。此时输入字符可以连续替换光标及其后边的内容。注意:退格键(Backspace)在替换模式中被解释为如果左边的内容被替换过,则恢复到原来的样子;如果没有被替换过,则简单的向左移动。修改完毕后,按下Esc键回到普通模式。
5.向前或向后缩进n个空格
向前缩进,实则是使用Visual Block模式删除多余空格以达到向前缩进的效果。
ctrl + v组合键进入Visual Block模式;
使用上下方向键可选择多行,使用前后方向键可选择空格大小长度;
按下d删除选中内容。
向后缩进,实则是使用Visual Block模式批量添加空格以达到向后缩进的效果。
ctrl + v组合键进入Visual Block模式;
shift + i组合键进入编辑模式;
输入需要缩进的空格数量;
esc按键完成操作。
6.vim的跳转

vim模式切换

命———-i键 或 o键————-》插入模式(按Esc键回到命令模式)


式———输入英文的冒号 “:”——-》末行模式(按Esc键回到命令模式)

命令模式技巧

1)光标跳转
image.png
2)复制/粘贴/删除
image.png
C 删除光标至行末内容,并进入插入模式
3)查找/撤销/保存
image.png

末行模式技巧

读入其他文件内容 :r /etc/filesystems
1)字符串替换
image.png
2)开关参数的控制
image.png
3)vim常见错误:删除交换文件
image.png
]# rm -rf /opt/.hh.txt.swp
nl(number line)带行号内容输出
相比于命令 cat -n,nl 可以对行号做比较多的显示设计,包括位数与是否自动补齐 0 等功能

        - nl [OPTION]... [FILE]...     # 在没有文件或文件是 - 时,从标准输入读取内容
        - 选项如下

磁盘管理相关指令

mount挂载操作:让目录成为设备的访问点

使用mount命令:mount 设备路径 挂载点目录
]# mount /dev/cdrom /dvd
mount: /dev/sr0 写保护,将以只读方式挂载
mount卸载
]# umount /dvd
注意事项:
1.卸载:当前所在的路径是挂载点目录
[root@localhost mydvd]# umount /mydvd
umount: /mydvd:目标忙。
2.挂载允许一个设备,挂载到不同的挂载点目录
3.挂载不允许一个挂载点目录,挂载多个设备
4.建议挂载点目录,最好自行创建

lsblk命令 – 查看系统的磁盘

-b 以bytes方式显示设备大小
-e 排除设备
-f 显示文件系统信息
-m 显示权限信息

系统管理相关指令

chcon – 修改文件的安全上下文

-h 影响符号连接而非引用的文件
-R 递归处理所有的文件及子目录
-v 为处理的所有文件显示诊断信息
-u 设置指定用户的目标安全环境
-r 设置指定角色的目标安全环境
-t 设置指定类型的目标安全环境
-l 设置指定范围的目标安全环境
# 把ftp共享给匿名用户:
[root@linuxcool ~]# chcon -R -t public_content_t /var/ftp 
# 设置的FTP目录可以上传文件的话,SELINUX需要设置:
[root@linuxcool ~]# chcon -t public_content_rw_t /var/ftp/incoming
# 允许用户HTTP访问其家目录,该设定限仅于用户的家目录主页:
[root@linuxcool ~]# chcon -R -t httpd_sys_content_t ~user/public_html

date查看时间

[root@nb ~]# date
2021年 09月 01日 星期三 17:41:13 CST
[root@nb ~]#date -s ‘2000-1-1 11:28:36’ # 修改时间
– date +%F、date +%R
– date +”%Y-%m-%d %H:%M:%S”
– date -s “yyyy-mm-dd HH:MM:SS” // 修改系统时间

[root@localhost ~]# date +%Y # 显示年
[root@localhost ~]# date +%m # 显示月
[root@localhost ~]# date +%d # 显示日期
[root@localhost ~]# date +%H # 显示时
[root@localhost ~]# date +%M # 显示分
[root@localhost ~]# date +%S # 显示秒
[root@localhost ~]# date +%F # 显示年-月-日
[root@localhost ~]# date +%R # 显示时:分

hostname查看主机名

设置永久主机名
]# hostnamectl set-hostname[nb.haha.com](http://nb.haha.com/)

alias定义别名:简化复杂的命令

– alias 别名名称= ‘实际执行的命令行’
unalias 别名名称 //取消别名
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件 /etc/bashrc(所有用户生效)或/家目录/.bashrc(个别用户登录生效)
用户初始配置文件
新建用户时,新建用户家目录,根据 /etc/skel 模板目录复制
主要的初始配置文件
– ~/.bash_profile:每次登录系统时执行,定义初始变量值
– ~/.bashrc:每次进入新的Bash环境时执行(开启新的终端)
/etc/bashrc:全局配置文件,影响全体用户 (开启新的终端)

uname命令 – 显示系统信息

用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。
如果未指定任何选项,其效果相当于执行”uname -s”命令,即显示系统内核的名字

-a 显示系统所有相关信息
-n 显示主机名称
-r 显示内核发行版本号
-s 显示内核名称
-v 显示内核版本
-p 显示主机处理器类型
-o 显示操作系统名称
-i 显示硬件平台

lscpu列出CPU处理器信息

]# lscpu
…….
CPU(s): 1 # 核心数
…….
型号名称:Intel(R) Core(TM) i5-4430 CPU @ 3.00GHz

列出内存信息

]#cat /proc/meminfo
MemTotal: 997956 kB

netstat命令可以查询系统启动的端口信息

-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)

ss命令可以查看系统中启动的端口信息

-a显示所有端口的信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)
注意:在RHEL7系统中可以使用ss命令替代netstat命令,功能一样,选项一样。

uptime查看系统负载

]# uptime
15:23:22 up 2 days, 5:13, 3 users, load average: 0.12, 0.04, 0.05
显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

free显示系统内存情况

显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存。
-h 以易读单位显示
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s 持续显示内存
-t 显示内存使用总合

df显示磁盘空间使用情况

显示系统上可使用的磁盘空间。默认显示单位为KB
-a 显示所有系统文件
-h 以容易阅读的方式显示
-H 以1000字节为换算单位来显示
-i 显示索引字节信息
-k 指定块大小为1KB
-l 只显示本地文件系统
-t <文件系统类型> 只显示指定类型的文件系统
-T 输出时显示文件系统类型
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 3.7G 14G 22% /
devtmpfs 480M 0 480M 0% /dev

top实时显示进程动态

-d 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
-q 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
-c 切换显示模式
-s 安全模式,将交谈式指令取消, 避免潜在的危机
-i 不显示任何闲置 (idle) 或无用 (zombie) 的行程
-n 更新的次数,完成后将会退出 top
-b 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内

who ,打印当前登录用户

who命令用来打印当前登录用户信息,包含了系统的启动时间 、 活动进程 、 使用者 ID、使用终端等信息,是系统管理员了解系统运行状态的常用命令。
who命令的输出信息默认来自文件“/var/log/utmp”和“/var/log/wtmp”。
who [参数] [选项]
-a 打印全面信息
-b 打印系统最近启动时间
-d 打印死掉的进程
-l 打印系统登录进程
-H 带有列标题打印用户名,登录终端和登录时间
-t 打印系统上次锁定时间
-u 打印已登录用户列表

du,统计文件的占用空间

cdu [选项]… [目录或文件]…

     -  -s:只统计每个参数所占用的总空间大小,表示总结的意思,即只列出一个总结的值
     - -h:提供易读容量单位(K、M等) 
     - -c或–total 除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。
     -  –max-depth=<目录层数> 超过指定层数的目录后,予以忽略<br />    ]# du -sh /root

]#du -h —max-depth=1 只列出一级子目录的大小

sudo(提权),以系统管理者的身份执行指令

sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行
-V 显示版本编号
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录 (如 不加 -u 参数就是系统管理者 root )

# 如果没有zhangsan,手工创建
[root@node1 ~]# visudo   # 将会打开vi,在尾部追加以下一行
zhangsan        ALL=(ALL)       ALL
# 中间的ALL=(ALL)在集中认证的域环境中才有效,单机忽略即可
# zhangsan是用户名,最后的ALL表示zhangsan可以以管理员的身份执行所有命令

# 切换成zhangsan用户,执行命令
[root@node1 ~]# su - zhangsan
[zhangsan@node1 ~]$ useradd wangwu   # 失败,因为还是张三身份
[zhangsan@node1 ~]$ sudo useradd wangwu  # 以管理员身份执行
... ...
[sudo] password for zhangsan: # 输入zhangsan的密码,不是root

关机poweroff与重启reboot

reboot -f 强制重启

网络相关指令

ip命令(linux最基础的命令)

ip address show
ip address add 192.168.10.1/24 dev eth0

ping命令,测试网络连接

-c 定义ping的次数
-i 定义ping的间隔时间(秒)
-W ping失败时多久反馈结果
ping -c 2 192.168.4.7# ping两次
ping -c 3 -i 0.2 -W 1 192.168.2.254

ifconfig查看网卡的IP地址

此命令需要安装net-tools软件包
]# ifconfig # 查看本机网卡信息
lo: 本机回环接口 IP永远为127.0.0.1
127.0.0.1:永远代表本机

route命令 – 显示并设置路由

-net 到一个网络的路由表
-host 到一个主机的路由表
Add 增加指定的路由记录
Del 删除指定的路由记录
Target 目的网络或目的主机
gw 设置默认网关
[root@linuxcool ~]# route add -net 192.168.60.11 netmask 192.168.60.1 dev ens192

其他命令

bc计算器

[root@nb ~]# bc #进行交互式使用
退出Ctrl + c 结束
可用echo管道geibc非交互计算:echo 2+3 | bc

获取命令帮助(help、man)

方式一:命令 —help
[root@localhost ~]# cat —help
方式二:man 命令
[root@localhost ~]# man cat #按q退出

历史命令(history)

管理/调用曾经执行过的命令
– history:查看历史命令列表
– history -c:清空历史命令
– !n:执行命令历史中的第n条命令
– !str:执行最近一次以str开头的历史命令

重定向(重新定向命令的输出)

:覆盖重定向
>>:追加重定向
]# echo 123456 > /opt/p.txt
]# head -5 /etc/passwd > /opt/p.txt

管道(操作符号 | )

将前面命令的输出,传递给后面命令,作为后面命令的参数
]#cat -n /etc/passwd | head -8 | tail -1

seq命令 – 打印数字序列

-f 格式
-s 字符串
-w 在列前添加0 使得宽度相同

产生98~101之间的整数,并且要求数字之间的分隔符为”:::”:

[root@linuxcool ~]# seq -s ":::" -f "%03g" 98 101

uniq命令 – 去除文件中的重复行

  - **uniq [参数] [文件]**
-c 打印每行在文本中重复出现的次数
-d 只显示有重复的纪录,每个重复纪录只出现一次
-u 只显示没有重复的纪录

sort命令 – 排序文件并输出

  - sort [参数] [文件]
-n 依照数值的大小排序
-o <输出文件> 将排序后的结果存入制定的文件
-r 以相反的顺序来排序
-t <分隔字符> 指定排序时所用的栏位分隔字符
-k 指定需要排序的栏位
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f 排序时,将小写字母视为大写字母
[root@linuxcool ~]# sort -nrk 3 -t: sort.txt
[root@linuxcool ~]# sort -nk 2 -t: sort.txt

应用案例:统计nginx访问ip,并按照访问次数进行排序

软件包相关指令

归档及压缩

1.减小占用空间大小 2.整合分散的数据
归档
将许多零散的文件整理为一个文件文件总的大小基本不变
压缩
按某种算法减小文件所占用空间的大小,恢复时按对应的逆向算法解压
常见的压缩格式及命令工具
.gz —> gzip;.bz2 —> bzip2;.xz —> xz

zip归档工具,跨平台

归档+压缩操作: zip [-r] 备份文件.zip 被归档的文档…
[-r]:被归档的数据有目录,必须加上此选项
]# zip -r /opt/abc.zip /etc/passwd /home
释放归档+解压操作: unzip 备份文件.zip [-d 目标文件夹]
]# unzip /opt/abc.zip -d /nsd20

tar命令

  • 默认使用相对路径,使用绝对路径会出现“tar: Removing leading `/‘ from member names”警告,不影响压缩
    - tar打包:**tar 选项 /路径/压缩包名字 /源数据…….**
       - -c:创建归档
       - -x:释放归档
       - -f:指定归档文件名称,必须在所有选项的最后
       - -z、-j、-J:调用 .gz、.bz2、.xz 格式工具进行处理
       - -t:显示归档中的文件清单
       - -C:指定释放路径
       - -p:保留文件的权限
       - -P:使用文件名的绝对路径,不移除文件名称前的“/”号
       - --exclude:选项在打包时可用排除特定的目录,注意,打包时目录末尾不能加“/”<br />**命令示例**
    
    ]# tar -zcf /root/xixi.tar.gz /etc/passwd /home
    ]# tar -jcf /root/haha.tar.bz2 /etc/passwd /home
    ]# tar -Jcf /root/hehe.tar.xz /etc/passwd /home/
    ]# tar -tf /root/haha.tar.gz  //显示tar包中的清单
    
    tar解包:tar 选项 /路径/压缩包名字 选项 /释放的位置
    – -x:释放归档
    – -f:指定归档文件名称,必须在所有选项的最后
    – -C:指定释放路径
    命令示例
    ]# tar -xf /root/haha.tar.bz2 -C /nsd01

    RPM软件包

    • RPM Package Manager
    由红帽公司提出,RedHat、SUSE等系列采用建立集中数据库,记录软件包安装/卸载等变化信息,分析软件包依赖关系
    • RPM包文件名特征
    – 软件名-版本信息.操作系统.硬件架构.rpm firefox-52.7.0-1.el7.centos.x86_64.rpm
    RPM包的一般安装位置(分散)
    image.png
    1)查询软件信息
    ]# rpm -qa # 当前系统中所有已安装的软件包
    ]# rpm -q firefox  # 查看firefox是否安装
    ]#rpm -qi firefox  # 查询软件信息
    ]#rpm -qpi /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
    ]#rpm -ql firefox  # 查询软件安装了哪些内容(安装清单)
    ]# rpm -qpl /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
    
    2)查询某个目录/文件是哪个RPM包带来的
    rpm -qf [文件路径]… //– 即使目标文件被删除,也可以查询
    ]# which vim # 查询命令对应的程序文件
    /usr/bin/vim
    ]#rpm -qf /usr/bin/vim
    vim-enhanced-7.4.160-4.el7.x86_64
    
    3)导入红帽签名信息(了解)
    ]# rpm --import /mnt/RPM-GPG-KEY-CentOS-7
    4)安装RPM软件
    – 格式:rpm -i RPM包文件…
    辅助选项
    – -v:显示细节信息
    – -h:以#号显示安装进度
    – —force:强制安装、覆盖安装
    – —test:测试安装,不做真实安装动作
    ]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
    5)卸载软件包
    选项 -e或—erase 卸载软件包
    RPM安装软件可能会出现的问题
    解决依赖关系
    – 先安装/卸载要求的包
    – 如果RPM包齐全但比较多,可以用通配符
    忽略依赖关系(不推荐)
    – 可能会导致软件运行异常
    – 辅助选项 —nodeps
    *常见依赖关系的报错:
    [root@localhost ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-61.el7.x86_64.rpm 
    #错误:依赖检测失败:
    #bind = 32:9.9.4-61.el7 被 bind-chroot-32:9.9.4-61.el7.x86_64 需要
    

    构建Yum软件包仓库

    作用:自动解决依赖关系安装软件
    服务:自动解决依赖关系安装软件
    服务端(本机): 1.众多的软件 2.仓库数据文件(repodata) 3.FTP协议 或 http 协议
    本地Yum仓库:服务端需要有光盘内容即可
    客户端(本机):指定服务端位置
    – 仓库配置:/etc/yum.repos.d/*.repo
    – 错误的文件会影响正确的文件
    客户端文件配置(/etc/yum.repos.d/*.repo)内容
    – [源名称] :自定义名称,具有唯一性
    – name:本软件源的描述字串
    – baseurl:指定YUM服务端的URL地址
    – enabled:是否启用此频道
    – gpgcheck:是否验证待安装的RPM包
    – gpgkey:用于RPM软件包验证的密钥文件
    示例
    ]# vim /etc/yum.repos.d/haha.repo
    [xixi123] # 仓库的名称,唯一标识
    name=hahaxixi # 仓库描述信息
    baseurl=file:///mnt # 指定服务端位置file://表示本地为服务端
    enabled=1 # 本文件启用
    gpgcheck=0 # 不检测红帽签名信息
    
    本地Yum仓库构建方法
    1.服务端:显示光盘的内容,挂载光驱设备
    2.客户端:书写客户端配置文件,指定服务端位置
    3.执行流程: yum命令—->/etc/yum.repos.d/*.repo—->baseurl=file:///mnt
    4.列出仓库信息:yum repolist
    Yum的使用
    安装软件
    ]# yum -y install httpd
    ]# rpm -q httpd # 检测是否安装
    覆盖安装(重新安装
    ]# yum -y reinstall hostname # 重新安装
    卸载软件
    ]# yum remove gcc
    查询
    ]#yum list ftp # 查询仓库是否有ftp软件
    ]#yum provides /etc/passwd # 仓库中那个软件包产生该文件
    清空缓存(yum——>/etc/yum.repos.d/*.repo)
    [root@localhost ~]# yum clean all

用户管理

用户账户

作用: 1.可以登陆操作系统 2.不同的用户具备不同的权限
唯一标识:UID(编号从0开始的编号,默认最大60000)
zhangsan(UID 1200)
管理员root的UID:永远为0
普通用户的UID:默认从1000开始

组账户

作用: 方便管理用户
唯一标识:GID(编号从0开始的编号,默认最大60000)
sg(1500)
原则:Linux一个用户必须至少属于一个组
组账户的分类:
基本组:系统创建与用户同名
附加组(从属组):由管理员创建,由管理员进行加入

本地账户的数据文件

/etc/passwd:存放用户基本信息配置文件
/etc/shadow:存放用户密码信息配置文件
/etc/group:存放组基本信息配置文件
/etc/gshadow:存放组的管理信息配置文件

1)/etc/passwd:存放用户基本信息配置文件

[root@localhost ~]# head -1 /etc/passwd
# root:x:0:0:root:/root:/bin/bash
# 用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器

2)/etc/shadow,保存密码字串/有效期等信息

[root@localhost ~]# grep nsd01 /etc/shadow
nsd01:$6$NVe937Nd$B0n94XrpQ.LipQHTpYh0iV/M4jCLdccfHxzRLprdxDzwk8WDDh/TzdTfh8lA9y9WKJ.8Ls/l5.w/1W.nV6CFX/:18481:0:99999:7:::

– 每个用户记录一行,以:分割为9个字段
字段1:用户帐号的名称;
字段2:加密后的密码字符串;
字段3:上次修改密码的时间;
字段4:密码的最短有效天数,默认0;
字段5:密码的最长有效天数,默认99999;
字段6:密码过期前的警告天数,默认7;
字段7:密码过期后多少天禁用此用户账号;
字段8:帐号失效时间,默认值为空;字段9:保留字段(未使用)
/etc/login.defs 文件可修改密码有效期时间和提前警报时间
PASS_MAX_DAYS 7
PASS_WARN_AGE 3

3)/etc/group,保存组帐号的基本信息

每个组记录一行,以:分割为4个字段

[root@localhost ~]# grep stugrp /etc/group
#stugrp:x:1504:nsd06
#组名:组密码占位符:组的GID:组成员列表

4)/etc/gshadow:组的管理信息配置文件

[root@localhost ~]# grep tarena /etc/gshadow
#tarena:!:nb:
#组名:密码加密字符串:组的管理员列表:组成员列表

useradd 用户账号创建:– 格式:useradd [选项]… 用户名

– -u:指定 UID 标记号
– -d:指定宿主目录(家目录),缺省为 /home/用户名
– -G:指定所属的附加组 -g:指定基本组
– -s:指定用户的登录解释器

]# useradd nsd01
]# useradd -u 1500 nsd02 # 指定UID创建用户
]# useradd -d /opt/nsd04 nsd04
]# useradd -G stugrp nsd06
]# useradd -s /sbin/nologin nsd10

usermod 用户命令:– 格式:usermod [选项]… 用户名

– -l:更改用户帐号的登录名称
– -u:用户id
– -d:家目录路径
– -s:登录解释器
– -G:附加组 //重置附加组

]# usermod -l stu13 nsd13  # 修改用户名字
]# usermod -u 1600 stu13  # 修改用户的UID
]#usermod -s /sbin/nologin stu13 # 修改用户的解释器程序
]# usermod -d /etc/abc nsd15 #-d:家目录路径(不会自动创建家目录)
]# usermod -G stugrp nsd16

passwd 设置密码:– 格式:passwd [选项]… 用户名

—stdin:从标准输入(比如管道)取密码
]# echo 123 | passwd —stdin nsd01

userdel命令删除用户:格式:userdel [-r] 用户名

添加 -r 选项,宿主目录/用户邮件也一并删除
]#userdel -r nsd01 # 连同家目录一并删除
工作中慎用选项r,一般保留用户家目录30天后再手动删除

gpasswd 命令管理组成员:– 格式:gpasswd [选项]… 组名

-a:添加组成员,每次只能加一个
-d: 删除组成员,每次只能删一个
-M:定义组成员用户列表,可设置多个
-A:定义组管理员列表

]# gpasswd -a kaka tarena # 添加用户kaka到tarena组
]# gpasswd -d nb tarena # 将nb用户从tarena组中删除
]# gpasswd -M ‘jack,kenji’ tarena # 定义组成员列表
]# gpasswd -M ‘’ tarena # 删除组中所有成员
]# gpasswd -A nb tarena  # 设置组管理员

groupdel 删除组账号:删除组的时候,不可以删除基本组

]#groupdel tarena

chage 修改帐号和密码的有效期限

-M 密码保持有效的最大天数
-W 用户密码到期前,提前收到警告信息的天数
-E 帐号到期的日期,会禁止此帐号
-d 上一次更改的日期
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
# 使用-l参数列出用户密码过期的设置:
[root@linuxcool ~]# chage -l root

# 使用-M参数设置redis用户的密码最大有效期为100天:
[root@linuxcool ~]# chage -M  100 redis

计划任务

用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
软件包:cronie、crontabs
系统服务:crond
日志文件:/var/log/cron

crontab 命令

– 编辑:crontab -e [-u 用户名]
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]

计划任务书写格式

*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n …

分 时 日 月 周 任务命令行(绝对路径) 
* * * * *          # 每分钟执行一次 
30 8 * * *          # 每天早上8:30 执行一次
30 23 * * 5         # 每周的周五23:30 执行一次
30 23 * * 1-5        # 每周的周一至周五23:30 执行一次
30 23 * * 1,3,6 # 每周的周一周三周六23:30 执行一次
* */2 * * *          # 每隔2小时运行60次
4 */2 * * *         # 每隔2小时运行一次

脚本批量启动停止jar包