生产环境日常命令
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和分区名称
以上是关于生产环境日常命令的主要内容,如果未能解决你的问题,请参考以下文章