生产环境日常命令

Posted 彭荣俭的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产环境日常命令相关的知识,希望对你有一定的参考价值。

#查看网站并发连接数

netstat -nat|grep ESTABLISHED|wc –l

查看http的并发请求数与其TCP连接状态
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘

查询访问量前10的IP地址
awk ‘{print $1}‘ /usr/local/nginx/logs/access.log |sort|uniq -c|sort -nr|head –10

mysqldump -h 172.26.100.145 -uroot -proot test >/home/testbackup.sql  备份远程test数据库到本地
如果要备份本地mysql库到远程服务器,就先备份到本地在拷贝过远程服务器或者挂载远程服务器某目录

mysqldump -uroot -p123456 --opt --all-databases >all-data.sql         #备份所有库
mysql -uroot -pqwer1234 < /bak/mysqlbak/2018031711-all.sql            #还原

#本地文件复制到远程服务器,如果要复制目录 scp –r

scp -r  $bkdir [email protected]:/opt/ 

#复制远程服务器目录到本地

scp -r  [email protected]:/wwwbackup38/  /opt/ 

#查找并删除七天以前的数据

find /opt/db_bak/  -name "*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1

#查找前48~24小时修改过的文件。而不是48小时以内修改过的文件

find /opt/db_bak/ -name "*.sql" -type f -mtime 1       

nethogs                               #监控每个进程的网络带宽占用
iftop                                      #动态查看网卡流量

dstat 3 5    #执行5次,每次间隔3秒性能监控器-dstat

#看进程号为18842的进程打开了哪些文件
ps -ef |grep nginx                
lsof -p 1859

nginx/sbin/nginx -V         #查看nginx有哪些模块

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf    #nginx指定配置文件启动

sort error.log |uniq -c |sort -rn >> cuowu.txt          #对文本行按重复次数进行排序,分析日志用

ps aux --sort=rss |sort -k 6 -rn       #以内存大小排序列出进程

ls|xargs du -h|sort -rn  |head   -20         #列出当前目录使用量,并按大小排序,#不递归下级目录使用du –sh

ll     -hS                                                   #列出当前目录文件并按带下排序

grep -Ev   "#|^$"   xx.conf       #查看文件排除以#开关和空白行,适合查看配置文件

sed ‘/#.*$/d; /^ *$/d‘             #查看文件排除以#开关和空白行,适合查看配置文件

grep –r –l  内容  路径                   #查找包含某些内容的文件

#查找文件中包含error的内容并显示出来 -A 1是同时显示下行内容 -e选项是或者的意思,也就是多条件

grep -e  "192.168.193.1"  -A 1   /var/log/nginx/access.log
egrep -v "^#|^$"    xx.conf       #查看文件排除以#开关和空白行,适合查看配置文件

find /opt -type f -size 0 -exec rm -rf {} \;      #删除空文件

pgrep nginx|xargs kill                            #查找进程pid并kill

ifconfig |awk -F"[ ]+|[:]" ‘NR==2 {print $4}‘    获取当前IP地址,强大的awk
utmpdump /var/log/wtmp                #文本方式查看wtmp日志(二进制文件)

find /home/ -user prj  -exec cp  -a {}  /opt/  \;          #查找prj用户所拥有的文件,并放到/opt/下 

mii-tool eth0                              #查看eth0物理连接状态
service --status-all                       #查看已安装所有服务包括已运行和未运行的服务

ping -L 源IP  -c   目标ip                   #指定源IP ping

dirs          #打印出当前的目录栈,也就是显示最近访问过的目录

清除缓存
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

查询访问量前10的url
cat /var/log/nginx/access.log  |cut -f 6 -d ‘ ‘|sort |uniq -c |sort -k 1 -n -r |head -10 
查询最耗时的页面
cat /var/log/nginx/access.log  |sort -k 4 -n -r |head –10 

cat /proc/sys/kernel/threads-max     #查看进程的总数,包括未运行的?

#查看已运行的进程总数
ps -ef  |wc –l            

ps -ef|grep php-fpm|wc -l
ps -ef|grep nginx|wc -l
ps -ef|grep java|wc –l

pkill -KILL -t pts/0              #踢出登录的用户,用who查看终端

mysql --help | grep Distrib          #查看mysql版本

ln -s /usr/local/mysql/bin/*  /usr/local/bin/    #编译安装mysql后无法执行mysql等命令,把命令连接到系统默认的路径,路径可能好几个

crontab -l                                       #查看计划任务列表
pgrep nginx                                      #查看服务进程号
top -id 1                                        #观察是否有异常进程出现

数据备份还原:
压缩:
tar czvf /opt/http.tar.gz  /var/log/httpd/          #压缩备份,备份的包含了路径去除了/
解压
tar zxvf /opt/http.tar.gz   -C  /                   #还原直接到/就可以了,因为备份时/下还有var/log路径

临时解决DOS攻击-封IP
iptables -I INPUT -s 91.121.80.20 -j DROP

SSH免密登录:
配置ssh免秘钥后用scp不需要密码
1. 在服务器 A 上执行如下命令来生成配对密钥:
ssh-keygen -t rsa (后面全部按回车)
2. 将 /root/.ssh/ 目录中的 id_rsa.pub 文件复制到 服务器 B 的 /root/.ssh/ 目录中,并改名为 authorized_keys。 如果已经存在就把内容在末尾添加
scp  /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
以后从服务器 A scp 到服务器 B 就不需要密码了(如果没有/root/.ssh/是因为没执行ssh-keygen -t rsa 生成秘钥命令)


yum install openssh-clients -y                    #scp软件包

tac命令用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示,与cat相反的命令          
awk    -v 选项,指定在任何输入被读入前定义参数


 

/var/spool/cron/root    #计划任务配置文件
凌晨三点       00  03 * * *
每五分钟执行  */5 * * * *

每小时执行     0 * * * *

每天执行        0 0 * * *

每周执行       0 0 * * 0

每月执行        0 0 1 * *

每年执行       0 0 1 1 *

 

在zabbix服务上设置邮件报警外部SMTP模式
#vim /etc/mail.rc      #尾部追加smtp验证信息
set [email protected] smtp=smtp.163.com
set [email protected] smtp-auth-password=qwer1234
set smtp-auth=login
#设置完成之后发送一个测试邮件,收到邮件表示配置成功
echo "发现短时间内大量访问的ip"|mail -s "网站访问警告" [email protected]
如果没有/etc/mail.rc文件,则需要yum install -y mailx

 

linux命令累积>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

w            ##查看已登录的用户                            
last                               #查看用户登录日志
lsof -i :22                                      #查看22端口被哪个IP进程占用和已建立连接的客户端
lsof /bin/bash                                   #查看谁正在使用某个文件
#查看php-fpm的地址
whereis php-fpm
启动php-fpm
rpm -ql httpd            #服务详细路径
tar zcvf - httpd/ | ssh [email protected]  tar xzf - -C /root   SSH快速备份文件到另一服务器
echo -e    处理特殊字符,而不会将它当成一般文字输出,如 echo -e `cat access_log`
/etc/profile                                #所有系统用户登录执行
hash          #记录了已执行过的命令的完整路径
grep –e “内容” *.html  /   #找到根目录下以.html结尾的文件中含有“内容”的行并显示它们
df -hT
uptime
free -m
ls | xargs rm    #目录中大量文件删除

生成SSH证书并复制到远端服务器# 好像不行
ssh-keygen -y -f ~/.ssh/id_rsa && cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys" 
sed ‘/^$/d‘ filename              #删除空行
sed ‘s/ //g‘ filename             #删除空格
sed -i ‘s/#.*$//g‘ filename       #删除#后的注释 
cat /dev/urandom | tr -dc ‘a-zA-Z0-9‘ | fold -w 32 | head -n 1       # 生成随机字符
行首或行尾插入:
sed ‘s/^/new/g‘ file
sed ‘s/$/new/g‘ file
wget -r -p -np -k http://www.jb51.net     #用wget下载整站  
cat filename |awk -F ‘‘ ‘{if(NF>6) print $0}‘      #查找每行大于几位数的数据:
lynx -dump www.jb51.net        #获取HTML页面文本内容包含页面的URL 
links -dump www.jb51.net       #获取HTML页面文本内容 对中文内容支持不好
socat TCP4-LISTEN:1234,reuseaddr,fork, TCP4:www.baidu.com:80    端口重定向

rpm -qpl xxxxxx.rpm               #安装包默认安装位置

who -b                      #查看最后一次系统启动的时间
last reboot                #查看Linux系统历史启动的时间
diff                            #输出为了两个文件修改后的内容
cfdisk /dev/sdb          #图像分区(2T以下)
parted /dev/sdb         #大容量存储分区
blkid                         #列出所有分区的UUID
ls -l /dev/disk/by-uuid/         #列出所有分区的UUID和分区名称

#开始进入扫描、修复文件系统,注意:在单用户模式(init 1)、修复模式或把设备umount后进行修复

fsck.ext4 -y /dev/sdb

ethtool -p ethX                                #执行网卡灯亮,多网卡是用来判断网卡位置

lsusb                                          #查看USB设备, -v看详细信息
more /proc/cpuinfo |grep -i model              #查看CPU型号
more /proc/scsi/scsi |grep -i model            #查看硬盘型号
nmcli con |sed -n ‘1,2p‘                                                      #获取网卡UUID
more /etc/udev/rules.d/70-persistent-net.rules                   #查看网卡MAC地址,ifcofig也行
chmod  -R   +x  目录                                                           #目录和目录下子目录权限+执行 
/root/.bash_profile                                                              #配置单用户登录后执行
env                                                            #列出当前终端上的全部环境变量
lsmod                                                            #列出加载的内核模块
modprobe dm-multipath                                                     #加载模块
cat /proc/partitions                                                              #查看所有分

blkid                              #列出所有分区的UUID

ls -l /dev/disk/by-uuid/           #列出所有分区的UUID和分区名称

以上是关于生产环境日常命令的主要内容,如果未能解决你的问题,请参考以下文章

万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)

生产环境中常用的命令

ELK在生产环境的简单应用

mysql生产环境常用命令

一些Centos Python生产环境的部署命令

docker生产环境部署jar包命令