基础
grep命令
从文件中通过关键字过滤文件行
语法:grep [-n] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行的行号
- 参数,关键字,必填,表示过滤的关键字,建议用””包裹
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容的输入端口
wc
通过wc命令统计文件的行数、单词数量等
语法:wc [-c -m -l -w] 文件路径
- -c 统计bytes数量
- -m 统计字符数量
- -l 统计行数
- -w 统计单词数量
- 文件路径,被统计的文件
管道符 |
将管道符左边的命令结果,作为右边的输入
echo
echo命令可以在命令行内输出指定内容
语法: echo 输出的内容
反引号 `
被`包围的内容,会被作为命令执行,而非普通字符
echo pwd |
重定型符 >和>>
>将左侧命令结果,覆盖写入到符号右侧指定的文件中>>将左侧命令的结果,追加写入到符号右侧指定的文件中
[root@whoami1 cxx]# cat 1.txt |
tail命令
可以查看文件尾部内容,跟踪文件最新更改
tail [-f -num] Linux路径
- -f 表示持续跟踪
- -num 表示查看尾部多少行,不填默认10行
[root@whoami1 cxx]# ls / > 1.txt |
vi、vim编辑器
三种工作模式
命令模式
0 移动光标到当前行的开头
$ 移动光标到当前行的结尾
pageup 向上翻页
pagedown 向下翻页
/ 进入搜索模式(/后面加空格)
n 向下继续搜索
N 向上继续搜索
dd 删除光标所在行的内容
ndd n是数字,删除当前光标向下n行
yy 复制当前行
nyy n是数字,复制当前光标向下n行
p 粘贴复制的内容
u 撤销修改
ctrl+r 反向撤销修改
gg 跳到首行
G 跳到尾行
dG 从当前行开始,向下全部删除
dgg 从当前行开始,向上全部删除
d$ 从当前光标开始,删除到本行的结尾
d0 从当前光标开始,删除到本行的开头
输入模式
底线命令模式
:wq 保存并退出
:q 仅退出
:w 仅保存
:set nu 显示行号
:set paste 设置粘贴模式(用于从外部复制内容时使用)

用户和权限
su
用于账户切换的系统命令 来源于:Switch User
语法:su [-] [用户名]
-符号是可选的,表示是否在切换用户后加载环境变量,建议加上- 参数:用户名,表示要切换的用户,不写是root用户
- exit退回上一个用户
sudo
当我们知道root密码,可以用su切换到root
不建议长期使用root用户
sudo,为普通命令授权,临时以root身份执行
语法:sudo 其他命令
- 并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
为普通用户配置sudo认证
- root用户执行
visudo命令,会通过vi编辑器打开/etc/sudoers文件 - 在文件的最后添加: 用户名 ALL=(ALL) NOPASSWD:ALL
- NOPASSWD:ALL 表示使用sudo命令无需输入密码
- :wq保存
用户用户组
一个用户可以加入多个用户组
用户组管理
groupadd
创建用户组
语法:groupadd 用户组名
groupdel
删除用户组
语法:groupdel 用户组名
用户管理
useradd
创建用户
语法:useradd [-g -a] 用户名
- -g 指定用户的组,不-g指定,会创建同名组并自动加入
- -d 指定用户home路径,不指定,默认在:/home/用户名
userdel
删除用户
语法:userdel [-r] 用户名
- -r 删除用户的home目录,不-r home目录保留
id
查看用户所属组
语法:id [用户名]
如果不加用户名,默认查看自身
usermod
修改用户所在组
语法:usermod -aG 用户组 用户名
将指定用户加入指定用户组
getent
查看系统中有哪些用户
语法:getent passwd
共七份信息:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
软件安装
yum
rpm包软件管理器,用于自动化安装配置Linux软件,并自动解决依赖问题
apt
dep包软件管理器,用于自动化安装配置Linux软件,并自动解决依赖
systemctl
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制启动、停止、开机自启
能够被systemctl管理的软件,一般也称为:服务
语法:systemctl start|stop|status|enable|disable 服务名
- start 启动
- stop 关闭
- status 查看状态
- enable 开启开机自启
- disable 关闭开机自启
防火墙服务:firewalld
# 关闭防火墙 |
ln
软链接
类似于Windows中的快捷方式
语法:ln -s 参数1 参数2
- -s,创建软链接
- 参数一:被链接的文件或文件夹
- 参数二:要链接去的目的地
日期和时区
date
查看系统的时间
语法:date [-d] [+格式化字符串]
- -d 按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串: 通过特定的字符串标记,来控制显示日期的格式
- %Y 年
- %y 年份后两位数字
- %m 月份
- %d 日
- %H 小时
- %M 分钟
- %S 秒
- %s 自1970-01-01 00:00:00 UTC 到现在的秒数
[root@whoami1 ~]# date "+%Y-%m-%d %H:%M:%S" |
修改时区
rm -f /etc/localtime |
ntp
我们可以通过ntp程序自动校准系统时间
安装ntp:yum install -y ntp
启动并开机自启:
systemctl start ntpd
systemctl enable ntpd
自动定期校准
手动校准:ntpdate -u ntp.aliyun.com
IP地址和主机名
IP地址
IPv4格式:a.b.c.d,其中abcd表示0-255的数字
ens33:主网卡
127.0.0.1:代表本机
0.0.0.0:特殊IP地址
- 可以用于指代本机
- 可以在端口绑定中用来确定绑定关系
- 在一些ip地址限制中,表示所有ip的意思,如放行规则设置为0.0.0.0,表示允许任意ip访问
主机名
每一台电脑出了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名
命令:hostname
修改主机名:hostnamectl set-hostname 新名字
域名解析

虚拟机配置固定IP
为什么需要固定IP
当前我们虚拟机的Linux系统,其IP地址是通过DHCP服务获取的
DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更
在VMware Workstation中配置固定IP
第一步
编辑–>虚拟网络编辑器


第二步
在Linux系统中修改固定IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33 |

IPADDR="192.168.52.141" |
然后执行systemctl restart network重启网卡即可
网络传输
ping
检查指定网络服务请是否可以连通
语法:ping [-c num] ip或者主机名
- -c:检查的次数,不适用-c,将无限次数持续检查
# 检查4次 |
wget
wget是非交互式的文件下载器,可以在命令行中下载网络文件
语法:wget [-b] url
- -b:可选,后台下载,会将日志写在当前工作目录下的wget-log文件
- 可以tail -f wget-log持续查看
- url:下载链接
curl
可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-O] url O是大写
- -O:用于下载文件,当url是下载连接时,可以使用次选项保存文件
- url:要发起请求的网络地址
[root@whoami ~]# curl cip.cc |
端口
端口是设备和外界通信交流的出入口。可分为物理端口和虚拟端口
- 物理端口:又可以称之为接口,是可见端口,如usb接口RJ45网口,HDMI端口等
- 虚拟端口:值计算机内部端口,是不可见的,是用来操作系统和外部进行交互使用的
在Linux中支持65535个端口,分为三类进行使用:
- 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如ssh服务的22端口,HTTPS服务的443端口,非特殊需要,不要占用
- 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序或服务
- 动态端口:49152~65535,通常不会绑定固定的程序,而是当程序对外进行网络链接时,临时使用
查看端口占用
使用nmap命令,查看对外暴露的端口
安装nmap:yum install nmap
语法:nmap 被查看的IP地址
[root@whoami ~]# nmap 127.0.0.1 |
使用netstat命令:查看指定端口的占用情况
安装:yum install net-tools
语法:netstat -anp | grep 端口号
进程管理
程序运行在操作系统中,是被操作系统管理的
为了管理运行的程序,每一个程序在运行的时候,便会被操作系统注册为系统中的一个进程
并为每个进程都分配一个独有的:进程ID(进程号)
查看进程
语法:ps [-e -f]
- -e 显示出全部的进程
- -f 以完全格式化的形式展示信息(展示全部信息)
固定用法:ps -ef 列出全部进程的全部信息
| uid | pid | ppid | c | stime | tty | time | cmd |
|---|---|---|---|---|---|---|---|
| 进程所属的用户id | 进程的进程号id | 进程的父id(启动此进程的其他进程) | 此进程的cpu占用率 | 进程启动时间 | 启动此进程的终端序号,如?,表示非终端启动,而是系统内置启动 | 进程占用cpu的时间 | 进程对应的名称或启动路径或启动命令 |
关闭进程
kill
语法:kill [-9] 进程id
-9:表示强制关闭。不使用-9,表示向进程发送信号要求其关闭,是否关闭看进程自身的处理机制
主机状态
top
查看系统资源占用



df
磁盘信息监控
语法:df [-h]
-h:以更加人性化的单位显示
网络状态监控

环境变量
在Linux中执行:env 可以查看当前系统中记录的环境变量
env | grep PATH
$ 取出变量
echo $PATH
自行设置环境变量
- 临时设置 语法:exprot 变量名=变量值
- 永久生效
- 针对当前用户生效,配置在当前用户的:~/.bashrc文件中
- 针对所有用户生效,配置在系统的:/etc/profile文件中
- 并通过语法:source 配置文件,进行立刻生效,或者重新登陆ssh工具
自定义环境变量PATH
环境变量PATH这个项目记录了系统执行命令的搜索路径
这些搜索路径我们也可以自行添加到PATH中去
- 临时修改PATH:export PATH=$PATH:/home/whoami/cxx,再次执行hello,无论在哪都可以执行了
- 永久修改PATH:将
export PATH=$PATH:/home/whoami/cxx填入环境变量文件:用户:~/.bashrc 所有:/etc/profile,再source 配置文件
[root@whoami ~]# mkdir cxx |
上传下载
rz、sz
要使用rz、sz命令需要安装,yum install lrzsz
- rz 上传 输入rz
- sz下载 输入sz 要下载的文件
文件会自动下载到桌面的fsdownload文件夹中
压缩解压
tar
Linux和Mac系统中常用的2中压缩格式分别是:
- .tar,称之为tarball,归档文件,简单的将文件组装到一个.tar文件内,没有太多的文件体积减少,仅仅是简单的封装
- .gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大减少压缩后的体积
针对这两种格式,使用tar命令均可以进行压缩和解压
语法:tar [-c -v -x -f -z -C] 参数1 参数2 … 参数n
-c 创建压缩文件,用于压缩模式
-v 显示压缩,解压过程,用于查看进度
-x 解压模式
-f 要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
-z gzip模式,不适用-z就是不同的tarball格式,如果使用,一般处于选项的第一位
-c 选择我解压的目的地,用于解压模式

zip
可以使用zip命令,压缩文件为zip压缩包
语法:zip [-r] 参数1 参数2 … 参数n
- -r,被压缩东西的包含文件夹的时候,需要使用-r,和rm、cp等命令的-r效果一致
unzip
使用unzip命令,可以方便的解压zip压缩包
语法:unzip [-d] 参数
-d 适当要解压去的位置,同tar的-C选项
参数 被压缩的zip压缩包文件
集群
配置多台Linux虚拟机
克隆3台centos7
改名:分别改为123:hostnamectl set-hostname node1 2 3
配置IP地址:vi /etc/sysconfig/network-scripts/ifcfg-ens33
只需要修改IP地址 (第二台,第三台改一下UUID(只需要改一个数字就行))
然后重启网卡 systemctl restart network
准备主机名映射
Windows中:
C:\Windows\System32\drivers\etc
管理员身份打开记事本打开hosts,在最后写上
192.168.52.161 node1
192.168.52.162 node2
192.168.52.163 node3
三台Linux中:
vi /etc/hosts 下填入
192.168.52.161 node1
192.168.52.162 node2
192.168.52.163 node3
配置SSH免密登录
1、在每台机器上都执行:ssh-keygen -t rsa -b 4096,一路回车
2、在每台机器都执行:
ssh-copy-id node1 |
然后就可以ssh node2 …. 三台主机之间随意穿梭
配置jdk环境
https://www.oracle.com/java/technologies/downloads/

上传到Linux的root目录
# 创建一个目录 |
关闭防火墙和SELinux
集群化软件之间需要通过端口相互通讯,为了避免出现网络不通的问题,我们可以简单的在集群内部关闭防火墙
关闭防火墙(每台都执行):
systemctl stop firewalld |
Linux有一个安全模块:SELinux,用以限制用户和程序的相关权限,用来确保系统的安全稳定
SELinux的配置同防火墙一样,非常复杂
当前,我们只需要关闭SELinux功能,避免后面的软件运行出现问题
vi /etc/sysconfig/selinux |
输入:init 0 关机 ,init 6 是重启
防火墙
查看防火墙状态
systemctl status firewalld |
启动防火墙
systemctl start firewalld |
停止防火墙
systemctl stop firewalld |
查看防火墙已经开放的端口
firewall-cmd --list-port |
添加开放指定端口
firewall-cmd --zone=public --add-port=需要开启的端口号/tcp --permanent |
关闭指定端口
firewall-cmd --zone=public --remove-port=需要开启的端口号/tcp --permanent |
设置完成后要重新加载防火墙
firewall-cmd --reload |
