常用的linux命令
工作中常用的linux命令
简单记录一下工作中,经常使用的命令:
无论是面试还是工作,掌握linux常用命令,对于开发者而言,是必不可少的,简单说一下,部署项目时常用的一些linux的基础命令。
1.通过项目端口,找到项目部署的路径:
1)根据端口过滤,找到项目进程号:
netstat -ntlp | grep 30080
(ps:根据进程号找端口:netstat -lanput 30070)
2)假设找到进程号为10021:
ps -ef | grep 10021 =>能获得到部署项目的位置。
3)如何快速找到项目部署的目录位置,通过find 来模糊查找:
①查询file1目录
find /home -name "*file1"
②查询xxx.jar包
find /home -name xxx.jar
2.在没有jenkins自动化部署的时候,需要手动替换jar,war包(war包需要tomcat容器启动):
1)创建当前日期的备份目录:
mkdir jar_bak/20220421
2)复制jar包:
cp xxx.jar /jar_bak/20220421
3)查看当前进程pid:
ps -ef | grep $PWD
或
ps -ef | grep xxx.jar
或
jps
4)关闭当前进程号,如1005:
kill -9 1005
5)删出原有包:
rm -rf xxx.jar
6)上传包(本机和服务器传输文件):
1)通过xshell中的Xftp插件传输。
2)如果使用jumpServer给服务器做了权限(使用命令):
①安装ZModem文件传输工具
以centOS7为例
yum install lrzsz
②从本机上传到服务器:
rz
③从服务端发送文件到本机:
sz filename
7)若设置文件权限,先修改用户权限再启动:
chgrp web xxx.jar
chown web xxx.jar
或者
chown web:web xxx.jar
8)指定不同环境的配置文件和端口,并启动:
java -jar -Dspring.profiles.active=196 -Dserver.port=33038 /home/xxx/xxx/xxx.jar
或者编写脚本,每次都执行脚本:
#./bin/bash
if [ ! -z "$(ps -ef|grep xxx.jar |grep java)" ] ; then
ps -ef |grep xxx.jar |grep java| awk '{print $2 }' |xargs kill -9
fi
date=`date +%Y%m%d-%H%M%S`
echo $date
java -jar -Ddate=$date -Dspring.profiles.active=196 -Dserver.port=33038 /home/aaa/bbb/xxx.jar > /home/aaa/bbb/log.file 2>&1 &
Tips : ls -ltr 可以将日志文件倒序查看
9)启动成功,查看日志(实时监控500条):
tail -500f log.file
3.说一下查询日志的骚操作:
tail是尾部查找,head是头部查找,-n 代表显示行数。
①从第100行起,所有的日志:
tail -n +100 log.file
②查询日志文件中的头10行日志:
head -n 10 log.file
③查询日志中含有某个关键字的信息,显示出行号:
cat -n log.file |grep "error"
④日志试用more分页(分页查看,使用空格翻页):
cat -n log.file |grep "error" |more
⑤显示10行到50行:
cat log.file | tail -n +10 | head -n 50
⑥根据日期查询日志:
sed -n '/2021-12-17 16:17:20/,/2021-12-17 16:17:36/p' test.log
⑦根据日期查询结果生成文本文件导出
sed -n '/2021-12-17 16:17:20/,/2021-12-17 16:17:36/p' test.log > a.txt
⑧grep 查询日志
grep -r -n -H -B 5 -A 5 -m 2 --color=always ‘XXX’ a.log|grep -E'20240101-10:5[0-9]' ‘xxx’
-r是递归目录查询
-n是打印行数
-H是打印出文件信息
-B 5 是打印出目标日志前5行
-A 5 是打印出目标日志后5行
-m 2 是匹配次数到第二次结束
--color=always 高亮显示
-E 正则表达式
grep 'XX' | grep 'X' a.log 是 匹配结果既包含XX又包含X
grep ‘XX’ a.log | grep 'X' 是匹配结果交集
特别说明:上面的两个日期必须是日志中打印出来的日期,否则无效;
先 grep ‘2021-12-17 16:17:20’ test.log 来确定日志中是否有该 时间点
4.编辑文件时,没权限:
(r-w-x 分别代表可读,可写,可执行,7用2进制表示111,代表可读可写可执行,以此类推。)
chmod 755 xxx.yml
(7代表user,与文件所有者—即当前用户的权限;5代表group,与文件所有者同属一个用户组的其他用户的权限;最后的5代表others,其它用户组的权限)
chmod参数:
u: user,权限对象为当前用户(这里是所有者)
g:group,权限对象为所有者和组
o:other,权限对象为其他用户
r:read = 4,读权限
w:write = 2,写权限
e:execute = 1,执行权限
+:u/g/o与r/w/e组合使用,加入
-:删除
=:设置
4:仅读
5:仅读+执行
6:仅读+写
7:读+写+执行
5.解决解压windows包中文乱码:
①解压
unzip -O CP936 xxx.zip
②压缩
zip -r test.zip test
6.tar 解压和压缩
tar相关参数:
-c :建立一个压缩文件的参数指令(create 的意思)。
-x :表示提取,从文件包中提取文件。
-z :是否同时具有 gzip 的属性,是否需要用 gzip 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :在 f 之后要立即接文件名!不要再加参数!
参数理解了,直接上命令:
解压文件:
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/java/
压缩文件:
tar -zcvf test.tar.gz test
7.查看慢sql日志
cat /data/logs/log.file | grep -E "{executed in [0-9]{3,9}" -B 5
8.查看服务器空闲内存
①查询剩余空间(单位mb)
free -m
②查询剩余空间(单位g)
free -g
9.访问远程主机
ssh -p2755 root@192.168.1.12
10.本机文件<===>远程主机
①scp 文件名 用户名@计算机IP或者计算机名称:远程路径
scp /usr/data/xxx.jar root@192.168.1.12:/usr/local/src
②scp 用户名@主机ip: +目录文件 本地路径
scp root@192.168.1.12:/usr/local/src/*.log /root/
11.sftp传输文件
sftp -P 2755 root@192.168.1.12
①上传 本地文件 远程路径
put /home/temp/log.file /data/temp
②下载 远程文件 本地路径
get /home/temp/log.file /data/temp
12.vim下
r:替换
R:替换光标后的所有
u:撤回
yy:复制光标所在行的内容
ZZ:保存
更多推荐
所有评论(0)