Linux高级
一.vi/vim编辑器
vi/vim编辑器的三种工作模式
命令模式(command mode) 命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。 此模型下,不能自由进行文本编辑。
输入模式(Insert mode) 也就是所谓的编辑模式,插入模式 此模式下,可以对文件内容进行自由编辑 。
底线命令模式(last line mode) 以:开始,通常用于文件的保存、退出。
vi操作文件三大步
打开文件:vim 文件名.后缀名 注意:如果文件存在就打开,不存在就创建
编辑文件:输入i进入文件进行编辑
保存文件:
1、先进入命令模式:按ESC键
2、进入底线命令模式:输入冒号;
3、输入命令:w(保存) q(退出) q!(强制退出) wq(保存并退出) wq!(强制保存并退出)
vi其他命令
模式 | 命令 | 描述 |
---|---|---|
命令模式 | i | 在当前光标位置进入输入模式 |
命令模式 | a | 在当前光标位置 之后 进入输入模式 |
命令模式 | I | 在当前行的开头,进入输入模式 |
命令模式 | A | 在当前行的结尾,进入输入模式 |
命令模式 | o | 在当前光标下一行进入输入模式 |
命令模式 | O | 在当前光标上一行进入输入模式 |
输入模式 | esc | 任何情况下输入esc都能回到命令模式 |
二.帮助手册
help查看帮助:命令 --help 解释:会列出ls命令的帮助文档 举例:ls --help
man查看手册:man 命令 解释:man(manual,手册)命令查看详细手册 举例:man ls
三.用户和用户组
用户基本操作
需要在超级管理员root用户下操作
添加用户(不指定组):useradd用户名
注意:默认在/home目录下创建一个以用户名命名的文件夹,此文件夹就是对应用户的家目录
注意: 如果添加用户的时候没有指定所属组,默认自动生成了一个以此用户名命名的组。
删除用户:userdel [-r] 用户名
注意:如果不加-r,用户被删除后,它的家目录依然存在
注意:如果用户所属组是添加用户的时候自动生成,那么删除用户的对应的组也会自动删除。
查看所有用户快捷键:getent passwd 查看所有用户普通方式:cat /ect/passwd
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
切换用户
在前面,我们接触过su命令切换root账号。 su命令就是用于账号切换的系统命令,其来源英文单词:Switch User
-符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl+d
切换到指定用户语法:su [-] 用户名
注意:使用普通用户,切换到其它用户需要输入密码,如切换到root用户 注意:使用root用户切换到其它用户,无需密码,可以直接切换
退出当前用户:exit或者ctrl+d
拓展如何在root用户下给普通用户添加密码:passwd 用户名 就会提示输入2次密码
用户授权
在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。
但是我们实际一般不知道root密码,即使知道也不建议长期使用root用户,避免带来系统损坏。
实际我们找到用户root权限的管理者,申请root权限后使用sudo其他命令
1.root用户如何给普通用户授权?
进入 /ect/sudoers快捷方式:visudo
进入 /ect/sudoers普通方式:vi /ect /sudoers
2.在文件最后添加以下内容并保存
格式:普通用户名 All=(ALL) NoPassWD:all
举例:binzi All=(ALL) NoPassWD:all
3.普通用户下使用root权限 格式:sudo其他命令 注意:即使前面授权了使用的时候,没有添加sudo,依然是权限不够
用户组操作
添加用户组:groupadd 组名
删除用户组:groupdel 组名
查看所有用户组快捷方式:getent group
查看所有用户组普通方式:cat /etc /group 组名称:组认证(显示为x):组ID
修改文件/目录的所属组:charg 组名 指定文件 /目录路径
用户和组
创建新用户同时指定组:useradd 用户名 -g 组名
注意:多个用户可以指定同一个组
注意:如果添加用户的时候手动指定了组,删除该用户的时候,组依然存在。
添加已存在用户到指定组:usermod -aG 组名 用户名
注意:一个用户可以属于多个组
四.修改权限
ll命令图解
权限详解:
chmod
修改权限方式1:chmod [-R] +rwx 文件 注意:w只能给当前用户加上
修改权限方式2:chmod [-R] 777 文件 以数字方式给文件设置最高权限
修改权限方式2:chmod [-R] u=rwx,g=rwx,o=rwx文件 以数字方式给文件设置最高权限
-R:对文件夹的全部内容应用同样的操作。
chown
修改用户和用户组:chown [-R] 用户 文件
修改用户:chown [-R] 用户 文件
修改用户组:chown [-R] :用户组 文件
-R:对文件夹内的全部内容应用同样的操作
五、快捷键
清屏:clear 或者 ctrl+L 停止:ctrl+c 退出:exit 或者ctrl+D
光标移动到开头:Home键 或者ctrl+a 光标移动到结尾:End键 或者ctrl+e
查看历史命令记录:history
六、系统命令
rpm:全称Redhat Package Manager,红帽包管理器。 一般都是用于离线安装,不能解决依赖问题
yum:全称Yellowdog Updater Modified,黄狗更新器 基于rpm,一般用于在线安装,能够解决依赖问题
yum在线安装tree:yum -y install tree yum在线安装lrzsz:yum -y install lrzsz
systemctl
LInux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启…
能够被systemctl管理的软件,一般也称为:服务
语法:systemctl [start | stop | restart | status | disable | enable ] 服务名
常见的内置服务:
firewall.service,防火墙服务
NetworkManager,主网络服务
network,副网络服务;
sshd,ssh的服务(客户端远程登录Linux使用就是这个服务)
示例:
1.关闭和禁用防火墙(必须做)
关闭当前运行防火墙服务:systemctl stop firewall.service
禁用防火墙服务开机自启:systemctl disable firewalld.service
查看当前运行防火墙状态:systemctl status firewald.service
2.关闭和禁用主网络服务(可选做)
关闭主网络服务:systemctl stop NetworkManager
禁用主网络服务:systemctl disable NetworkManager
查看状态:systemctl status NetworkManager
重启网卡:systemctl restart network
3.查看副网络服务状态:systemctl status network
4.查看ssh的服务状态:systemctl status sshd
软连接/硬连接
软连接(类似快捷方式):ln -s要被连接文件或者目录的绝对路径 存放软连接目标路径位置
注意:如果软连接的被指向的源文件或者目录丢失,软连接就失败了。
硬连接(类似复制备份):ln 要被连接文件或者目录的绝对路径 存放的硬连接目标路径位置
注意:如果软连接的被指向的源文件或者目录丢失,硬连接不受影响。
日期时区(重点常用)
查看当前的系统时间:date
查看加后的系统时间:date -d “+1 day” 注意:day位置还可以是year,month,hour,minute,second
查看减后的系统时间:date -d “+1 day" 注意:day位置还可以是year,month,hour,minute,second
格式化显示系统时间:date [-d "+1 day"] "+%Y/%m/%d %H:%M:%S"
格式化字符串:通过特定的字符串标记,来控制显示的日期格式
%Y | 年 |
---|---|
%m | 月份(01…12) |
%d | 日期(01…31) |
%H | 小时(00…23) |
%M | 分钟(00…59) |
%S | 秒(00…60) |
注意:%y 年份后两位数字(00…99)
注意:%s 自 1970-01-01 00:00:00 UTC 到现在的秒数
修改时区校准时间
有时候,通过date查看的日期是不准确的,只是因为:系统默认时区非中国的东八区。
使用修改时区:使用root权限,执行如下命令,修改时区为东八区时区,将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可
[root@binzi~]# rm -f /etc/localtime
[root@binzi~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
我们可以通过ntp程序自动校准系统时间 安装ntp服务:yum -y install ntp
注意:安装ntp服务会自动安装ntpdate工具
启动ntpd服务:systemctl start ntpd 设置开机自启:systemctl enable ntpd
当ntpd启动后会定期的帮助我们联网校准系统时间:
通过阿里云提供的服务网址配合ntpdate命令自动校准(需root权限):ntpdate -u ntp.aliyun.com
ip和主机名
ip地址作用:每台网络设备在网络中的唯一标识(就是根据ip能够找到对应的网络设备)
查看主机名:cat / ect/hostname
修改主机名方式1:vi /ect /hostname
修改主机名方式2:hostnamectl set-hostname 新主机名
域名解析
域名:可以理解成就是ip地址的别名
注意:访问域名本质就是访问该域名对应的ip地址
先查看本机的记录(私人地址本) Windows看: C:\Windows\System32\drivers\etc\hosts
Linux看: /etc/hosts 再联网去DNS服务器如(114.114.114.114,8.8.8.8等)询问
举例: 给统一虚拟机配置本地域名,把以下三行复制粘贴到C:\Windows\System32\drivers\etc\hosts文件中
192.168.88.161 node1.itcast.cn node1
192.168.88.162 node2.itcast.cn node2
192.168.88.163 node3.itcast.cn node3
配置固定ip
"""
当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。
==DHCP==: 动态主机配置协议 全称(Dynamic Host Configuration Protocol) 每次重启设备后都会获取一次ip,可能导致IP地址频繁变更
如何配置固定ip:
1: 在VMware软件上nat网关 举例: 192.168.88.2
2: 打开ifcfg-ens33文件进行修改
"""
[root@node1 /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
# 1.把原来的dhcp修改static
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="dfd8991d-799e-46b2-aaf0-ed2c95098d58"
DEVICE="ens33"
ONBOOT="yes"
# 2.添加以下内容
IPADDR="192.168.88.101"
PREFIX="24"
GATEWAY="192.168.88.2"
NETMASK="255.255.255.0"
DNS1="8.8.8.8"
DNS2="114.114.114.114"
IPV6_PRIVACY="no"
直接重启网卡服务
[root@node1 ~]# systemctl restart network
# 注意: 如果重启后,ip地址已经变化,需要用客户端重新连接!!!
查看ip地址
[root@node1 /]# ifconfig
ping_wget_curl
- 使用ping命令可以测试到某服务器是否可联通 语法: 选项:-c,测试的次数
- 使用wget命令可以进行网络文件下载 语法: 选项:-b,后台下载
- 使用curl命令可以发起网络请求 语法: 选项:-O,用于下载使用
网络编程
网络编程三要素: ip地址 端口号 协议
ip地址作用: 每台网络设备在网络中的唯一标识(大白话就是根据ip能够找到对应网络设备)
注意: 127.0.0.1和localhost一般都代表本地主机 www.baidu.com就是百度服务ip地址的别名
端口号: 网络设备上每个程序的对应端口的编号(大白话就是根据端口号找到对应程序)
端口号范围: 0-65535
端口号分类: 知名端口号0-1023 注册端口号为1024-49151 动态端口号49152-65535
注意: 远程连接虚拟机默认端口号22 mysql端口默认3306
nmap能够查看本机当前已经占用的端口: yum -y install nmap 使用: nmap 127.0.0.1
netstat -anp | grep 端口号: 查看本机指定端口号的占用情况
协议: 网络传输的规则
tcp协议: 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议
进程
进程: 是指运行中的程序,并拥有独立的进程ID(进程号)
查看进程信息: ps -ef
查找指定进程信息: ps -ef | grep 关键字
关闭指定进程号的进程: kill -9 进程号
资源
可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器 默认每5秒刷新一次,语法:直接输入top即可,按q或ctrl + c退出
查看磁盘资源使用情况: df -h
查看内存资源使用情况: free -h
mem:表示物理内存统计
buff/cache:表示物理内存的缓存统计
swap:表示硬盘上交换内存的使用情况
mem和swap关系: swap是mem的备份,swap是mem内存不够时,磁盘虚拟出来的内存,磁盘主要是 I/O 级别的操作,并不是系统内核级别的操作,处理速度跟 mem 区不是一个等级
-h:以更加人性化的单位显示
七.客户端上传下载(重点)
图形
命令
安装lrzsz:yum -y insatll lrzsz
rz:上传
sz:下载
八.压缩和解压缩
tar命令 普通打包
打包并使用gzip压缩
打包并使用bzip2压缩
参数
-c,创建压缩文件,用于压缩模式
-v,显示压缩、解压过程,用于查看进度
-x,解压模式
-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
-z,gzip模式,不使用-z就是普通的tarball格式
-C,选择解压的目的地,用于解压模式
普通打包格式: tar -cvf 包名.tar 多个文件或者目录
普通解包格式: tar -xvf 包名.tar -C 目标位置路径
gzip压缩格式: tar -zcvf 包名.tar.gz 多个文件或者目录
gzip解压格式: tar -zxvf 包名.tar.gz -C 目标位置路径
bzip2压缩格式: tar -jcvf 包名.tar.bz2 多个文件或者目录
bzip2解压格式: tar -jxvf 包名.tar.bz2 -C 目标位置路径
zip和unzip命令
打包并使用zip压缩
参数
-r: 压缩目录的时候递归进入
-d: 选择解压的目的地
zip压缩格式: zip -r 包名.zip 多个文件或者目录
zip解压格式: unzip 包名.zip -d 目标位置路径