**6.多命令一起执行**
grep ‘input’ 123.txt | sed ‘s/"//g; s/,/\n/g’
**7. 替换后将数据保存在文中**
grep 123.txt | sed -n ‘s/"//gw test01.txt’
#### 4、管道操作符`|`
* 可将指令连接起来,前一个指令的输出作为后一个指令的输入
find ~ |grep “test”
find ~ //查找当前用户所有文件
grep “test” //从文件中
使用管道注意的要点
* 只处理前一个命令正确输出,不处理错误输出。
* 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
* sed,awk,grep,cut,head,top,less,more,c,join,sort,split等
**1.从email.log文件中查询包含error的行**
grep ‘error’ email.log
**2.获取到error的行,并取[]含有数字的**
grep ‘error’ email.log | grep -o ‘[0-9]’
**3. 并过滤掉含有当前进程**
ps -ef|grep tomcat |grep -v
**4. 替换后将数据保存在文中**
grep 123.txt | sed -n ‘s/"//gw test01.txt’
**5. 将文件`123.txt`,按`,`切分,去除`"`,按`:`切分后,将第一列存到文件`test01.txt`中**
grep ‘input’ 123.txt | awk -F ‘,’ ‘{print $2}’ | sed ‘s/"//g; s/,/\n/g’ | awk -F “:” ‘{print $1 >> “test01.txt”}’
#### 5、cut(数据裁剪)
* 从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
* 也可采用管道输入。
| 选项参数 | 功能 |
| --- | --- |
| -f | 列号,提取第几列 |
| -d | 分隔符,按照指定分隔符分割列,默认是制表符“\t” |
文件截取
[root@VM-0-9-centos shell]# cut -d “:” -f 1 cut.txt
1
2
管道截取
[root@VM-0-9-centos shell]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
按:分割。截取第3列
[root@VM-0-9-centos shell]# echo $PATH | cut -d “:” -f 3
/usr/sbin
按:分割。截取第3列之后数据
[root@VM-0-9-centos shell]# echo $PATH | cut -d “:” -f 3-
/usr/sbin:/usr/bin:/root/bin
[root@VM-0-9-centos shell]#
### 四、系统日志位置
cat /etc/redhat-release 查看操作系统版本
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
**查看某文件下的用户操作日志**
到达操作的目录下,执行下面的程序:
cat .bash_history
### 五、创建与删除软连接
**1、创建软连接**
ln -s /usr/local/app /data
注意:创建软连接时,data目录后不加 / (加上后是查找其下一级目录);

**2、删除软连接**
rm -rf /data
注意:取消软连接最后没有/,rm -rf 软连接。加上/是删除文件夹;

### 六、压缩和解压缩
**tar**

tar
压缩(-c)
tar -cvf start.tar a.java b.java //将当前目录下a.java、b.java打包
tar -cvf start.tar ./* //将当前目录下的所欲文件打包压缩成haha.tar文件
tar -zcvf start.tar.gz a.java b.java //将当前目录下a.java、b.java打包
tar -zcvf start.tar.gz ./* //将当前目录下的所欲文件打包压缩成start.tar.gz文件
解压缩(-x)
tar -xvf start.tar //解压start.tar压缩包,到当前文件夹下;
tar -xvf start.tar -C usr/local //(C为大写,中间无空格)
//解压start.tar压缩包,到/usr/local目录下;
tar -zxvf start.tar.gz //解压start.tar.gz压缩包,到当前文件夹下;
tar -zxvf start.tar.gz -C usr/local //(C为大写,中间无空格)
//解压start.tar.gz压缩包,到/usr/local目录下;
解压缩`tar.xz`文件
tar xf node-v12.18.1-linux-x64.tar.xz
unzip/zip
压缩(zip)
zip lib.zip tomcat.jar //将单个文件压缩(lib.zip)
zip -r lib.zip lib/ //将目录进行压缩(lib.zip)
zip -r lib.zip tomcat-embed.jar xml-aps.jar //将多个文件压缩为zip文件(lib.zip)
解压缩(unzip)
unzip file1.zip //解压一个zip格式压缩包
unzip -d /usr/app/com.lydms.english.zip //将english.zip
包,解压到指定目录下/usr/app/
### 七、Linux下文件的详细信息
R:Read w:write x: execute执行
-rw-r–r-- 1 root root 34942 Jan 19 2018 bootstrap.jar
前三位代表当前用户对文件权限:可以读/可以写/不能执行
中间三位代表当前组的其他用户对当前文件的操作权限:可以读/不能写/不能执行
后三位其他用户对当前文件权限:可以读/不能写/不能执行

**更改文件的权限**
chmod u+x web.xml (—x------) 为文件拥有者(user)添加执行权限;
chmod g+x web.xml (------x—) 为文件拥有者所在组(group)添加执行权限;
chmod 111 web.xml (—x–x–x) 为所有用户分类,添加可执行权限;
chmod 222 web.xml (–w–w–w-) 为所有用户分类,添加可写入权限;
chmod 444 web.xml (-r–r–r–) 为所有用户分类,添加可读取权限;

### 八、常用的docker容器的命令:
**1、下载镜像**
Linux服务器下载安装包镜像命令
wget https://mirrors.huaweicloud.com/elasticsearch/7.8.0/elasticsearch-7.8.0-windows-x86_64.zip
[华为开源镜像站]( )
https://mirrors.huaweicloud.com/
**2、常用命令**
#1、查看docker中下载好的镜像:
docker images
#2、查询需要的容器名称:
docker search mysql
#3、将需要的docker容器下载运行到本地(名称、端口号、msyql密码、ID):
docker run -di --name=first -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root 26d26dsfsd31a
#4、查看运行的docker容器:
docker ps
#5、查看所有的docker容器(包括未运行的):
docker ps -a
#6、停止当前运行的docker容器:
docker stop first
#7、启动docker容器:
docker start first
#8、重启docker容器:
docker restart first
#9、删除docker容器:
docker rm first
### 九、运维常用命令
#### 1、查看服务器端口号是否可用
**查看服务器是否可用**
ping 49.32.587.164
**查看服务器指定端口是否可用**
telnet 49.32.587.164 8093
[Telnet安装]( )
这是我写过的一个Linux安装Telnet的文章。
https://blog.youkuaiyun.com/lydms/article/details/113698856
**1、shutdown(关闭计算机)**
shutdown是最常用也是最安全的关机和重启命令,它会在关机之前调用fsck检查磁盘,其中-h和-r是最常用的参数:
-h:停止系统服务并关机
-r: 停止系统服务后重启
案例:
shutdown -h now --立即关机
shutdown -h 10:53 --到10:53关机,如果该时间小于当前时间,则到隔天
shutdown -h +10 --10分钟后自动关机
shutdown -r now --立即重启
shutdown -r +30 ‘The System Will Reboot in 30 Mins’ --30分钟后重启并并发送通知给其它在线用户
强制重启
reboot
**2、查看处于各种连接状态数量(ESTABLISHED、CLOSE\_WAIT、TIME\_WAIT)**
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

查看处于`ESTABLISHED`状态连接
netstat -nt | awk ‘{if($NF==“ESTABLISHED”){wait[$5]++}}END{for(i in wait) print i,wait[i]}’
查看处于`CLOSE_WAIT`状态连接
netstat -nt | awk ‘{if($NF==“CLOSE_WAIT”){wait[$5]++}}END{for(i in wait) print i,wait[i]}’
查看处于`TIME_WAIT`状态连接
netstat -nt | awk ‘{if($NF==“TIME_WAIT”){wait[$5]++}}END{for(i in wait) print i,wait[i]}’
**3、ping命令**
对 www.lydms.com 发送 4 个 ping 包, 检查与其是否联通
ping -c 4 www.lydms.com
**4、netstat 命令**
`netstat 命令用于显示各种网络相关信息,如网络连接, 路由表, 接口状态等等;`
列出所有处于监听状态的tcp端口:
netstat -lt
查看所有的端口信息, 包括 PID 和进程名称
netstat -tulpn
**5、查看当前端口号占用情况**
1.用于查看某一端口的占用情况
lsof -i:8080
2.显示tcp,udp的端口和进程等相关情况
netstat -tunlp
3.指定端口号的进程情况
netstat -tunlp|grep 8080
**4.查看PID进程信息**
ps -aux |grep 28990
根据PID,查看JVM中各线程信息('0x9eb’为nid值)
jstack 2246|grep ‘0x9eb’ -A 50
**6、ps 命令**
过滤得到当前系统中的 ssh 进程信息
ps aux | grep ‘ssh’
**7、管道命令**
`简单来说, Linux 中管道的作用是将上一个命令的输出作为下一个命令的输入, 像 pipe 一样将各个命令串联起来执行, 管道的操作符是 |`
管道命令查看当前运行的程序中,名称为java的程序
ps -ef|grep java
查看/etc/passwd文件中的root内容
cat /etc/passwd | grep ‘root’
查看当前系统的ip连接(Windows和Linux通用)
netstat -an
将sh test.sh任务放到后台,并将打印的日志输出到`nohup.out`文件中,**终端不再能够接收任何输入(标准输入)**
nohup sh test.sh &
将sh test.sh任务放到后台,并将打印的日志输出到`test.out`文件中,**终端不再能够接收任何输入(标准输入)**
nohup sh test.sh >> test.out &
将sh test.sh任务放到后台,并将打印的日志输出到nohup.out文件中,**终端能够接收任何输入**
nohup sh test.sh &
8、添加Host地址
打开配置文件
vim /etc/hosts
在打开的文件中添加
49.235.32.164 www.lydms.com
保存文件后,重启网络
/etc/init.d/network restart
重新加载成功:

### 十、yum常用命令
yum install iptables-services 下载并安装iptables
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum update package_name.rpm 更新当前系统中所有安装的rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum clean all 删除所有缓存的包和头文件
### 十一、其他命令
#### 1、xargs
给其他命令传递参数的一个过滤器
**补充说明**
**xargs 命令** 是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 的默认命令是 echo,空格是默认定界符。这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是构建单行命令的重要组件之一。
**xargs 命令用法**
xargs 用作替换工具,读取输入数据重新格式化后输出。
`-n`:指定每行输出数量
cat test.txt | xargs -n3
a b c
d e f
g h i
j k l
m n o
`-d`:按指定内容分隔文本
[root@VM-0-9-centos ~] echo “nameXnameXnameXname” | xargs -dX
name name name name
`-l`:文本命令替换
xargs 的一个 选项 -I ,使用 -I 指定一个替换字符串{},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:
ls *.jpg | xargs -n1 -I cp {} /data/images
`-t`:将执行的命令,打印出来
-t echo{}
ls * |xargs -t -n1 -I {} cp -r {} /root/ddd/ echo{}
结合使用—指定X切分,并每行2个
[root@VM-0-9-centos ~] echo “nameXnameXnameXname” | xargs -dX -n2
name name
name name
---
**查看历史使用命令**
history
过滤与`es`相关命令
history | grep es
**查看占用资源**
ps -au 占用的资源是从进程启动开始,计算的平均占用资源,比如cpu等
top 实时占用的资源;
**查看当前目录所占存储**
du -lh 查看当前文件下各文件夹占用存储空间
du -sh 查看当前文件夹所占存储空间
du --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
du --max-depth=1 只查看当前目录下文件占用的存储空间
**管道命令:**
根据项目查看进程,更加PID查看项目,以及项目路径
ps -ef 查看所有的进程
ps -ef | grep mysql 查看mysql相关的进程
通过进程PID查看所占用的端口号
netstat -nap |grep 进程ID(PID)
**查看Linux下系统存储使用率**
df -h 查看系统硬盘使用情况
**杀死进程(根据PID)**
kill -9 2630 进程pid
**关闭防火墙**
service iptables stop 临时关闭防火墙
chkconfig iptables off 防火墙开启不启动
service iptables status 查看防火墙状态
**开机启动选项**
msconfig 查看开机启动选项
chkconfig 查看开机启动服务列表
**查看MySQL服务的程序的状态**
service mysql start 开启MySQL
service mysql status 查看MySQL的状态
service mysql stop 关闭MySQL
**查看系统变量**
echo $USER 输出某个变量
set 输出所有变量
#### 2、curl语法
**GET请求**
curl “http://www.wangchujiang.com”
**POST请求**
普通文本
curl -d’login=emma&password=123’ -X POST https://wangchujiang.com/login
Json格式
curl -l -H “Content-type: application/json” -X POST -d ‘{“phone”:“13521389587”,“password”:“test”}’ http://wangchujiang.com/apis/users.json
详细可以看我写的另一篇:[curl语法整理]( )
https://blog.youkuaiyun.com/lydms/article/details/127655845
#### 3、查询支持解析器
Centos默认的解析器是`bash`
cat /etc/shells
列表
/bin/sh
Centos默认的解析器是bash
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

指定解析器执行
脚本以`#!/bin/bash`开头(指定解析器)
#!/bin/bash
echo “helloworld”
#### 4、跨服务器文件复制
`scp`:用于服务器之间文件复制
将本服务器`/home/lydms/spark.tgz`文件复制到`hadoop102`服务器的`/home/lydms`,使用用户名为`lydms`。
scp [本机文件所在位置] [目标服务器用户名] @ [服务器地址] : [目标服务器目录]
scp /home/lydms/spark.tgz lydms:hadoop102:/home/lydms
将源服务器`hadoop102`下`/home/lydms/spark.tgz`文件复制到本机`/home/lydms`,源用户名为`lydms`
scp [目标服务器用户名] @ [服务器地址]:[目标服务器目录] [本机文件所在位置]
scp lydms:hadoop102:/home/lydms/spark.tgz /home/lydms
### 十二、Linux内核优化
打开配置文件
vim /etc/sysctl.conf
加载新的配置(需开启防火墙iptables,否则会报错)
sysctl -p
[收藏的详情地址]( )
https://www.cnblogs.com/lldsn/p/10489593.html
### 十三、用户权限操作
#### 1、用户操作
添加用户`sum`:
useradd –d /usr/sum -m sum
关于useradd的某些参数:
**-u:** 指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID
**-g:** 指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在
**-G:** 指定额外组
**-c:** 指定用户的注释信息
**-d:** 指定用户的家目录
已创建的用户`sum`设置密码
passwd sum
用户添加`root`权限
visudo
找到`root`用户权限位置
添加与`root`用户相同权限
Allow root to run any commands anywhere
root ALL=(ALL) ALL
eses ALL=(ALL) ALL

新建的用户在面显示
cat /etc/passwd

切换下刚才添加的用户
su sum
sum: x:1000:1000:: /usr/sum :/bin/bash
sum: x:0:1000:: /usr/sum :/bin/bash
回到root用户
exit
**修改已有用户信息`usermod`**
usermod 选项 用户名

删除用户文件夹
rm -rf /usr/sum
删除用户`sum`
userdel sum

#### 2、添加组
**添加用户组**
groupadd groupname

**修改用户组**
使用者权限:管理员用户
groupmod 选项 用户组
groupmod -n new-usergroup usergroup
常用的选项有:
* -g GID 为用户组指定新的组标识号。
* -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
* -n新用户组 将用户组的名字改为新名字

**删除用户组**
groupdel groupname
可以看到自己的分组和分组id
cat /etc/group
#### 3、sudo用户权限操作
>
> 比如我们使用普通用户操作用户或者操作用户组、以及修改网卡配置文件的时候,需要切换到root用户才操作,此时我们可以使用sudo命令提高普通用户的操作权限,以达到操作目的
>
>
>
`sudo`:控制用户对系统命令的使用权限,root允许的操作。
通过sudo可以提高普通用户的操作权限。
**使用者权限**:普通用户
使用root用户权限执行命令,操作
sudo -s
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

#### 4、更换文件所有者
格式:
chown [-R] 所有者 文件或目录
chown [-R] 所有者:所属组 文件或目录
将`kibana-8.3.3-linux-x86_64.tar.gz`所有者改为用户`sum`
chown -R sum /usr/sum/kibana-8.3.3-linux-x86_64.tar.gz
为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**

本份面试集锦涵盖了
* **174 道运维工程师面试题**
* **128道k8s面试题**
* **108道shell脚本面试题**
* **200道Linux面试题**
* **51道docker面试题**
* **35道Jenkis面试题**
* **78道MongoDB面试题**
* **17道ansible面试题**
* **60道dubbo面试题**
* **53道kafka面试**
* **18道mysql面试题**
* **40道nginx面试题**
* **77道redis面试题**
* **28道zookeeper**
**总计 1000+ 道面试题, 内容 又全含金量又高**
* **174道运维工程师面试题**
> 1、什么是运维?
> 2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
> 3、现在给你三百台服务器,你怎么对他们进行管理?
> 4、简述raid0 raid1raid5二种工作模式的工作原理及特点
> 5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
> 6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
> 7、Tomcat和Resin有什么区别,工作中你怎么选择?
> 8、什么是中间件?什么是jdk?
> 9、讲述一下Tomcat8005、8009、8080三个端口的含义?
> 10、什么叫CDN?
> 11、什么叫网站灰度发布?
> 12、简述DNS进行域名解析的过程?
> 13、RabbitMQ是什么东西?
> 14、讲一下Keepalived的工作原理?
> 15、讲述一下LVS三种模式的工作过程?
> 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
#### 4、更换文件所有者
格式:
chown [-R] 所有者 文件或目录
chown [-R] 所有者:所属组 文件或目录
将`kibana-8.3.3-linux-x86_64.tar.gz`所有者改为用户`sum`
chown -R sum /usr/sum/kibana-8.3.3-linux-x86_64.tar.gz
为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**
[外链图片转存中...(img-Fqd8uixm-1725983008561)]
本份面试集锦涵盖了
* **174 道运维工程师面试题**
* **128道k8s面试题**
* **108道shell脚本面试题**
* **200道Linux面试题**
* **51道docker面试题**
* **35道Jenkis面试题**
* **78道MongoDB面试题**
* **17道ansible面试题**
* **60道dubbo面试题**
* **53道kafka面试**
* **18道mysql面试题**
* **40道nginx面试题**
* **77道redis面试题**
* **28道zookeeper**
**总计 1000+ 道面试题, 内容 又全含金量又高**
* **174道运维工程师面试题**
> 1、什么是运维?
> 2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
> 3、现在给你三百台服务器,你怎么对他们进行管理?
> 4、简述raid0 raid1raid5二种工作模式的工作原理及特点
> 5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
> 6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
> 7、Tomcat和Resin有什么区别,工作中你怎么选择?
> 8、什么是中间件?什么是jdk?
> 9、讲述一下Tomcat8005、8009、8080三个端口的含义?
> 10、什么叫CDN?
> 11、什么叫网站灰度发布?
> 12、简述DNS进行域名解析的过程?
> 13、RabbitMQ是什么东西?
> 14、讲一下Keepalived的工作原理?
> 15、讲述一下LVS三种模式的工作过程?
> 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
> 17、如何重置mysql root密码?