简单记录一下工作中,经常使用的命令:

无论是面试还是工作,掌握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 $PWDps -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:保存

Logo

更多推荐