目录
1.Linux
1.1 Linux基础篇
1.1.1 用户类
查看所有用户
cat /etc/passwd
查看用户密码到期时间
chage -l username(用户名)
延期用户密码
chage -d 2022-05-14(时间) username(用户名)
Liunx文本编辑器:Vim Emacs Pico Nano Joe
赋予权限
递增用户目录:chown username:usergroup -R /app/test
增加读写执行权限:chmod 777 文件(文件644 目录755)
创建多个目录
mkdir -p dir33/{dir1,dir2,dir3}
更改用户组
usermod -g testgrp test
#-c comment 指定一段注释性描述。
#-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
#-g 用户组 指定用户所属的用户组。
#-G 用户组,用户组 指定用户所属的附加组。
#-s Shell文件 指定用户的登录Shell。
#-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
#-a 表示在原来所属组的基础上追加 例如:usermod -aG testgrp test
建工作组
groupadd 用户组名
创建用户
useradd -g 用户组名 -d /home/monitor -s /bin/bash -m monitor
rpm安装
rpm -ivh 文件 --force --nodeps (两个参数的意义就在于,安装时不再分析包之间的依赖关系而直接安装)
grep查找
grep 省份 access.log | tail
zgrep查询压缩文件日志
#查询压缩文件日志
zgrep XXX file.zip
zgrep -A 100 a file.zip // 查询压缩文件file.zip中包含a字符的内容的后面100行
zgrep -B 100 a file.zip // 查询压缩文件file.zip中包含a字符的内容的前面100行
zgrep -C 100 a file.zip // 查询压缩文件file.zip中包含a字符的内容的前后100行
zgrep -c a file.zip // 查询压缩文件file.zip中包含a字符的行数。
zgrep -i a file.zip // 查询压缩文件file.zip中包含a或A字符的内容
查看主机历史命令记录
history
查找关键字、前几行、结尾几行
#查看日志 前 n行
cat 文件名 | head -n 数量
#查看日志尾 n行
cat 文件名 | tail -n 数量
#根据 关键词 查看日志 并返回关键词所在行
cat 路径/文件名 | grep 关键词
grep -i 关键词 路径/文件名
查看系统登录日志:last
查看系统登录失败日志:lastb
查看可疑登录
last -f /var/log/wtmp
1.1.2 主机磁盘
查看CPU,内存利用率
ps auxm --sort=%cpu
查询pid
ps aux|grep AIBizHall-record-0.0.1.jar
查看CPU使用情况:top -bn 1 -i -c
查看文件大小:ls -lrt
查看磁盘空间:df -h
按照空间使用由大到小显示子目录的空间
du -ks * |sort -rn |more
查看当前目录下各个文件及目录占用空间大小
du -sh *
查看内存
free -h/m/top
根据文件名全盘搜索
find / -name xxx.aaa
查看磁盘分区:fdisk -l
挂载创建NFS日志mount
mount -t nfs hohhot-dfs11.cmcc.cn:/share-5dbde474-4fa3-40bf-b8ba-abe9c4d463bf 目录(挂载指定目录的路径)
查看系统版本命令
cat /etc/redhat-release
SCP文件到本地
scp 文件名 @192.168.177.151:/home/zhangshuai(用户)
scp /home/zhangshuai/文件 @192.168.177.151:/文件名
赋权限
chmod 777 /home/zhangshuai/app.log(文件)
#递增赋权
chown -R 755(目录755,文件644) /log
chown -R upay:upay /opt/log
#chmod u+s /bin/*
u--拥有者
g--同组用户
o--其它用户
r--可读
w--可写
x--可执行
s--可执行(跟x差不多,我还不清楚两者的区别)
1.1.3 crontab定时任务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态crontab -l 查看定时任务
/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。
参考博客:Linux crontab命令:循环执行定时任务(详解版)
表1 crontab 命令常用选项及功能
选项 | 功能 |
---|---|
-u user | 用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo,用户的 crontab 服务,此选项一般有 root 用户来运行。 |
-e | 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。 |
-l | 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。 |
-r | 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 |
-i | 在删除用户的 crontab 文件时,给确认提示。 |
表2 crontab 时间表示
项目 | 含义 | 范围 |
---|---|---|
第一个"*" | 一小时当中的第几分钟(minute) | 0~59 |
第二个"*" | 一天当中的第几小时(hour) | 0~23 |
第三个"*" | 一个月当中的第几天(day) | 1~31 |
第四个"*" | 一年当中的第几个月(month) | 1~12 |
第五个"*" | 一周当中的星期几(week) | 0~7(0和7都代表星期日) |
表3 时间特殊符号
特殊符号 | 含义 |
---|---|
*(星号) | 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。 |
,(逗号) | 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 |
-(中杠) | 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 |
/(正斜线) | 代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。 |
表4 crontab举例
时间 | 含义 |
---|---|
45 22 ***命令 | 在 22 点 45 分执行命令 |
0 17 ** 1命令 | 在每周一的 17 点 0 分执行命令 |
0 5 1,15**命令 | 在每月 1 日和 15 日的凌晨 5 点 0 分执行命令 |
40 4 ** 1-5命令 | 在每周一到周五的凌晨 4 点 40 分执行命令 |
*/10 4 ***命令 | 在每天的凌晨 4 点,每隔 10 分钟执行一次命令 |
0 0 1,15 * 1命令 | 在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆 |
1.1.4 Ansible
ansible是自动化运维工具,基于Python开发集合了众多运维工具(puppet、chef、func、fabric)的优点 实现批量系统配置、批量程序部署、批量运行命令等功能。
ansible 安装方式
使用 pip(python的包管理模块)安装
#需要安装一个python-pip包,安装完成以后,则直接使用pip命令来安装我们的包,具体操作过程如下:
yum install python-pip
pip install ansible
使用 yum 安装
#需要先安装一个epel-release包,然后再安装我们的 ansible 即可。
yum install epel-release -y
yum install ansible –y
ansible 程序结构
配置文件目录:/etc/ansible/
执行文件目录:/usr/bin/
Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/
Help文档目录:/usr/share/doc/ansible-X.X.X/
Man文档目录:/usr/share/man/man1/
ansible配置文件
inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5 #并发连接数,默认为5
sudo_user = root #设置默认执行命令的用户
remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60 #设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)
ansible 配置公私钥
#1.生成私钥
[root@server ~]# ssh-keygen
#2.向主机分发私钥
[root@server ~]# ssh-copy-id root@192.168.37.122
[root@server ~]# ssh-copy-id root@192.168.37.133
#如果出现了一下报错:
-bash: ssh-copy-id: command not found
#安装以下包即可
yum -y install openssh-clientsansible
常用语句:
ansible web(主机) -m shell(模块) -a 'df -h'
ansible主机连通性测试
ansible web -m ping
ansible常用模块:command,shell,copy,file,fetch,cron,yum,service,user,group,script,setup
ansible root提权
ansible -i more_hosts aa -m shell -a "chage -l topteact" -b
[aa:vars]
ansible_ssh_pass=passwd
ansible_ssh_user=user
ansible_become_method=sudo
ansible_become_pass=passwd
详细参考:自动化运维工具——ansible详解(一) - 珂儿吖 - 博客园
1.1.5 打包压缩
1.1.5.1 tar
tar命令的常用参数
-z | 是否同时具有gz属性 |
-j | 是否同时具有bz2属性 |
-J | 是否同时具有xz属性 |
-x | 解压缩、提取打包的内容 |
-t | 查看压缩包内容 |
-c | 建立一个压缩,打包文档 |
-C | 切换到指定目录,表示指定解压缩包的内容和打包的内容存放的目录 |
-v | 显示压缩或者打包的内容 |
-f | 使用文件名,在f后面要接压缩后的文件的名字,只要用到tar命令,-f选项是必须要用的,-f参数在使用的时候一定排在其他参数的后面,在最右边 |
-p | 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 |
-P | 保留绝对路径 |
tar打包命令
tar -cvf a.tar(打包后的文件名) a.txt b.txt...(要打包的文件)
#查看打包后文件内容
tar -tf a.tar
#移动打包文件
tar -xf a.tar -C /opt/
#打包整个目录
tar zcvf 文件名.tar.gz ./html/(需要压缩的文件) # linux中一般都是以tar.gz结尾
#压缩当前文件夹下非隐藏文件的文件
tar czvf test.tar.gz *
#压缩当前文件夹下隐藏文件排除两个隐藏文件夹"."和“..”
tar czvf test.tar.gz .[!.]*
压缩/解压
linux主要有三种压缩方式:
1.gzip:是公认的压缩这速度最快,压缩大文件的时候与其他的压缩方式相比更加明显,历史最久,应用最广泛的压缩方式
2.bzip:压缩形成的文件小,但是可用性不如gzip
3.xz:是最新的压缩方式,可以自动提供最佳的压缩率
参数 | 作用 | 命名方式 |
-z | 用于gzip压缩方式 | 文件名.tar.gz |
-j | 用于bzip2压缩方式 | 文件名.tar.bz2 |
-J | 用于xz压缩方式 | 文件名.tar.xz |
压缩/解压命令
#压缩速度:gz > bz2 > xz
#压缩率:xz > bz2 > gz
tar -zcvf a.tar.gz(压缩后的文件名) a.log
#解压命令
tar -xf a.tar
#解压到指定目录
tar zxvf test.tar.gz -C /home/upay
1.1.5.2 zip
zip命令用法
zip [参数] [压缩包名] [压缩的目录或者文件的路径]
zip命令的常用参数
-m | 将文件压缩后,删除原文件 |
-o | 将压缩文件内的所有文件的最新变动时间设为压缩的时间 |
-q | 安静模式,在压缩的时候不显示指令执行的过程 |
-r | 递归压缩,将自定目录下的所有子文件以及文件一起处理 |
-x | ”文件列表“,压缩时排除文件列表中的文件 |
zip压缩实例
1.压缩目录,将harry目录压缩为名为harry.zip压缩包
zip -r harry.zip harry
2.安静模式输出,不显示压缩过程(-q)
zip -q -r harry.zip harry
3.压缩多个文件,将a.txt文件和b.cfg文件和c.apk文件压缩为名为test.zip的压缩包
#因为压缩的全是文件,所以可以不用加上-r选项
zip -q test.zip a.txt b.cfg c.apk
4.压缩多个文件,以及目录
zip -q -r test.zip a.txt b.cfg c.apk harry
5.将harry目录压缩为harry.zip压缩包,排除harry目录下的ha.txt文件:
zip -q -r harry.zip harry -x "./harry/ha.txt"
6.压缩指定目录文件
gzip /目录路径/* &
1.1.5.3 unzip
unzip用法
unzip [参数] [压缩文件] (-d [目录]) //如果不是用括号里面的内容,则解压文件在当前工作目录
unzip命令的常用参数
-c | 将解压缩的结果显示到屏幕上(显示每一个目录下的每一个文件的内容),同时对字符做适当的转换,但是并没有解压压缩包 |
-l | 显示压缩文件内所包含的文件 |
-t | 检查压缩文件是否正确 |
-v | 执行时显示压缩文件的详细信息 |
-q | 安静模式,执行时不显示任何信息 |
-d | 指定文件解压后存储的目录 |
-x | 指定不要处理压缩文件中的那些文件 |
实例:
1.harry.zip压缩包解压结果显示
unzip -c harry.zip
2.显示jihe.zip压缩包里面所包含的文件
unzip -l harry.zip
1.1.6 查找
恢复正常编辑
export TERM=xterm
置空压缩清理日志
echo " " > catalina.out->文件名 将文件 catalina.out变成一个空格
true > 文件名
查找find命令及删除7天前的文件
#find 对应目录 -mtime +天数 -name “文件名” -exec rm -rf {} ;
find ./ -mtime +5 |xargs rm -rf
将/usr/local/data目录下所有10天前带".“的文件删除
find:Linux的查找命令,用户查找指定条件的文件
/usr/local/data:想要进行清理的任意目录
-mtime:标准语句写法
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
“.”:希望查找的数据类型,”.jpg"表示查找扩展名为jpg的所有文件,""表示查找所有文件,这个可以灵活运用,举一反三
-exec:固定写法
rm -rf:强制删除文件,包括目录
{} ; :固定写法,一对大括号+空格++;
压缩备份命令
tar zcvf 文件名.tar.gz ./html/(需要压缩的文件) #linux中一般都是以tar.gz结尾
杀死进程
kill -9 +服务ID
#根据进程名批量杀进程
ps -ef |grep /app/aibizhall_success.py |grep -v grep |awk '{print $2}'|xargs kill -9
启动Java包
nohup java –jar /opt/aibizhall-account/AIBizHall-account-0.0.12.jar(jar包版本地址) > console.log(跑的数据) &
查看文件
tail -10f console.log(文件名)
查询归集打印出对应时间日志文件
sed -n '/2021-09-23 19:00:00/,/2021-09-23 21:30:50/p' 呼池日志文件 > hc.log
sed -n '/2021-09-23 19:00:00/,/2021-09-23 21:30:50/p' 东莞日志文件 > dg.log
执行编译命令:make
rpm安装
rpm -ivh 文件 --force --nodeps (两个参数的意义就在于,安装时不再分析包之间的依赖关系而直接安装)
1.1.7 网咯防火墙
netstat (参数详解)
-a | (all)显示所有选项,默认不显示LISTEN相关 |
-t | (tcp)仅显示tcp相关选项 |
-u | (udp)仅显示udp相关选项 |
-n | 拒绝显示别名,能显示数字的全部转化成数字。 |
-l | 仅列出有在 Listen (监听) 的服务状态 |
-p | 显示建立相关链接的程序名 |
-r | 显示路由信息,路由表 |
-e | 显示扩展信息,例如uid等 |
-s | 按各个协议进行统计 |
-c | 每隔一个固定时间,执行该netstat命令。 |
PS:LISTEN和LISTENING的状态只有用-a或者-l才能看到
yum install firewalld
systemctl start firewalld.service //开启防火墙
systemctl stop firewalld.service //关闭防火墙
systemctl enable firewalld.service //设置开机自动启动
systemctl disable firewalld.service //禁止开机启动防火墙
firewall-cmd --reload //在不改变状态的条件下重新加载防火墙
查看防火墙状态
firewall-cmd --state
查看防火墙状态 systemctl status firewalld
查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
#开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重新载入
firewall-cmd --reload
#查看是否生效
firewall-cmd --zone=public --query-port=80/tcp
删除端口
#删除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
#重新载入
firewall-cmd --reload
查看监听的端口
netstat -lnpt
拼端口
telnet+端口号
npd协议ping测试
nc -vu +ip+端口/nc +ip +端口/nc -vuz +ip+端口
查看端口主机服务是否开
netstat -tuln | grep 31050 (端口号) /netstat -nltp | grep 端口号
查看路由表
route -n
重启生效防火墙并查看是否生效
firewall-cmd --reload #重启firewall
firewall-cmd --list-ports #查看已经开放的端口
配置VIP
ifconfig eth0:0 10.209.26.182 netmask 255.255.255.0 up
1.2 硬件设备
1.2.1 查看服务器硬件信息
查看服务器型号、序列号
dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product|Serial"
查看主板型号
dmidecode |grep -A16 "System Information$"
查看BIOS信息
dmidecode -t bios
查看内存槽及内存条
dmidecode -t memory | head -45 | tail -23
查看网卡信息
dmesg | grep -i Ethernet
1.2.2 查看CPU信息
查看CPU型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看系统中实际物理CPU的数量
grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l
系统中逻辑CPU的数量(核数)
cat /proc/cpuinfo |grep 'processor'|wc -l
查看单颗物理CPU核数
cat /proc/cpuinfo |grep "cores"|uniq
查看CPU的主频
cat /proc/cpuinfo |grep MHz|uniq
查看CPU的详细信息
cat /proc/cpuinfo | head -20
查看CPU的相关信息
lscpu
查看cpu运行模式
getconf LONG_BIT
查看cpu是否支持64bit
#结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
1.2.3 查看内存信息
查看内存硬件信息
dmidecode -t memory | head -45 | tail -24
查看最大支持多少内存
dmidecode|grep -P 'Maximum\s+Capacity'
Linux 查看内存的频率
dmidecode|grep -A16 "Memory Device"|grep 'Speed'
Linux 查看内存的详细信息
cat /proc/meminfo |head -20
Linux 查看内存的使用情况
free -m //-b,-k,-m,-g show output in bytes,KB,MB,or GB
1.2.4 查看硬盘信息
查看挂接的分区状态
fdisk -l |grep Disk
查看硬盘和分区分布
lsblk
查看硬盘和分区的详细信息
fdisk -l
查看挂接的分区状态
mount | column -t
查看交换分区状态
swapon -s
1.2.5 查看网卡信息
查看网卡的链路状态
#Link detected: yes代表链路连接正常
ethtool 网卡名|egrep -i 'eth|link'
2.中间件
2.1 Docker
进容器
docker exec -it 容器ID /bin/bash
4.镜像源
MySql:http://mirrors.sohu.com/mysql/MySQL-8.0/
CentOS:Index of /7.4.1708/isos/x86_64
中科大镜像:Index of /centos/7/isos/x86_64/
5.问题资料
Linux解决CVE-2015-2808、CVE-2016-8610漏洞
参考:https://blog.csdn.net/lixinfu1980/article/details/80414250
openssl 版本_OpenSSL升级版本到最新(1.1.1)
参考:https://blog.csdn.net/weixin_39624071/article/details/111673725
ORA-03113:通信通道的文件结尾-完美解决方案
参考:ORA-03113:通信通道的文件结尾-完美解决方案 - linbo.yang - 博客园
扩容磁盘空间
参考:Centos7扩展磁盘空间(LVM管理) - 老董 - 博客园
ip addr 详解
6.扩展
#Apache Bench(AB)
AB是 Apache 服务器自带的一个web压力测试工具简称ab
ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力
修改配置文件
修改Apache Bench(AB)的配置文件,该配置文件在软件安装目录下的conf/httpd.conf
#修改为安装的地址
Define SRVROOT "F:/Dev/httpd-2.4.34/Apache24"
修改Apache Bench(AB)的监听端口号,将其端口号由默认的80端口改成8088,如下:
Listen 8088
修改ServerName
ServerName www.studylaravel.com:80
注册成系统服务
#管理员身份运行cmd控制台,将控制台的光标切换成软件的安装目录,在该安装目录中,切换到bin目录,在其中运行如下指令:
#successfully installed信息时,此时就说明我们的软件已经成功的注册成系统服务
httpd -k install
ApacheBench用法详解
在Linux系统,一般安装好Apache后可以直接执行;
# ab -n 4000 -c 1000 http://www.ha97.com/
如果是Win系统下,打开cmd命令行窗口,cd到apache安装目录的bin目录下;
-n后面的4000代表总共发出4000个请求;-c后面的1000表示采用1000个并发(模拟1000个人同时访问),后面的网址表示测试的目标URL