一、进程管理
1.查看进程信息
jps -l --jdk查看java进程信息
jps -lv --jdk查看java进程信息(额外显示jvm启动参数)
ps -ef | grep java --查看java进程信息
ps -aux |grep -v grep|grep 28990 --根据PID查进程信息
cd /proc/28990 --直接进入PID目录
netstat -nlp|grep 80 --根据端口号查进程信息
2.查看正在运行的jar包情况
ps -ef|grep forwarding-client-0.0.1-SNAPSHOT.jar --查询进程信息
ps -aux|grep forwarding-client-0.0.1-SNAPSHOT.jar --显示进程所有状态(CPU/内存)
ps aux --sort -rss | grep forwarding-consumer --根据内存使用情况降序显示进程信息
3.启动jar包
-- 启动jar命令
java -jar forwarding-client-0.0.1-SNAPSHOT.jar -Dspring.profiles.active=test -Dspring.config.location=/opt/TestPlatform/application.properties
-- 后台运行JAR包,并输出日志文件
java -jar forwarding-client-0.0.1-SNAPSHOT.jar > log.file 2>&1 &
-- 永久后台运行jar
nohup /opt/jdk1.8.0_131/bin/java -jar -Dspring.config.location=/opt/TestPlatform/application.properties /opt/TestPlatform/TestPlatform.jar --server.port=8080
-- 永久后台运行jar,并输入日志文件
nohup java -jar rocketmq-console-ng-1.0.1.jar > log.file 2>&1 &
-- 永久后台运行jar,并按日期格式输入日志文件
nohup java -jar rocketmq-console-ng-1.0.1.jar > logs/$(date +%Y-%m-%d).log 2>&1 &
-- docker运行MQ容器
docker run --name mq -d -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.200.197:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -v /etc/localtime:/etc/localtime -p 8088:8080 -t styletang/rocketmq-console-ng
-- maven加密方式构建
mvn clean package -Dmaven.test.skip=true -Dxjar.password=123456
5.执行shell脚本
./run.sh --需要权限允许
sh run.sh --不需要权限允许
6.查看启动jar日志信息
tail -f ~/logs/rocketmqlogs/namesrv.log --实时查看进程日志信息
tail -n 5 info.log --查询进程日志末尾5行
cat log.file --查看所有日志信息
7.停止进程
kill -9 32473 --强制终止
kill -15 --终止
二、网络管理
1.查看程序端口占用情况
netstat -ano | grep 9876 #查询系统中端口网络连接/监听状态
netstat -anp #显示系统中所有网络连接,并标注每个连接对应的进程名/PID。
netstat -ntpl #查询系统中正在监听的TCP端口,
netstat -anp|grep 10000 -c #统计系统中端口相关的网络连接总数
netstat -ano | grep 10000 | grep ESTABLISHED > conectionInfo.txt #查找端口已建立连接数并导出文件
watch -n 1 'netstat -ano | grep 10000 | grep ESTABLISHED -c' #实时监控统计端口下已建立的连接数量
watch -n 1 'netstat -ano | grep 192.168.1.1 | grep ESTABLISHED -c' #实时监控统计IP地址已建立的连接数量
netstat -anp | grep 25723 | grep LISTEN --查看进程启动的所有端口
netstat -anp | grep 5821 | grep LISTEN -c --查看进程启动的所有端口数量
netstat -anp | grep 8490 pid/port --根据pid或端口查进程
netstat -naop | grep 8490 pid/port --根据pid或端口查进程
lsof -i:9876 --查看端口
nc -l port --临时监听TCP端口
nc -lk port --永久监听TCP端口
tcping 127.0.0.1 8080 --测试IP和端口是否正常
2.网络SSH
downlod(远程--->本地)
scp -r -P 26399 root@127.0.0.1:/home/default/admin/test.sql ~/Dowload
upload(本地-->远程)
scp -P 26399 ~/Dowload/test.sql root@127.0.0.1:/home/default/admin/
upload(本地-->远程),r表test目录递归所有子文件
scp -r -P 2201 test root@192.168.200.146:/share
upload(本地-->远程),排除logs目录
rsync -avz -e 'ssh -p 26399' --exclude='logs'
跨服务器传输(本地不中转)
scp -P 26399 root@192.168.1.1:/file.sql root@192.168.1.2:/tmp
3.查看IP
ip a
ip addr
curl ip.me --Linux查看公网IP
telnet cip.cc --查询你的公网IP地址
4.TCP抓包
bash
-- 抓取指定一个IP地址数据包,输出内容到文件
tcpdump -i any host 192.198.1.1 -w /tmp/csp.cap
-- 抓取指定两个IP地址数据包,输出内容到文件
tcpdump -i any host 192.198.1.0 or host 192.198.1.1 -w /home/egg/360-0721.cap
--抓取eth0网卡上指定端口所有数据包
tcpdump -nn -i eth0 port 21101 -w 21101.cap
--抓取eth0网卡上指定IP和端口所有数据包
tcpdump -nn -i eth0 net 221.122.121.92 and port 21101 -w 21101.cap
-- 抓取所有UDP数据包:
sudo tcpdump udp
-- 抓取指定端口的UDP数据包
sudo tcpdump udp port 53
-- 抓取指定端口的UDP数据包,并输出内容到文件
sudo tcpdump udp port 53 > dns.pcap
-- 抓取指定源IP的UDP数据包
sudo tcpdump udp src host 192.168.1.100
-- 抓取指定目标IP的UDP数据包
sudo tcpdump udp dst host 192.168.1.200
-- 抓取指定源IP和目标IP的UDP数据包
sudo tcpdump udp host 192.168.1.100 and 192.168.1.200
-- 抓取指定网卡上的UDP数据包
sudo tcpdump udp -i eth0
--当源IP是192.168.100.10,目的IP是192.168.100.20,访问的目的端口是9522的TCP数据包到达时,将其目的地址+端口修改为192.168.100.30:8890
-A PREROUTING -s 192.168.100.10/32 -d 192.168.100.20/32 -p tcp -m tcp --dport 9522 -j DNAT --to-destination 192.168.100.30:8890
当源IP是192.168.100.10,目的IP是192.168.100.30,访问的目的端口是8890的TCP数据包即将离开本机时,将其源地址修改为192.168.100.20
-A POSTROUTING -s 192.168.100.10/32 -d 192.168.100.30/32 -p tcp -m tcp --dport 8890 -j SNAT --to-source 192.168.100.20
traceroute 218.65.240.252 --网络追踪
5.HTTP请求
bash
curl -X POST -H "application/x-www-form-urlencoded" -i -k https://uat-test.com.cn/receiveMsg -d 'report=2918d6b3-229d-4581-ad9f-cf7dfbd0c214%2C17602129153%2CDELIVRD%2C2023-10-20+13%3A35%3A13%2C1%2C4884%2C101873306144337480178245%2C583181778731143170&name=test&account=test'
curl -X POST \
https://api.123.com/test \
-H 'Content-Type: application/json' \
-H 'Postman-Token: ec1c438c-c98e-4d6b-87bd-e37467421485' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F appId=LPvsdekq \
-F appKey=uOafqd2 \
-F orderNo=12345987
6.wireshark
bash
ip.addr == 192.168.3.77
ip.src == 192.168.124.8 && ip.dst == 192.168.57.66
tcp.port == 80
tcp.srcport==80
tcp.dstport == 80
http.request and tcp.port == 7777
三、目录及文件
1.查找服务安装的目录
bash
--首先查看进程ID
ps -ef|grep redis
--然后通过进程ID查找目录
ls -l /proc/进程ID/cwd
2.查找文件或目录
bash
--查找文件
find / -name 'test.jar'
--查找文件夹(目录)
find / -name 'xxl*' -type d
3.grep查找内容
bash
find . | xargs grep -ri 'content'
--grep查找同时满足多个条件 (与)
-c count统计,统计配结果的行数
-l 打印每个输入文件的名字
-n 提供输入行的行号
-i 忽略表达式中字母大小写。
grep SYYY fine2021335.csv --过滤文件指定内容
grep 'fail' a.txt | grep 'error' --查找文件中同时包含fail和error信息
grep -E 'pattern1.*pattern2' --实现AND操作
grep -ni 'channelActive' test.log > test2.log --查看关键字并生成文件
--grep 查找满足多个条件中的一个(或),-E正则表达式实现OR操作
tail -f logs/test.log | grep -E '28010|13404'
tail -f logs/test.log | grep '28010\|13404' --或
tail -f /share/server/bin/logs/test.log | grep 'response'
tail -f /share/server/bin/logs/all.log | grep -w 'CN'
tail -f logs/all.log | grep 'CN-1878' | grep 'RESP_G' --与
cat all.log|grep -a CN| grep -a 123
cat all.log | grep -a '1988' | grep -a 'RPT' | wc -1 --按行字数统计
cat all.log | grep -a 'CN' | grep -a '10:27:08' | 'RPT' | wc -l
tail -f logs/all.log | grep -E 'CN|850' | grep -a 'RESP' > RESP.txt
cat bb.txt | sort | uniq -c | sort -r | awk '{print $2,$1}' --分组统计数量
grep 'resp=' logs/all.log | grep -a 'CN'| awk -F'resp=' '{if ($2+0 > 500) print $0}' -- 过滤resp大于100的日志
grep -a '9rf.cn/1Uh?WTL6n0' logs/api.log.2024-08-* --查询一个月所有日志
grep使用正则匹配跨行数据
grep -Pzo 'java\.util\.concurrent\.RejectedExecutionException: event executor terminated(\n|.)*?(?=\n\S)' logs/gw-all.log.2024-07-23 | less
pcregrep查询多行匹配
pcregrep -M 'java\.util\.concurrent\.RejectedExecutionException: event executor terminated(\n|.)*?(?=\n\S)' logs/gw-all.log.2024-07-23
awk匹配包含多行日志
awk '/java.util.concurrent.RejectedExecutionException: event executor terminated/ {p=1}
p {print}
/\S/ && !/java.util.concurrent.RejectedExecutionException: event executor terminated/ {p=0}' logs/gw-all.error.log.2024-07-23
日志截取时间查询
grep "2020-02-19 14:1[0-5]" elastic-job.log > log.tx --查询2020-02-19 14:10到2020-02-19 14:15区间的日志
grep "2020-02-19 1[0-1] " elastic-job.log --查询当天10点到11点的日志
grep -A 10000 '\[2024-08-01 02:08:56\]' logs/application.log -- -A表示匹配后数量行数
sed命令(推荐使用)
sed -n '/2023-03-18 12:50:00/,/2023-03-18 13:10:58/p' logs/api.log | grep -a 'gjdw03'
awk命令
awk '$2>"14:10:10" && $2<"14:12:59"' dubbo-elastic-job.log --注意参数$1和$2的取值,我这里$1是指年月日,$2是指时分秒
awk '$1 >= "17:13:00.000" && $1 <= "17:16:00.000"' logs/sys-info.2024-06-26.log
awk '$0 >= "[2024-08-01 02:08:56]"' logs/application.log | less --less 命令的导航功能方便地查看过滤后的日志内容
4.less查找内容
bash
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
j - 向前移动一行
k - 向后移动一行
G - 移动到最后一行
g - 移动到第一行
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
Q 退出less 命令
5.权限设置
bash
chmod 761 demo
chmod +x test.sh --赋予执行权限
chmod u+x test.sh --赋予执行权限
root用户权限赋予egg用户
chown -R egg:egg /share/monitorLog
6.VIM编辑
bash
-- 替换文本
:s/foo/bar/:在当前行中,将第一个出现的字符串 foo 替换为 bar。
:s/foo/bar/g:在当前行中,将所有出现的字符串 foo 替换为 bar。
:%s/foo/bar/:在整个文件中,将每行第一个出现的字符串 foo 替换为 bar。
:%s/foo/bar/g:在整个文件中,将所有出现的字符串 foo 替换为 bar。
:%s/foo/bar/gc:在整个文件中,将所有出现的字符串 foo 替换为 bar,末尾加c表示每次替换时确认
7.查看文件目录大小
bash
du -h --max-depth=1 -- 当前目录下各个子目录所使用的空间
du -h test --查看当前目录及下级目录使用空间
du -h -s test --查看当前目录使用总空间
du -ah test --文件和目录都显示
du|sort -nr|more --按照空间大小排序
du -h --max-depth=1 |sort -nr| more --当前目录按照空间大小排序
du -ah --time --max-depth=1 ./ | sort -hr --查看当前目录下所有目录及文件,按空间大小排序
du -ah --time --max-depth=1 /usr/* | sort -hr | head -n10 #按空间大小排序,查看前10行
du -ah --time --max-depth=1 /usr/* | sort -hr | tail -n10 #按空间大小排序,查看后10行
du -h0
du -hs *
8.ll列出文件列表
bash
ll -Sh --按大小排序
ll -rt --按时间升序
ll -t --按时间降序
9.压缩
bash
tar -cvf test.tar test/ --将目录打成tar包
zcat api.log.2022-12-05.gz --不解压缩文件的情况下,显示压缩包中文件的内容
10. 复制文件夹
bash
rsync -av --exclude='logs/' /source/path/ /destination/path/
11.上传、下载文件
bash
rz --上传文件
sz --下载文件
12.搜索命令
bash
which --安装路径
whereis --安装文件详细
locate --类似find搜索目录及文件
四、系统
1.性能分析工具
bash
top命令
Ctrl+M排序
s - 改变画面更新频率,如:s 60,表示每隔一分钟刷新一次屏幕;
N - 以 PID 的大小的顺序排列表示进程列表
P - 以 CPU 占用率大小的顺序排列进程列表
M - 以内存占用率大小的顺序排列进程列表
h - 显示帮助
n - 设置在进程列表所显示进程的数量
q - 退出 top
命令:top [-] [d delay] [q] [c] [S] [s] [i] [n]
d:指定更新的间隔,以秒计算。
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
c:显示进程完整的路径与名称。
S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。
s:安全模式。
i:不显示任何闲置(Idle)或无用(Zombie)的行程。
n:显示更新的次数,完成后将会退出top
htop -d 10 -10s刷新
2.防火墙
bash
--开放端口
firewall-cmd --zone=public --add-port=10911/tcp --permanent
--查询端口是否放行
firewall-cmd --zone=public --query-port=9876/tcp
--删除端口规则
firewall-cmd --zone=public --remove-port=9876/tcp --permanent
--查看已放行的所有端口
firewall-cmd --zone=public --list-ports
--创建自定义区域
firewall-cmd --permanent --new-zone=cloud_mq
--向自定义区域添加源IP
firewall-cmd --permanent --zone=cloud_mq --add-source=117.78.48.20
--重新加载防火墙规则
firewall-cmd --reload
--查看防火墙状态
systemctl status firewalld
--启动防火墙
systemctl start firewalld
--停止防火墙
systemctl stop firewalld
--开机自启
systemctl enable firewalld
--禁止开机自启
systemctl disable firewalld
--iptables规则查询
iptables-save | grep 123.125.99.60
3.系统时间同步
3.1 阿里云时间同步
bash
date -R --查看当前服务器时间
yum install ntpdate --安装ntpdate服务
ntpdate ntp1.aliyun.com --同步上海时间
4.crontab定时任务
bash
crontab -e --执行文字编辑器来设定时程表
crontab -l --列出目前的时程表
crontab -r --删除目前的时程表
cat /etc/crontab --查看脚本
vim /etc/crontab --编辑脚本
grep CRON /var/log/cron --查看cron任务调度情况
5.Linux连接数
bash
ulimit -n --默认的Socket最大连接数为1024
6.history不记录历史
bash
set +o history --不记录历史,当前连接有效
set -o history --记录历史
history -d [num] --删除历史记录
sed -i '150,$d' .bash_history --保留前150行记录
chattr +ai ~/.bash_history --不写入历史记录
chattr -ai ~/.bash_history --写入历史记录
7.系统监控
bash
lscpu --查看CPU
vmstat --虚拟内存统计
uptime --查看机器负载
iostat --磁盘性能
iftop -nP --端口流量监控
nload --网卡流量监控
/proc/sys/vm/drop_caches --释放缓存
五、常用软件
1.nginx
bash
sudo /sbin/service openresty start
sudo /sbin/service openresty stop
sudo /sbin/service openresty status
2.java
bash
jstat -gc 3477 #统计gc信息
jstat -gcutil -h5 212548 5000 #5s统计一次GC信息
3.mysql
bash
SHOW MASTER STATUS; --查看主服务状态
SHOW SLAVE STATUS; --查看从服务状态
4.python
bash
-- 后台永久运行python脚本,输出日志文件
nohup python3 myscript.py > myscript.log 2>&1 &
-- 查看python安装路径
which python3
六、阿里云终端Alpine Linux
bash
1.查看系统版本信息
cat /etc/os-release
2.更新软件包列表
apk update
3.安装crul
apk add curl
4.安装telnet
apk add busybox-extras
5.验证安装
which telent