Linux学习总结

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值