linux

os

cat /proc/version  # 查看系统版本
ls /etc | grep release
cat /etc/centos-release
# radhat或centos存在: /etc/redhat-release 这个文件【 命令 cat /etc/redhat-release 】
# ubuntu存在 : /etc/lsb-release 这个文件 【命令 cat /etc/lsb-release 】
cat /etc/issue #linux 系统通用
​
lsb_release -a # 查看系统是Ubuntu,还是CentOS(这个命令适用于所有的linux)
lsb_release -a / uname -a #查看系统发行版本
​
​
======系统状态
last reboot  # 查看重启日志
last  # 查看用户登录日志

disk

Linux 挂载新的硬盘 分区 Linux 分区、格式化4T大容量存储分区 在线扩展系统盘分区及文件系统

lsblk  # 列出所有块设备(df -h 不能看到的卷)
lsblk -f # 查看所有设备的挂载情况
fdisk -l  # 查看硬盘和分区
df -TH  # 查看已有分区的文件系统
### 挂载磁盘
fdisk /dev/sdb # 开始分区 (Fdisk最大只能创建2T分区的盘,超过2T使用parted)
parted /dev/sdb
### 分区完成
mkfs -t xfs /dev/sdb1 # 格式化,
mkfs.xfs -f /dev/sdb1 # 格式化
mount /dev/sdb1  /data # 挂在到本机 /data 目录
vi /etc/fstab  # 设置开启自动挂载

### 实践: Linux 分区、格式化4T大容量存储分区
parted /dev/sdb
- p  # 查看分区
- mklabel gpt
- y
- mkpart
- sdb1
- xfs
- 0
- 4000GB
- Ignore
- quit
## 分区OK
mkfs.xfs -f /dev/sdb1 # 格式化
mount /dev/sdb1 /data # 挂载
vim /etc/fstab
/dev/sdb1 /data xfs defaults 0 0
### 挂载磁盘OK

# 磁盘大小
df -h
# ======文件夹大小
du -h --max-depth=1 # 查看各文件夹大小 du -h --max-depth=1 /path
du -h --max-depth=1 --exclude=www / # 排除名称是www的文件名或目录

du -h --max-depth=1 | sort -n -r | head -n 10

# 在线扩容腾讯云数据盘分区 https://cloud.tencent.com/document/product/362/64035
df -TH  # 确定已有分区的文件系统。
resize2fs /dev/vda1  # 扩容 ext4 文件系统。

### 挂载磁盘流程
- 配置开机自动挂载
vi /etc/fstab  # 一行一块盘
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=2d5d0b2f-9356-490b-87df-97217de1828a /boot                   xfs     defaults        0 0
UUID=3806-61A1          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
/dev/mapper/centos-home /www                    xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
- mount -a  # 根据 /etc/fstab 中的配置尝试挂载所有未挂载的文件系统。如果没有错误,说明配置正确

Cron

service crond reload/restart

程序员的工具箱

在线工具

Linux 命令搜索

常用命令全拼

命令大全

设备类工具

service network restart # 重启网络
curl -x http://23.228.234.169:25283 cip.cc
curl -x http://23.228.234.169:25283 ipinfo.io
curl --connect-timeout 2 -x 127.0.0.1:8118 http://translate.google.com
curl --socks5 125.119.175.48:8909 http://example.com/
​
# 设备类工具
lspci | grep -i ethernet # 查看网卡型号: 
dmidecode # 查看所有硬件信息:
lscpu # 查看 CPU: 
lscpi # 查看主板
lsscsi # 查看 SCSI 卡:

网络 network

常用工具 tcpdump / wireshark 抓包及分析

ip addr # 查看网卡
yum install nload
nload eth0 # 实时查看eth0网卡流量网速
​
yum install -y iftop
​
​
yum install mtr # 网络故障排查工具(ping, tracert, nslookup 的合并)
mtr qq.com
​
centos 7 安全规则
systemctl status firewalld
systemctl start firewalld
systemctl stop firewalld
firewall-cmd --list-ports # 查看已开放的端口
firewall-cmd --zone=public --add-port=443/tcp --permanent # 开放端口(开放后需要要重启防火墙才生效)
firewall-cmd --zone=public --remove-port=443/tcp --permanent # 关闭端口(关闭后需要要重启防火墙才生效)
firewall-cmd --reload # 重启防火墙
​
​
------ 端口
ss -ltp  # 查看主机监听的服务端口
netstat -ltp  # 查看主机监听的服务端口
telnet 5.180.144.17 27017  # 查看端口通不通
lsof -i :8000               #查看端口
netstat -tunlp | grep 端口号 #查看端口号
​
------IP 
telnet IP  # ip 是否通
ping IP
​
------dns
# nslookup用于查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题
yum install bind-utils
nslookup domain [dns-server]   # 如果没有指定dns服务器,就采用系统默认的dns服务器。
vi /etc/resolv.conf  # 添加dns服务器
cd /etc/sysconfig/network-scripts  # 网卡目录
service network restart
systemctl restart network.service
​
​
------tcpdump
tcpdump tcp port 80 and host 49.51.184.85 -w test.pcap 
​
------mtr 监控网络连通性的工具
yum install mtr -y
mtr google-search3.p.rapidapi.com
mtr google.com

文件管理

find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
find /www/wwwroot/googletranslate/transtext_log -mtime +60 -name "*" -exec rm -rf {} \;
ls /www/wwwroot/googletranslate/html | xargs -n 10 rm -rf
​
ls -lR| grep "^-" | wc -l
find /www/wwwroot/googletranslate/html/b527.goodao.net -name '*.html' | wc -l
​
​
ls -l|grep "^-"| wc -l    # 查看某个文件夹下【文件的个数】
ls -lR|grep "^-"| wc -l   # 查看某个文件夹下文件的个数,包括子文件夹下的文件个数。
ls -l|grep "^d"| wc -l    # 查看某个文件夹下【文件夹的个数】。
ls -lR|grep "^d"| wc -l   # 查看某个文件夹下【文件夹的个数】,包括子文件夹下的文件夹个数。
ls -l| wc -l              # 查看文件夹下所有的文件和文件夹。也就是统计ls -l命令所输出的行数。
ls -lR html/www.3treesgroup.com |grep "^-"| wc -l
<<'comment'
ls -l     # 长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)
grep "^-" # 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l     # 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
comment
​
echo "source <(qshell completion bash)" >> ~/.bashrc # 输入一行文本到~/.bashrc
​
​
======文件夹大小
du -sh *
du -h --max-depth=1 # 查看各文件夹大小 du -h --max-depth=1 /path
​
du -h --max-depth=1 | sort -n -r | head -n 10
​
====== 查找 find whereis which ======
find /home -name "*.txt"  # 查找文件
whereis grep # whereis命令只能用于程序名的搜索
which grep  # which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置 
which apachectl
​
​
====== ulimit 限制
vi /etc/security/limits.conf
* soft nofile 65536  #任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接
* hard nofile 65536
* soft nproc  65536  #任何用户可以打开的最大进程数
* hard nproc  65536
​
====== CP
\cp -rfav /www/wwwroot/update_temp/* /www/wwwroot/c215.quanqiusou.cn/  # \覆盖文件不提示

CPU PID

Linux系统常用监控工具

Linux运维工具 性能优化-分析系统瓶颈

CPU瓶颈:top

IO瓶颈:iostat

内存瓶颈:free

分析进程调用

系统响应变慢,首先得定位大致的问题出在哪里,是IO瓶颈、CPU瓶颈、内存瓶颈还是程序导致的系统问题;
工具:top,free, iostat
​
------ CPU 排序工具:top,htop ------
sar -u  # 默认情况下显示的cpu使用率等信息就是sar -u;
sar -q  # 查看平均负载
top  
top -Hp pid #查看该 PID 对应进程下各个线程的 CPU 使用情况
htop
------
vmstat 1 #查看cpu使用情况以及平均负载
pidstat -u 1 -p pid #进程cpu的统计信息
​
# perf命令可以查看程序的性能,如果发现某个程序的CPU使用率过高,可以使用perf命令查看程序的性能,以便于找出程序出错的原因。
yum install perf -y   #https://cloud.tencent.com/developer/article/1683074
perf top -p 2661 # perf 工具是 Linux 内核提供一个非常强大的动态跟踪工具,perf top 指令可用于实时分析正在执行程序的性能问题。 
perf top -p 632 -e cpu-clock  #跟踪进程内部函数级cpu使用情况
perf top -p `pidof mysqld`  # 分析mysql性能消耗
​
------ 分析进程调用 有两个好用的工具: strace, pstack, lsof ------
# strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
yum install strace -y
strace -p 1288145
------
yum install gdb
pstack pid  # 跟踪进程栈
------ 
lsof  # 查看当前打开的所有文件
lsof -p 30407 # lsof 工具可以查看某个进程打开的文件句柄
lsof hello.c   # 查看当前文件被哪些进程打开
lsof /www/wwwroot/googletranslate/html/www.alizarinchina.com  # 查看当前文件被哪些进程打开
​
------ cpu负载定位 ------
# https://cloud.tencent.com/document/product/213/2150     
# https://segmentfault.com/a/1190000022419460
​
------ PID ------
# 进程工具
lsof -i :8000   #查看端口
netstat -tunlp | grep 端口号 #查看端口号
netstat -ntlp  # 查看所有占用端口
systemctl status 2854       #(进程号)查询关联的守护进程
​
​
------ IO ------
# iostat是I/O statistics(输入/输出统计)的缩写,用来动态监视系统的磁盘操作活动。
# 通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。
yum install sysstat
iostat 2  # 每隔 2秒刷新显示
​
# IO监控 iotop
iotop
df -h
du -sh #查看当前目录所占空间大小
​
# 内存监控 free
free -m   #按兆M查看
ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -20   #内存占用高的前20
​
# 流量和宽带监控 iftop
​
​
------ PS 命令 ------
​
ps -ef | grep 'logstash' | grep -v grep | awk '{print $2}' | xargs kill -9  # 批量杀死{servername}进程
ps aux | grep 'test.py' | grep -v grep | awk '{print $2}' | xargs kill -9  # 批量杀死{servername}进程
​
ps -ef | grep '/usr/bin/docker-proxy -proto tcp' | wc -l    # 查看某个服务的进程数 
ps -efL  # 定位启动进程较多的程序

守护进程

command > /dev/null 2>&1 &
disown
### eg:
python main.py > /dev/null 2>&1 &
disown
​
(xmr.sh > /dev/null 2>&1 &)

Supervisor Ceshi

centos安装supervisor详细教程

yum install supervisor
vim /etc/supervisord.conf    # 配置 webUI inet_http_server
systemctl restart supervisord
systemctl enable supervisord    # 开机启动
# systemctl stop supervisord
# systemctl start supervisord
# systemctl status supervisord
# systemctl reload supervisord
# systemctl restart supervisord
​
########## Install Cesi as a service 后
systemctl start cesi
vi /etc/cesi.conf.toml
​
# 宝塔安装的 supervisor 服务文件 /usr/lib/systemd/system/supervisord.service
ExecStart=/www/server/panel/pyenv/bin/supervisord -c /etc/supervisor/supervisord.conf
vi /etc/supervisor/supervisord.conf    # 修改 inet_http_server
systemctl restart supervisord          #  重启服务
# 重启失败?
sudo unlink /run/supervisor.sock    # 后再重启服务 systemctl restart supervisord
​
​
​
​

ssh

用户,用户组

ssh-keygen -R 129.226.118.122 # 将129.226.118.122的公钥信息清除
​
groups  #查看当前登陆用户所在的组
groups testnewuser #查看testnewuser 所在的组
cat /etc/group  #查看所有组
cat /etc/passwd #用户列表
usermod #修改用户
ssh -i ~/.ssh/devops.pem root@host -p 22

smtp 端口检测

https://aws.amazon.com/cn/premiumsupport/knowledge-center/smtp-connectivity-timeout-issues-ses/

# 端口检测工具
telnet smtp.qiye.aliyun.com 25    # telnet 不支持SSL加密
openssl s_client -connect smtp.qiye.aliyun.com:465   

运维工具:

htop

运维日常问题收集

解决linux删除文件后不释放磁盘的问题

df -h    # 查看系统的磁盘空间
du -s * | sort -nr | head      # 查看前10的最大文件
tcpdump  # 抓包工具

文件管理

Linux 6种日志查看方法,不会看日志会被鄙视的

more -c -1000 +5000000 logs/google_search/google_luminati/google_luminati.log
# 搜索
less -n log.log  # 推荐打开文件的时候使用 -n :不计算行号(打开大文件的时候很有用)
less +50p -n  file  # 直接定位到 50% 的位置
​
shift + G 命令到文件尾部  然后输入 ?加上你要搜索的关键字例如 ?1213
​
按 n 向上查找关键字
​
shift+n  反向查找关键字
​
​
# sed 根据时间查看日志
sed -n '/2022-04-28 00:58:*/,/2022-04-28 02:38:*/p' rankRapidapi_2022-04-28_00-00-01_466702.log
​
# 统计文件或者文本中包含匹配字符串的行数 -c 选项:
cat swoole.log | grep -c '223.236.216.7'
​
# 多个文件中查找
cat google_keyword_rank_2021-11-09* | grep "Read timed out" | wc -l
cat google_keyword_rank_2021-11-09* | grep "response.status_code: 502" | wc -l
​
grep -c 'Read timed out' google_keyword_rank_2021-11-09_00-00-00_104922.log
grep -c 'response.status_code: 502' google_keyword_rank_2021-11-09_00-00-00_104922.log
​
​
# 字符串出现的次数,为了避免解压文件,可以使用zgrep,zcat等命令查找、查看压缩文件中的信息。
# -o指示 grep显示所有匹配的地方,并且每一个匹配单独一行输出
grep -o test test.log | wc -l
​
​
#删除注释行和空行 https://blog.csdn.net/hl449006540/article/details/79999399
grep -v '^#' xxx.conf | grep -v '^$' > xxx.conf
​
#删除注释行到配置文件中
grep -v '^#' docker-compose_v3_alpine_mysql_latest.yaml > docker-compose.yaml
​
​
======打包======
# 打包并压缩: 
tar -zcvf [目标文件名].tar.gz [原文件名/目录名] 
tar -zcvf c729.goodao.net.tar.gz c729.goodao.net
​
​
# 解压并解包: 
tar -zxvf [原文件名].tar.gz      #  注:z代表用gzip算法来压缩/解压。
tar -zxvf www.alizarinchina.com.tar.gz -C www.alizarinchina.com_temp
​
# 对比
diff -r www.alizarinchina.com www.alizarinchina.com_temp/www.alizarinchina.com
​
tar -ztvf www.alizarinchina.com.tar.gz | grep html | wc -l  # 查看压缩包有哪些文件
zcat -l www.alizarinchina.com.tar.gz | wc -l  # 查看压缩包总行数
​
​