Linux运维部署常用命令

张开发
2026/5/8 16:04:22 15 分钟阅读

分享文章

Linux运维部署常用命令
一、进程管理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.activetest -Dspring.config.location/opt/TestPlatform/application.properties -- 后台运行JAR包并输出日志文件 java -jar forwarding-client-0.0.1-SNAPSHOT.jar log.file 21 -- 永久后台运行jar nohup /opt/jdk1.8.0_131/bin/java -jar -Dspring.config.location/opt/TestPlatform/application.properties /opt/TestPlatform/TestPlatform.jar --server.port8080 -- 永久后台运行jar并输入日志文件 nohup java -jar rocketmq-console-ng-1.0.1.jar log.file 21 -- 永久后台运行jar并按日期格式输入日志文件 nohup java -jar rocketmq-console-ng-1.0.1.jar logs/$(date %Y-%m-%d).log 21 -- docker运行MQ容器 docker run --name mq -d -e JAVA_OPTS-Drocketmq.namesrv.addr192.168.200.197:9876 -Dcom.rocketmq.sendMessageWithVIPChannelfalse -v /etc/localtime:/etc/localtime -p 8088:8080 -t styletang/rocketmq-console-ng -- maven加密方式构建 mvn clean package -Dmaven.test.skiptrue -Dxjar.password1234565.执行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.网络SSHdownlod(远程---本地) scp -r -P 26399 root127.0.0.1:/home/default/admin/test.sql ~/Dowload upload(本地--远程) scp -P 26399 ~/Dowload/test.sql root127.0.0.1:/home/default/admin/ upload(本地--远程)r表test目录递归所有子文件 scp -r -P 2201 test root192.168.200.146:/share upload(本地--远程)排除logs目录 rsync -avz -e ssh -p 26399 --excludelogs 跨服务器传输本地不中转 scp -P 26399 root192.168.1.1:/file.sql root192.168.1.2:/tmp3.查看IPip a ip addr curl ip.me --Linux查看公网IP telnet cip.cc --查询你的公网IP地址4.TCP抓包-- 抓取指定一个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请求curl -X POST -H application/x-www-form-urlencoded -i -k https://uat-test.com.cn/receiveMsg -d report2918d6b3-229d-4581-ad9f-cf7dfbd0c214%2C17602129153%2CDELIVRD%2C2023-10-2013%3A35%3A13%2C1%2C4884%2C101873306144337480178245%2C583181778731143170nametestaccounttest 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 appIdLPvsdekq \ -F appKeyuOafqd2 \ -F orderNo123459876.wiresharkip.addr 192.168.3.77 ip.src 192.168.124.8 ip.dst 192.168.57.66 tcp.port 80 tcp.srcport80 tcp.dstport 80 http.request and tcp.port 7777三、目录及文件1.查找服务安装的目录--首先查看进程ID ps -ef|grep redis --然后通过进程ID查找目录 ls -l /proc/进程ID/cwd2.查找文件或目录--查找文件 find / -name test.jar --查找文件夹目录 find / -name xxl* -type d3.grep查找内容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 -Fresp {if ($20 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/ {p1} p {print} /\S/ !/java.util.concurrent.RejectedExecutionException: event executor terminated/ {p0} 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 $214:10:10 $214: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查找内容-g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 ctrl F - 向前移动一屏 ctrl B - 向后移动一屏 ctrl D - 向前移动半屏 ctrl U - 向后移动半屏 j - 向前移动一行 k - 向后移动一行 G - 移动到最后一行 g - 移动到第一行 /字符串向下搜索“字符串”的功能 ?字符串向上搜索“字符串”的功能 n重复前一个搜索与 / 或 ? 有关 N反向重复前一个搜索与 / 或 ? 有关 Q 退出less 命令5.权限设置chmod 761 demo chmod x test.sh --赋予执行权限 chmod ux test.sh --赋予执行权限 root用户权限赋予egg用户 chown -R egg:egg /share/monitorLog6.VIM编辑-- 替换文本 :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.查看文件目录大小du -h --max-depth1 -- 当前目录下各个子目录所使用的空间 du -h test --查看当前目录及下级目录使用空间 du -h -s test --查看当前目录使用总空间 du -ah test --文件和目录都显示 du|sort -nr|more --按照空间大小排序 du -h --max-depth1 |sort -nr| more --当前目录按照空间大小排序 du -ah --time --max-depth1 ./ | sort -hr --查看当前目录下所有目录及文件按空间大小排序 du -ah --time --max-depth1 /usr/* | sort -hr | head -n10 #按空间大小排序查看前10行 du -ah --time --max-depth1 /usr/* | sort -hr | tail -n10 #按空间大小排序查看后10行 du -h0 du -hs *8.ll列出文件列表ll -Sh --按大小排序 ll -rt --按时间升序 ll -t --按时间降序9.压缩tar -cvf test.tar test/ --将目录打成tar包 zcat api.log.2022-12-05.gz --不解压缩文件的情况下显示压缩包中文件的内容10. 复制文件夹rsync -av --excludelogs/ /source/path/ /destination/path/11.上传、下载文件rz --上传文件 sz --下载文件12.搜索命令which --安装路径 whereis --安装文件详细 locate --类似find搜索目录及文件四、系统1.性能分析工具top命令 CtrlM排序 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.防火墙--开放端口 firewall-cmd --zonepublic --add-port10911/tcp --permanent --查询端口是否放行 firewall-cmd --zonepublic --query-port9876/tcp --删除端口规则 firewall-cmd --zonepublic --remove-port9876/tcp --permanent --查看已放行的所有端口 firewall-cmd --zonepublic --list-ports --创建自定义区域 firewall-cmd --permanent --new-zonecloud_mq --向自定义区域添加源IP firewall-cmd --permanent --zonecloud_mq --add-source117.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.603.系统时间同步3.1 阿里云时间同步date -R --查看当前服务器时间 yum install ntpdate --安装ntpdate服务 ntpdate ntp1.aliyun.com --同步上海时间4.crontab定时任务crontab -e --执行文字编辑器来设定时程表 crontab -l --列出目前的时程表 crontab -r --删除目前的时程表 cat /etc/crontab --查看脚本 vim /etc/crontab --编辑脚本 grep CRON /var/log/cron --查看cron任务调度情况5.Linux连接数ulimit -n --默认的Socket最大连接数为10246.history不记录历史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.系统监控lscpu --查看CPU vmstat --虚拟内存统计 uptime --查看机器负载 iostat --磁盘性能 iftop -nP --端口流量监控 nload --网卡流量监控 /proc/sys/vm/drop_caches --释放缓存五、常用软件1.nginxsudo /sbin/service openresty start sudo /sbin/service openresty stop sudo /sbin/service openresty status2.javajstat -gc 3477 #统计gc信息 jstat -gcutil -h5 212548 5000 #5s统计一次GC信息3.mysqlSHOW MASTER STATUS; --查看主服务状态 SHOW SLAVE STATUS; --查看从服务状态4.python-- 后台永久运行python脚本输出日志文件 nohup python3 myscript.py myscript.log 21 -- 查看python安装路径 which python3六、阿里云终端Alpine Linux1.查看系统版本信息 cat /etc/os-release 2.更新软件包列表 apk update 3.安装crul apk add curl 4.安装telnet apk add busybox-extras 5.验证安装 which telent

更多文章