1.终端命令
man 命令: 获取外部命令帮助文档 空格翻页;回车一行一行的翻;b向前翻
cd:切换目录
ls: 查看当前文件夹下的所有文件和文件夹
tree ./: 查看当前文件夹下的所有文件和文件夹
2.vim命令
1.复制-粘贴-删除-退格
1.模式切换:
i 插入
:q 退出
:w 保存
:wq 保存退出
:q! 不保存退出
2.复制-粘贴-删除-退格
yy 复制一行
数字yy 复制数字行
y$ 从光标复制到末尾
y^ 从光标复制到开头
yw 复制当前词,,光标在词第一个位置;在中间则复制光标后面的一部分
p 粘贴
dd 删除
数字dd 删除数字行
dw 删除当前词,光标在词第一个位置;在中间则删除光标后面的一部分
x 相当于delete
X 相当于退格键
r 更改当前的字母
R 替换多个字母
u 相当于ctrl + z
2.定位位置
^ 跳到行头
$ 跳到行尾
w 下一个词头
e 下一个词尾
b 上一个词头
gg 整个文档的开头
G 整个文档的尾部
数字G 第数字行
3.查找-替换
查找:
/内容 查找
n 查找下一个
N 查找上一个
:noh 取消高亮
替换:
:s/old/new 替换当前行的第一个
:s/old/new/g 替换当前行的所有
:%s/old/new 替换所有行第一个匹配的
:%s/old/new/g 替换所有的匹配的单词
3.Shell命令
help 命令: 查看帮助文档
type 命令: 查看命令是内嵌还是外部命令
cd: 切换目录
ctrl + c: 停止进程
ctrl + l: 清屏
history: 查看历史命令记录
history 数字: 最近数字行
pwd: 当前工作目录的绝对路径
ls: 查看当前路径下的文件 ll -h:可以查看文件大小
tree ./:
find * : 查找文件 例如: find *.java
1.切换目录
目录为树形结构
绝对目录: cd /
反复横跳: cd -
返回上一级: cd ..
2.查看文件
ls -a: 查看当前目录的所有文件,包括隐藏文件
ls -l 相当于 ll: 详细信息,d代表文件夹
3.创建-删除目录/文件
mkdir 新目录: 创建文件;注意绝对路径和相对路径
mkdir -p a/b/c: 创建多级目录
rmdir 目录: 删除目录 只能删除空目录
rmdir -p a/b/c: 删除a目录和其子目录,不可以直接删除a(不支持)
rm 文件: 删除文件,需要确认
rm -f 文件: 直接删除,不确认
rm -rf 目录: 删除目录下的所有子目录和文件;严重 rm -rf /* 把文件全部删掉
rm -rf 目录/文件(空格隔开): 删除多个文件或者目录
4.创建空文件
touch 新文件: 创建新文件
vim 新文件: :wq保存退出,相当于创建; :q直接退出,不创建
5.复制文件或目录
cp 文件名 路径: 复制文件到指定路径.如果该路径下存在该文件,可以选择覆盖 如果路径最终是个文件,也是询问是否覆盖,并且文件名是路径上的文件名
cp -r 目录/ 路径: 将这个目录及下面的文件复制到指定路径
6.剪切
mv 文件名 目录名: 剪切到指定路径
mv 文件名 文件名: 剪切到指定路径并重命名;按q退出
mv 文件名 当前目录文件名 重命名;例:mv 1.cfg 2.cfg -> 把1重命名成2
7.查看
cat -n 文件名: 只查看文件,-n代表显示行数
more 文件名: 只查看文件 空格翻页;回车一行一行的翻;b向前翻;=当前的行数
less 文件名: 只查看文件,适合很大的文件 同上; 查询:同vim
head 文件名: 查看头部10行内容
head -n 数字 文件名: 查看头部数字行
tail 文件名: 查看尾部10行
tail -n 数字 文件名: 查看尾部数字行
tail -f 文件: 实时追踪文档的变化 再开一个窗口,可以向文件中追加内容: echo "内容" >> 文件; 还可以暂停 ctrl+s, ctrl+q继续监控,但是窗口二在暂停期间的追加内容,会一下子全部追加到文件中,不会丢失;ctrl+c停止监控; 监控期间,vim打开文件修改,不会产生变化
8.输出重定向
echo "内容": 将内容输出到控制台,支持java转义字符
echo $ : 按Tab之后,查看环境变量
命令 > 文件: 将命令要打印的内容输出到文件,如果文件不存在,则创建文件;如果再次执行该命令,会删除文件的内容,重新写入
命令 >> 文件: 将打印的内容追加到文件,不清空之前的
9.软链接
ln -s 文件名 链接名: 创建软链接
pwd -P: 查看真实路径
cd -P 路径: 进入真实的目录
rm -rf 链接名: 删除链接;如果是 链接名/ 会删除对应的文件
4.时间日期类
date: 显示当前日期
date "+%Y-%m-%d %H:%M:%S": 自定义格式
date -d '1 days ago': 查看一天之前的时间
date -s "2022-08-10 20:20:20": 设置系统时间
cal -y(数字) : 查看当前(某)年度的日历
5.用户管理命令
1.添加-删除-修改用户
useradd 用户名: 添加用户
useradd -d 主文件夹 用户名: 添加用户,并指定主文件夹
useradd -g 用户组 用户名: 添加用户,指定用户组
passwd 用户名: 设置密码
userdel 用户名: 删除用户但保存用户的主目录
userdel -r 用户名: 删除用户和其主目录
-g:修改用户的初始登录组,给定的组必须存在。
usermod (-g) 用户组 用户名: 修改用户所在组
usermod -l 新名 老名
id 用户名: 查看用户的信息
su 用户名: 切换用户
who am i:(whoami) 查看最外层的用户是谁(目前用户)
设置普通用户具有root权限:
修改配置文件 vim /etc/sudoers
atguigu ALL=(ALL) ALL
atguigu ALL=(ALL) NOPASSWD:ALL(sudo时可以不输入密码)
然后可以登录atguigu账号,输入 sudo 命令:就可以进行root用户的操作
2.用户组管理
cat /etc/group: 查看所有组
groups 用户名 查看所在组
groupadd 组名: 添加组
usermod -g 组名 用户名: 修改用户所在组
groupdel 组名: 删除组
groupmod -n(指定新组名) 新组名 老组 修改组
6.文件权限
1.文件属性
0-9 执行代表复制粘贴等操作
0(文件类型): d(目录);l(链接文档)
1-3(属主权限:u): rwx(读,写,执行)
4-6(属组权限:g):r-x(读,写,执行)
7-9(其他用户权限:o):r-x(读,写,执行)
数量(文件是硬链接数量;文件夹是子文件夹数量(2+数量)) 用户 用户所属组 文件大小
2.修改权限
r:4; w:2; x:1
chmod (数字) 文件名或目录名: 修改权限
如果是目录: -R 会修改下面的所有文件的权限
chmod g+rwx 文件名: 修改单个权限,也可以( g-rwx) 随意组合
root用户修改文件的属组,属主
chown 最终用户 文件或目录: 改变属主
如果是目录 可以加上 -R
chgrp 最终组 文件或目录: 改变属组
https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2022/09/windows11.0-kb5017321-x64_89e24eb73f89f4f2879ee0128c3aabf362f9eb42.msu
7.查找定位
1.find
find 查找路径 -user 用户名: 按照用户名查找
find 查找路径 -name "*内容*(可随意搭配)": 按照名称查找
find 查找路径 -size 2M: 查找大于2M的文件
b —— 块(512 字节)
c —— 字节
w —— 字(2 字节)
k —— 千字节
M —— 兆字节
G —— 吉字节
2.locate
基于数据库查询,速度快.第一次运行前需要执行updatedb命令
updatedb
locate 内容
3.过滤查找
grep -n(显示行号) 文本内容 文件: 查找文本内容在文件中的所有位置,并打印整行
| 管道符
ls | grep xiao :查出带有xiao的文件夹 并ls
8.压缩和解压
1.压缩
tar -zcvf 指定打包之后的名称 需要打包的文件或文件夹(如果有多个,使用空格隔开)
例:tar -zcvf a.tar.gz a initial-setup-ks.cfg
2.解压缩
tar -zxvf 指定压缩包的名称 解压的路径
例:tar -zxvf a.tar.gz -C b/
-c 产生.tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar 文件
-C 解压到指定目录
9.系统服务管理
1.启动/停止/查看服务
systemctl 操作 服务名称: 操作服务
操作:
status: 状态
start: 启动
stop: 关闭
restart: 重启
disable: 开机关闭
enable: 开机启动
setup: 查看服务
systemctl get-default: 查看运行级别
init 5或3: 切换运行级别,3代表大黑屏,5代表GUI界面; 也可以用快捷键 ctrl+alt+f2:切换到3 ctrl+alt+f1:切换到5
multi-user.target 等价于原运行级别 3(多用户有网,无图形界面)
graphical.target 等价于原运行级别 5(多用户有网,有图形界面
2.关机/重启
shutdown: 1分钟后关机
shutdown -c: 停机关机操作
shutdown now: 马上关机
shutdown 数字: 数字分钟后关机
shutdown 时间: 到时间后,关机
reboot 重启
-H 相当于--halt(停机,关闭系统,但不断电),停机
-r -r=reboot 重启
3.端口暴露
#防火墙命令
# 查看所有打开的端口
firewall-cmd --zone=public --list-ports
# 永久开放 --permanent代表永久
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 开放端口区间
firewall-cmd --zone=public --add-port=8080-8082/tcp
# 更新防火墙规则
firewall-cmd --reload
10.进程管理
1.查看进程
ps aux | less
ps aux | grep XX: 筛选某某服务
ps -ef | less
a 列出带有终端的所有用户的进程
x 列出当前用户的所有进程,包括没有终端的进程
u 面向用户友好的显示风格
-e 列出所有进程
-u 列出某个用户关联的所有进程
-f 显示完整格式的进程列表
-----------------------------------
pstree
-p 显示进程的 PID
-u 显示进程的所属用户
ps aux 显示信息说明
USER:该进程是由哪个用户产生的
(重要)PID:进程的 ID 号
(重要)%CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源;
(重要)%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位 KB;
RSS:该进程占用实际物理内存的大小,单位 KB;
TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,
tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、
Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
START:该进程的启动时间
2.kill进程
kill 进程编号或进程名称
kill -9(强制杀死) 进程编号或进程名称
killall 进程编号或进程名称: 通杀(小心使用)
3.网络进程
netstat -anp | grep 进程号 查看该进程的网络状态
netstat –nlp | grep 端口号 查看网络端口号占用情况
-a 显示所有正在监听(listen)和未监听的套接字(socket)
-n 拒绝显示别名,能显示数字的全部转化成数字
-l 仅列出在监听的服务状态
-p 表示显示哪个进程在调用
11.卸载安装
1.rpm命令
rpm包都在/run/media/root/CentOS 7 x86_64/Packages 目录下;
特别注意: 进入CentOS 7 x86_64目录时,因为有空格,要对空格转义;即\空格
1.rpm安装命令
rpm -ivh RPM 包全名
-i install,安装
-v --verbose,显示详细信息
-h --hash,进度条
--nodeps 安装前不检查依赖
2.rpm卸载命令
rpm -e RPM软件
-e 卸载软件包
--nodeps 卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了。
2.yum命令
yum [选项] [参数]
-y 对所有提问都回答“yes”
参数说明
install 安装 rpm 软件包
update 更新 rpm 软件包
check-update 检查是否有可用的更新 rpm 软件包
remove 删除指定的 rpm 软件包
list 显示软件包信息
clean 清理 yum 过期的缓存
deplist 显示 yum 软件包的所有依赖关系
yum -y install 软件 安装软件
yum -y remove 软件 卸载软件
yum list | grep 软件 查看软件版本
yum search 关键字 #搜索
1.软件安装
1.JDK安装
# 显示现有jdk的RPM
rpm -qa | grep jdk
# 卸载openJDK
rpm -evh --nodeps java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
rpm -evh --nodeps java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
#解压缩
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local
#设置环境变量
vim /etc/profile
# 在文件最后插入
export JAVA_HOME=/usr/local/environment/jdk
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
# 生效profile
source /etc/profile
2.Mysql
#解打包
tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar -C mysql
#卸载自带数据库
yum remove mysql-libs
# 因为mysql的依赖关系,依次按顺序安装
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
# 获取mysql自动生成的密码
cat /var/log/mysqld.log | grep password
#启动mysql服务 让其生成初始密码
systemctl start mysqld
# 登录
mysql -u root -p
# 查看mysql密码全局参数配置
select @@validate_password_policy;
show variables like 'validate_password%';
# 修改mysql参数配置
# validate_password_policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
set global validate_password_policy=0;
# validate_password_length:密码最小长度,参数默认为8
set global validate_password_length=4;
# validate_password_number_count:密码至少要包含的数字个数
set global validate_password_number_count=1;
# validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数
set global validate_password_mixed_case_count=0;
# validate_password_special_char_count:密码至少要包含的特殊字符数
set global validate_password_special_char_count=0;
# 修改密码
set password=password('123456');
#开启远程访问
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
ifcfg-ens33文件
1.原文件
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=04f5fa81-621c-4f3e-82fa-f8fdfd4b20c0
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.190.128
PREFIX=24
GATEWAY=192.168.190.2
2.静态IP
路径:/etc/sysconfig/network-scripts
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="04f5fa81-621c-4f3e-82fa-f8fdfd4b20c0"
DEVICE="ens33"
ONBOOT="yes"
NETMASK=255.255.255.0
NM_CONTROLLED=no
GATEWAY=192.168.190.2
IPADDR=192.168.190.128
DNS1=114.114.114.114
DNS2=8.8.8.8
3.关于网络遇到的问题
1.NetworkManager和nwtwork冲突
Connection ‘ens33’ is not available on device ens33 because device is strictly unmanaged
解决:
查看托管状态
nmcli n
显示 disabled 则为本文遇到的问题,如果是 enabled 则可以不用往下看了
开启 托管 nmcli n on
重启网络:systemctl restart NetworkManager
4.关于网络的一些命令
查看device列表
nmcli d
查看所有device详细信息
nmcli d show
查看指定device的详细信息
nmcli d show eth0
激活网卡
nmcli d connect eth0
关闭无线网络(NM默认启用无线网络)
nmcli r all off
查看NM托管状态
nmcli n
开启NM托管
nmcli n on
关闭NM托管(谨慎执行)
nmcli n off
监听事件
nmcli m
查看NM本身状态
nmcli
检测NM是否在线可用
nm-online