Linux
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
程序员的工具箱
设备类工具
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
系统响应变慢,首先得定位大致的问题出在哪里,是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
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
运维日常问题收集
df -h # 查看系统的磁盘空间
du -s * | sort -nr | head # 查看前10的最大文件
tcpdump # 抓包工具
文件管理
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 # 查看压缩包总行数
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果