当前位置:   article > 正文

Linux运维命令大全_linux 运维 远程执行命令

linux 运维 远程执行命令

1.基本命令

MobaXterm远程连接服务器命令:ssh root@192.168.26.135

绝对&相对路径

-- 关于windows
ipconfig
ipconfig /all
-- 【注】 windows命令都是拼接 /
-- 【注】 linux命令都是拼接 -

-- 绝对路径		从根开始的
/etc/services
-- 相对路径		不是从根开始的	
etc/services 
./test.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

修改初始密码

ro 替换 rw
init=/bin/bash
en_US.UTF-8
zh_CN.UTF-8

ctrl+x
passwd
vi /etc/selinux/config
# enforing-dis
touch /.autorelabel
exex /sbin/init
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

虚拟机配置

-- 查看虚拟机型号	
cat /etc/redhat-release
-- 查看具体配置 	
lscpu    或  	lsblk

-- 关闭服务器(是关闭的服务器不是Tomcat服务)
Shutdown -h 

-- 服务器操作
shutdown -h now 	-- 立即关机
shutdown -r now 	-- 立即重启
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.运维命令

目录&文件

cd   	-- 切换目录
cd /    -- 根目录    
cd ~   	-- 家目录:进入home文件夹下面
cd .  	-- 当前目录
cd ..	-- 返回上一层目录
cd -	-- 上一次的目录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
pwd		-- 查看当前目录
ls -al	-- 显示目录、文件
find /home -iname 1.sql		-- 在目录下搜索文件或目录
locate	-- 文件资料库中查找文件
ls -lh	-- 人类可见查询

-- 查看全部
ls   或   ll   或   ls -l   或   ls -ls
-- 查看全部
ls -a  点和点点也会显示  
ls -A  点和点点不显示	点表示当前目录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
touch	-- 创建空文件
touch /home/a.txt
touch a b c
mkdir	-- 创建空目录
mkdir /usr/java		-- 在usr下创建java目录
In		-- 创建链接文件
rmdir	-- 删除空目录
rm -f	-- 删除文件	
rm –r filename
rm -rf 	-- 删除目录	
rm -rf filename  
cp		-- 文件拷贝
cp -r	-- 目录拷贝
mv 		-- 文件、目录移动或者重命名
mv apache-tomcat-8.5.55 /usr/local/tomcat1		-- 移动并重命名 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

压缩

-- lrzsz unzip
联网安装:yum install -y lrzsz unzip
rz		-- 上传到linux		 win  -- > linux	直接拖拽(默认拖拽到当前目录)
sz		-- 下载文件到win	   linux -- > win

-- tar包指的是档案文件	 (会压缩权限等信息) 推荐
	tar –cvf filename_2022.tar filename		-- 打tar包的方法
	tar –xvf filename_2022.tar				-- 解tar包的方法
-- gz包指的是压缩包文件	(压缩之后权限不可读不可写)
	tar –czvf filename_2022.tar.gz filename		-- 打压缩包的方法
	tar –xzvf filename_2022.tar.gz				-- 解压缩包方法
-- zip压缩包	【注】linux没有zip解压命令,需要联网下载 yum install unzip
	zip –r filename_2022.zip filename			-- 打zip压缩包
	unzip filename_2022.zip						-- 解压zip
	
	/*
	缺少GCC都无法安装Nginx、Redis
    检查是否有 gcc 编译器 	gcc -v
    联网安装命令			 yum install gcc gcc-c++
	*/

-- 压缩并且排除某一个文件夹
tar –czvf apache-tomcat.tar.gz apache-tomcat/ --exclude=webapps/webroot/backup 

-- 将/home/html/ 这个目录下所有文件和文件夹打包为当前目录下的html.zip
zip –q –r html.zip /home/html
-- 如果在/home/html目录下,可以执行一下命令
zip –q –r html.zip
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

scp 拷贝

# 从linux 192.168.11.150  远程拷贝到window本地d盘myfile文件夹
# 本地打开cmd,输入:
scp root@192.168.11.150:/tmp/pan.in.io.tar.gz d:/myfile

# linux从一台服务器拷贝到另一台服务器
# 打开目标服务器,输入:
scp -r root@192.168.11.150:/root/csv /usr/zhangQY

#	其中root@192.168.11.150:/etc/zhangQY.tar是源文件ip信息和路径
scp -r root@192.168.11.150:/etc/zhangQY.tar /tmp

scp /etc/passwd root@192.168.211.152:/tmp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

用户&权限

-- 打印当前登录用户	
whoami					
-- 切换root用户	
su root
-- 删除poc用户 【需要登录root最高用户进行操作】       
userdel –r poc

-- 添加用户
useradd zhangsan
-- 添加密码
passwd 123456

-- 首先:cd/	ll
-- 给文件夹赋予最高权限		
chmod –R 777 logs /app/tomcat/logs
-- 把logs文件夹所有者修改为admin		
chown admin logs /app/tomcat/logs
-- 修改当前文件夹下面所有的所有者,进入根目录
chown –R admin /app/tomcat/logs
-- 修改用户组		
chgrp appadmin app /app    
chown admin /app
--  改变用户组
chown -R user:group filelist
chown -R.group filelist
 
-- r4  w2   x1   排除第一个字母,每三个为一组
drwxr-xr-x 		三个为一组:代表755
lr-xr-xr-x		三个为一组:代表555
chmod 755		-- 目录权限
chmod 644 	    -- 普通文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
-- 基于访问控制列表(ACL)授权
setfactl
getfacl

-- SELinux权限
-- 基于应用程序权限
setenforce 0
setenforce 1	-- 开启

-- 配置文件
修改/etc/selinux/config使得SELinux=disabled

-- 基于文件属性的权限
chattr +i file
chattr -i file
chattr +a file
a:append
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

端口&进程

-- 查找进程号		
jps			
-- 杀掉进程		
kill -9 22433
-- 查找历史命令	
history

-- 根据端口号查进程       
lsof –i:端口号
-- 根据进程号查看端口号	
netstat –anop | grep pid
-- 查看所有启动端口情况	
netstat -ntpl
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

内存

-- 查询根目录文件存储空间空间使用情况
df -Th(人性化)	 或	df -h
-- 查询当前文件夹下的内存占用量		
du –lh --max-depth=1
-- 查询当前文件夹总大小
du -sh  
-- 查询当前文件夹下每个文件的总大小
du -sh * 
du -sm		-- 以M的单位显示

-- 清理前查看内存使用情况 		
free –m
-- 切换为root用户清理内存命令 
sudo echo 1 > /proc/sys/vm/drop_caches
sudo echo 2 > /proc/sys/vm/drop_caches
sudo echo 3 > /proc/sys/vm/drop_caches
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

jstack堆栈

-- 首先,查看tomcat的pid
ps –ef | grep tomcat 	
-- 其次,cd到jdk的bin目录下,输入:
jstack –l pid > 1.txt		-- 【注】这里的-l是小写的字母L 不是数字1) 
jstack –l pid > 2.txt		-- 每隔三秒打一次,一共打三次,打的时候改文件名
jstack –l pid > 3.txt
-- 最后,到jdk的bin目录下找到这些文件即可

特殊情况  堆栈打完提示-F  意思是没有权限   可以到app下面打堆栈
jstack –l pid >>1.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

防火墙

-- 开放8080端口		
firewall-cmd --zone=public --add-port=8080/tcp –-permanent
-- 重启防火墙	【注】开放完端口需要重启防火墙	  
systemctl restart firewalld.service

-- 查看防火墙状态	
systemctl status firewalld	(Active:inactive(dead)表示防火墙关闭状态)
-- 开启防火墙	
systemctl start firewalld	(Active:active(running)成功启动)
-- 关闭防火墙	
systemctl stop firewalld
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

服务

-- 查找是否存在tomcat进程		
ps –ef | grep tomcat

-- 启动服务器 并且 启动日志文件夹		
./startup.sh && tailf ../logs/catalina.out
-- 【注】
查看Tomcat版本号:tomcat/lib/catalina.jar 解压后看MANIFEST.MF文件信息


-- 查看是否设置了JDK环境变量	
echo $JAVA_HOME	
-- 查看java版本
java –version 
-- 查看jdk后台进程		
ps –ef | grep java
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

vim修改配置

-- 修改配置文件命令	 【注】首先要ESC退出命令框,才可以输入保存或退出命令
vi 或 vim
进入后,按i,屏幕下方会出现insert字样,此时可以修改内容
按ESC,退回命令模式
:x	是保存退出
:q!	是不保存退出
:wq!	保存并退出
-- 修改配置文件之后需要重启配置文件  
source /etc/profile

-- linux部署两个tomcat  需要在etc/profile文件下配置tomcat环境变量
#tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export CATALINA_BASE=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1
#tomcat2
export CATALINA_HOME2=/usr/local/tomcat2
export CATALINA_BASE2=/usr/local/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
-- 底线命令模式
: set nu 	加行号
: set nonu 	去掉行号
: s/string/replaced
-- 例:
: 0,$s/string/replaced
: 222/s/string/replaced

:x  存盘退出   =  wq
:q! 不存盘退出

! shellcommmd
!! 重复执行上次命令

: r 重新读取
: e 修改下一个文件

-- 命令模式
u:		撤销  恢复
dd		删除一行
5dd 	删除510000dd 全删除
-a  	并且

p		粘贴
yy 		复制
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

shell脚本

vi source.sh
# !/bin/bash

表达式:
- a 并且
- o 或者
- d 目录
- f 文件
- e 
- s 不为空
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
marriage boy 有房,有车,有存款

if [marriage = "boy"]
	if [$1="有房" -a $2="有车" -a $3="有存款"] 
		then echo "0"
	else 
		then echo "1"
	fi
else 
	then echo "是女孩,暂无判断!"
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.进阶命令

echo

echo		-- 用于将输入的字符串送往标准输出
echo $?  	-- 表示上一次命令的输出(执行成功,返回值是0;执行失败,返回值是0以外的值)  

echo $$  	-- 表示当前进程的进程号
  • 1
  • 2
  • 3
  • 4
# 案例:输出信息到屏幕(标准输出)
[root@master1 home]#  echo hellow
hellow
[root@master1 home]# echo {1...10}
{1...10}
[root@master1 home]# echo {1..10}
1 2 3 4 5 6 7 8 9 10

# 案例:输出信息到文件中
# >重定向符号(漏斗),先清空文件内容,然后写入信息
[root@master1 /]# echo {1..10} >/home/zhangQY/test01.txt
[root@master1 /]# cat /home/zhangQY/test01.txt
1 2 3 4 5 6 7 8 9 10
# >>追加重定向符号(漏斗),直接把信息写入到文件结尾
[root@master1 zhangQY]# echo {a..z} >>/home/zhangQY/test01.txt
[root@master1 zhangQY]# cat /home/zhangQY/test01.txt
1 2 3 4 5 6 7 8 9 10
a b c d e f g h i j k l m n o p q r s t u v w x y z
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

重定向

# 输出重定向
>	一个大于号:清空并写入
>>	二个大于号:追加并写入
合并输出流:2>$1 >$2
/dev/nullnull设备,永远都是0字节

# 输入重定向
<	一个小于号:文件内容作为输入
<<	二个小于号:eof之间内容作为输入
cat << eof > a
a
b
c
eof
<<<	三个小于号:直接内容作为输入
mysql <<< "select 1;"


# 例:
ls -l 1>screen

# 删除a,并且错误把2打印到2文件 正确的把1打印到1文件
rm a 2>2 1>1
1正确输出	2错误输出

# 查出etc文件夹下面的conf文件,如果有错误全部输入到error,正确的是text
cat /etc/*conf 2>error >text
cat /etc/*conf 2>text >&2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

文件查阅命令

cat、nl、tac

-- cat	显示文件内容
cat /etc/services	显示文件内容
cat 不带文件名称		直接从键盘读取

-- nl	带行号显示文件内容
nl /etc/services	代行号显示文件内容

-- ctrl_c:由系统中断        
-- ctrl_d:文件结束,正常终止

-- tac	tac同cat相反显示
tac(cat的反序)命令以行为单位反序输出文件内容;即第一行最后显示,最后一行先显示。
输出内容和 cat 命令相反
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

head、tail

# head 显示文件前n行(默认显示文件前10行)
# 查看文件头部2行	(两种写法)
head -2 /etc/services		
head -n2 /etc/services   或   head -n 2 /etc/services

# tail	显示文件最后n行(默认显示文件最后10行)
# 查看文件尾部2行(两种写法)
tail -2 /etc/services
tail -n2 /etc/services	 或	  tail -n 2 /etc/services

# 案例:tail实时显示(看日志)
# 窗口01 写入内容
echo abc ab cabc >>/home/zhangQY/test01.txt
# 窗口02 查看内容
tail -f /home/zhangQY/test01.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

more、less

-- 翻页查看文件,特别是文件比较大,比较方便

-- more		查看文件内容,查看到文件结尾自动退出
more /etc/services
-- less  	查看文件内容,查看到文件结尾还可以继续查看
-- less和more基本一样,功能比more强大,除了空格换页,上下键也可以滚动
less /etc/services  

快速定位到文件第一行	g
快速定位到文件最后一行	G
搜索	/
/ssh
继续向下搜索	n
继续向上搜索	N
退出	q
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4.支持管道的命令 |

wc

# 案例01:统计文件的信息
[root@master1 zhangQY]# wc /etc/services
 11176  61033 670293 /etc/services

# 案例02:  只显示行数
[root@master1 zhangQY]# wc -l /etc/services
11176 /etc/services
[root@master1 zhangQY]# wc -l /etc/services /etc/passwd
 11176 /etc/services
    54 /etc/passwd
 11230 total

# 案例03:通过wc -l统计个数(通过wc命令 把是否存在-->数字)
ps -ef | wc -l		# 显示所有进程数量

# 只查看ssh服务
ps -ef | grep ssh 
# 只查看ssh服务 进程数量
ps -ef | grep ssh | wc -l
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

sort

sort -u		-- 去重
sort -n   	-- 排序
sort -n -r 	-- 降序
sort -k		-- 按列排序

-k 3 		-- 指定某一列
-k 3.1		-- 根据第3列的第1个字符排序
-k 3.1,3.2	-- 根据第3列的第1个字符到第2个字符排序

-t 			-- 指定分隔符(每一列之间通过什么分割)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
# 案例01:sort排序数字
[root@master1 zhangQY]# seq 20 | sort
1
10
11
12
13
14
15
16
17
18
19
2
20
3
4
5
6
7
8
9
# 错误原因:sort命令默认按照一位一位(字符)的进行排序	按照1开头,在2开头。。。
# 解决:使用sort -n 选项
seq 20 | sort -n 

# 案例02:按照数字逆序排序
[root@master1 zhangQY]# sort -nr /home/zhangQY/test02.txt
1004 zhangsan 10000
1003 zhaoliu 50000
1002 lisi 90000
1001 wangwu 950000

# 案例03:指定某一列进行排序
# sort -n -k3	指定按照第3列排序
[root@master1 zhangQY]# sort -n -k3 /home/zhangQY/test02.txt
1004 zhangsan 10000
1003 zhaoliu 50000
1002 lisi 90000
1001 wangwu 950000
# sort -n -k3	指定按照第1列排序,第3列排序
[root@master1 zhangQY]# sort -n -k1 -k3 /home/zhangQY/test02.txt
1001 wangwu 950000
1002 lisi 90000
1003 zhaoliu 50000
1004 zhangsan 10000

#案例04:ip地址
192.168.3.3
192.168.2.3
192.168.3.4
# 按照第3列,第4列排序(如果第3列相同,则按照第4列排序)
错误示例:sort -t '.' -n k3 k4 /home
正确示例:sort -t '.' -n k3.1,3.1 k4 /home
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

uniq

uniq uniq.txt		-- 去重	
uniq -c uniq.txt	-- 分组统计【这里必须是连续的内容】

# 案例:
unqi.txt文件中的内容如下:
a
a
a
a
b
b
b
c
c
d
# 去重
[root@master1 zhangQY]# uniq uniq.txt
a
b
c
d
# 统计个数 分组统计
[root@master1 zhangQY]# uniq -c uniq.txt
      4 a
      3 b
      2 c
      1 d
      2

# 注意:以上是因为uniq.txt中的内容aaabbbcc是连续的,如果不连续,怎么写?
# 思路:先排序 在分组统计
sort uniq.txt | uniq
sort uniq.txt | uniq -c

# 案例:
sort ip.txt | uniq -c | sort -nrk1 | head 10
通过sort相同的在一起 | 去重统计次数 | 对次数进行排序 | 取次数最多的前10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

find

find	# 查看当前文件夹下所有文件【默认递归 递归所有】
-type 	# 查找什么类型的文件 f(file文件)、d(directory目录)、l(softlink软连接 快捷方式)	
-name	# 指定文件名
-size	# 大小或范围   + (大于)   - (小于)	
-mtime	# 修改时间     +7(表示7天之前)	    -7(表示最近7天)


字节  Byte  1个字节  1个英文状态的字符
1KB = 1024Bytes
1MB = 1024KB = 1024 ^2Bytes
1GB = 1024MB = 1024 ^3Bytes
1TB = 1024GB = 1024 ^4Bytes
1PB = 1024TB = 1024 ^5Bytes


# 查找etc下名称以conf结尾的目录
find /etc -name "*conf" -type -d
# 查找etc下名称以conf结尾的文件
find /etc -name '*conf' -type f	
# 大小  查找etc下大于10M的文件
find /etc -size +10M
# 范围  大于10M小于50M
find /etc -size +10M -size -50M
# 时间   
find /etc -atime +20 -ctime -20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

xargs

# xargs 一般和管道一起使用,多命令不支持|管道来传递参数,所以需要使用xargs。一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

# 案例:多行输入单行输出
[root@master1 zhangQY]# cat test02.txt
1004 zhangsan 10000
1002 lisi 90000
1001 wangwu 950000
1003 zhaoliu 50000
[root@master1 zhangQY]# cat test02.txt | xargs
1004 zhangsan 10000 1002 lisi 90000 1001 wangwu 950000 1003 zhaoliu 50000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

tr 替换

# 将文件testfile中的小写字母全部转换成大写字母
cat testfile |tr a-z A-Z 

# 案例: 把test02中的文件中的1004替换为1005
[root@master1 zhangQY]# cat test02.txt
1004 zhangsan 10000
1002 lisi 90000
1001 wangwu 950000
1003 zhaoliu 50000
[root@master1 zhangQY]# cat test02.txt | tr 1004 1005		
1005 zhangsan 10000
1002 lisi 90000
1001 wangwu 950000
1003 zhaoliu 50000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

文本三剑客

grep 查询

-- grep
env | grep PATH	
-i	-- 大小写不区分
-l	-- 只显示文件名称
-h	-- 不显示文件名称
-c	-- 匹配的行有多少行
-v	-- 取反	
-q	-- 不显示任何信息
-n	-- 显示行号
-o	-- 只显示匹配的单词,不显示整行
-r	-- 递归
-E 	-- 扩展正则表达式

env | grep -i PATH  	-- i表示不区分后面的大小写
find /etc/services |grep -v ^#	--查找/etc conf文件中不以#号开头

例:查找etc目录下以conf结尾的文件,如果包含linux,就输出文件名称
grep -i linux `find /etc/ -name "*conf"`
grep -i linux `find /etc/ -name "*conf"` | xargs cat
grep -li linux `find /etc/ -name "*conf"` |xargs cat |wc -l
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

sed 取行

# sed 	 sed打头对所有的行进行替换
sed -e... -e ...

# 语法:sed 's/  /  /g' test
sed  's/	找到字符 /  替换的字符 /g'	test
cat /etc/services |sed 's/[^#]#.*//g'
# 语法:sed -e '[0-9].*$'		-e 表示后面拼接表达式
	
# 案例:删除example文件的第二行
$ sed '2d' example 。

s/	替换(在前面)
/d  删除(在后面)
/a	增加(在后面):在指定的行上一行增加一行指定内容
	修改(在后面)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

awk 取列

# 取数  只取第1列
awk '{print $1}'

# 案例:计算etc目录下所有文件大小的总和
find /etc -type -f |xargs ls -l |awk '{sum=sum+$5}end{print sum}'
# 案例:查询etc下面以conf结尾并且文件中包含centos内容 并输出行数
grep -li centos `find /etc -name "*conf"` |wc -l
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5.特殊命令

特殊符号

-- $?	上一次命令的输出(成功:0  失败:除0以外所有值)
echo $?  
-- $$  表示当前进程的进程号
echo $$
-- &&	如果第一个命令成功,执行第二个命令
touch a && cat a
-- ||	如果第一个命令失败,执行第二个命令
rm a || echo "a not deleted"

(cat a || touch a && cat a) 2>/dev/null
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

计算 $(())

-- $((表达式))	 
两个圆括号可以直接计算且引用变量
  • 1
  • 2

执行 $()

-- $()  表示执行
''	单引号不解析里面的代码
""	双引号解析
  • 1
  • 2
  • 3

子查询 ``

# ``	相当于子查询

find /etc -name "*conf" -type f -size +2k -exec cp {} . \; 2>/dev/null

cp `find /etc -name "*conf" -type f -size +2k  2>/dev/null`.

rm -f $(ls -l) = rm -f `ls -l`

# 案例:
tar -cvf zhangQY.tar `find /etc -name '*conf' -type f  -size +1k`
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

环境变量

$SID
$SHELL
$USER
$PATH
%PATH%
PATH路径,环境变量
所有的命令所在的地方
PATH=$PATH

$name:$叫占位符
a=5
echo $a
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

正则表达式

^	开头
$	结尾
[]	范围	
-- [a-z|0-9]	在a-z或者0-9之间
-- [^a-z]		不是a-z
-- ^[^a-z]		不是以a-z开头的
-- [a|b]		a或者b
.	任意字符串,也可以是0个字符串
{n,m}	重复n到m次		
\s	只要出现空白就匹配
\S	非空白就匹配
+	前面的字符重复1次到无数次
*	前面的字符重读0次到无数次	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

ansible 批量操作

## 安装ansible
yum install epel-release	## 安装依赖包
yum install ansible		

## hosts文件  做分类
[k8s]
192.168.12.134
[middle]	# 中间件
192.168.12.134
[host]
192.168.12.134
[all:vars]  # vars变量
ansible_ssh_pass='1'   ## 免密
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

ansible 配置文件

cd /etc/ansible
vi ansible.cfg
# 修改配置文件中的forks=5,其中forks参数,表示控制并发数量

## 控制并发数量
ansible -i hosts all -m ping   ## ansible -i 指定主机清单
ansible -i hosts k8s -m ping
ansible -i hosts middle -m ping   

#第一个 需要上传的文件路径
#第二个 要上传到某个文件路径下
ansible -i hosts all -m copy -a 'src=/etc/hostname dest=/opt' 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述
在这里插入图片描述

6.K8S部分

Kubernetes k8s

k8s本质上是去管理容器技术docker(具有代表性)

-- 运维部署业务场景
1.集群架构,至少2台机器,master(主节点)管理节点,node工作节点
master根据维护者,写的yaml,对容器的运行描述,创建具体的容器,到node工作节点
2.该容器管理平台,应该自动识别,目标节点的状态,选择最合适得节点部署到新的容器
3.容器管理平台,能实现确保,应用副本数是否健康,正确的,后端得容器数量
4.容器的负载均衡,反向代理,如何配置(k8s的组件就可以实现)

-- Kubernetes主要由以下几个核心组件组成
api-server	接口
提供了资源操作的唯一入口,并提供认证,授权,访问控制,API注册和发现机制
etcd		数据库
保存了整个集群的状态,分布式高性能数据库。
controller manager		资源管理控制器
负责维护集群的状态,比如故障检测,自动扩展滚动更新等
scheduler		调度器:决定容器部署到那个节点(部署在主节点上)
负责资源的调度,按照预定的调度策略将Pod调度到相应的Node机器上
Kubelet
负责维护容器的生命周期 1。拉取镜像 2.运行容器
Kubectl
在master节点上敲打的命令,就和docker命令一样;客户端命令和api-server交互
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

在这里插入图片描述

k8s组件

Pods	封装一组容器,容器都是被pod管理   

Deployment	维护一组容器,由多个pod组成
比如:nginx容器,要求容器数量是4个,挂了2个会自动拉起服务,不需要手动命令开启;	
k8s运行的一组nginx容器,基于组件deployment运行的一组保证容器的副本数量 
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
在这里插入图片描述

k8s几大概念及作用

1.pod运行状态概念
waiting(等待)		running(运行中)	terminated(已终止)

2.label标签概念
node打标签,作用于部署pod
比如:创建mysql-pod的node选择器		描述k8s所有的配置文件都是走yaml语法
	 写yaml,描述mysql-pod如何部署时,加入一个条件,nodeSelector,节点选择器,diskType:ssd
	 
3.namespace(资源组)  名称空间
k8s在创建资源的时候,可以单独创建一个资源
kubectl create namespace crm-all nginx
								 mysql
								 php
								 这一类pod都属于crm-all这个资源组
增删改查,都得制定在crm-all才能创建,删除,查看
kubectl get pod				# 查看当前默认资源组下,有多少个pod
kubectl -n crm-all get pod	# 查看crm-all资源组下有多少个pod信息
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

Docker


  • 1

KVM

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/774950
    推荐阅读
    相关标签
      

    闽ICP备14008679号