瞎琢磨先生の常用的 linux 命令

用户头像
瞎琢磨先生
关注
发布于: 2020 年 05 月 05 日

linux常用三大指令:grep、sed、awk

grep:过滤内容

sed:替换

awk:截取

linux 常用命令

根据端口查找对应的 PID

lsof -i:端口

             

说明该服务已经启动,对应的 PID 是 209647

若查询结果为

             

则说明,该端口对应的服务未启动

由 PID 查询对应服务的路径

pwdx PID端口

eg. pwdx 209647

             

可以看出,服务所在路径为

/ICC/dahua/fire/FireAppServer

 

进阶:

  • 端口 --> 服务对应的路径

eg.根据服务端口 60080 查询对应的服务所在的路径

pwdx `lsof -i:60080 | sed -n '2p' | cut -d ' ' -f5`| awk -F": " '{print $2}'

     

其中:

  sed -n '2p':展示第二行

cut -d ' ' -f5`:使用"空格"进行数据的截取,并取第5个值

awk -F": " '{print $2}':使用"冒号"进行分割,并取第二个

pwdx `lsof -i:60080 | sed -n '2p' | cut -d ' ' -f5`| awk -F": " '{print $2} `:` ...   `是将第一次的查询结果作为 pwdx 查询的基础。

 

端口 --> PID + 服务对应的路径(★★)

路径(分行展示)

pwdx `lsof -i:60080 | sed -n '2p' | cut -d ' ' -f5` | sed 's/: /&\n/g' | sed 's/://g'



端口 --> pid + 服务对应的路径(★☆)

pwdx `lsof -i:60080 | sed -n '2p' | cut -d ' ' -f5`



根据端口杀死服务

eg. 根据端口 8080 杀死对应的服务

kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')

返回上一次访问目录

cd  -

查看系统中文件使用情况

df  -h

查看各个文件占用空间大小(当前目录下)

du -sh *

查找文件

find  /home  -name  "*.txt"   # 查找在 "/home" 路径下,名字为 ".txt" 后缀的文件

find  /     -name  "abc.*"   # 查找在"/"路径下,名字为 "abc" 开头的文件

清空日志

echo '' >  ./logs/catalina.out   #强制将 catalina.out 日志置为零

追加日志

echo '追加日志' >>  ./logs/catalina.out   #强制将 catalina.out 日志置为零

语句执行错误输出日志到文件

eg. sh -x upgrade.sh >> run.log 2>&1

测试 ip 是否畅通

telnet  ip地址

动态显示文件内容(查看日志必备)

tail -f 文件名

eg. tail  -f  catalina.out

打 .gz 包

tar -zcvf 要打包成的文件夹名.tar.gz  a.txt bDir c.jgp

解压缩 .tar 包

tar -zxvf tomcat.tar.gz



启动 springboot 服务命令

nohup java -jar AppServer.jar & tail -f nohup.out

启动 springboot 远程 debug 调试模式

java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=50584 AppServer.jar &

 

普通项目启动(传统 java 项目,非 SpringBoot 项目)

# 进入 bin 目录,执行该命令

./startup.sh

 

普通项目远程 debug

① bin目录下找到并打开 catalina.sh,查找 "JPDA_ADDRESS="(方法:":/JPDA_ADDRESS",然后按 "N",向下查找,找到)

if [ -z "$JPDA_ADDRESS" ]; then

   JPDA_ADDRESS="localhost:8000"

 fi

② 把 "8000",修改成一个未被占用的端口,并保存

③ 杀死原来的服务

④ 使用命令重启服务(注意:不是使用 .start.sh 启动服务)

sh  catalina.sh   jpda    start

⑤ 在 IDEA 的 Run/Debug Configurations 中填入相应的信息 -- ip 和端口(④中修改的端口)。

 

SSH 服务器跳转

SSH 相关

从本服务器跳转到另外一台服务器

# ssh ip 地址

ssh ip 地址(不需要加端口)

# 在回车后的提示中输出跳转后的服务器的密码,即可正常访问使用

 

从当前服务器复制文件到B服务器

在服当前服务器执行以下命令

scp -r 欲上传的文件名  root@远端服务器ip地址:远端服务器保存文件的路径

eg. scp  –r  ./hehe  root@10.66.77.88:/home/haha/

 

复制当前服务器文件到远端服务器(免密码输入)

# 远端服务器的 ip
remoteIp=
# 远端服务器的端口
remotePort=
# 远端服务器的密码
remotePwd=
# 远端服务器保存文件的路径
remoteDirPath=
# 本服务器需要复制的文件路径
copyFilePath=

# 安装 sshpass 命令
yum -y install sshpass
#sshpass -p 远端服务器密码 scp -o StrictHostKeyChecking=no -P 远端服务器端口 -r 本地要拷贝的路径 root@远端服务器IP:远端服务器要保存的路径
sshpass -p ${remotePwd} scp -o StrictHostKeyChecking=no -P ${remotePort} -r ${copyFilePath} root@${remoteIp}:${remoteDirPath}




从远端服务器复制文件到当前服务器(免密码输入)

#sshpass -p 远端服务器密码 scp -o StrictHostKeyChecking=no -P 当前服务器的端口 -r 远端服务器的用户名@远端服务器IP:远端服务器要拷贝的文件路径 当前服务器要保存的路径
sshpass -p ${remotePwd} scp -o StrictHostKeyChecking=no -P ${localPort} -r ${remoteUser}@${remoteIp}:${remoteDirPath}/* ${localDirPath}/




小结:

#sshpass -p 远端服务器密码 scp -o StrictHostKeyChecking=no -P 远端服务器端口 -r 本地要拷贝的路径  root@远端服务器IP:远端服务器要保存的路径



#sshpass -p 远端服务器密码 scp -o StrictHostKeyChecking=no -P 当前服务器的端口 -r 远端服务器的用户名@远端服务器IP:远端服务器要拷贝的文件路径 当前服务器要保存的路径


 Vim 模式

跳到指定行

[行数]gg 或者 [行数]G

5gg # 跳转到第 5 行
5G # 跳转到第 5 行

gg # 不输入行数,跳到文档行首
G # 不输入行数,跳到文档末尾
  • 删除某行

[行数]dd

5dd # 删除从光标往下的5行
dd # 不写行数,删除光标当前所在行

D # 删除当前行光标之后的内容
Ctrl + U #删除当前行光标之前的内容(编辑模式)

撤销

u # 撤销
  • 重做

Ctrl + r # 重做
  • 保存并退出

ZZ # 按住 Shift ZZ,快速保存(或者使用 :wq)
  • 不保存退出编辑

ZQ # 不保存退出编辑(或者使用 :q!)
  • 显示行号

:set nu # 显示行号 #用法: 输入":set nu"

向后搜索

/    # 向后搜索 # 举例: 输入":/redis"

  • 向前搜索

?    # 向前搜索  # 举例: 输入":?redis"

查找下一处

n    # 查找下一处

  • 查找上一处

N    # 查找上一处

复制

yy 复制光标所在的那一行

nyy 复制光标所在的向下n行

粘贴(后)

p    粘贴(后)

  • 粘贴(前)

P    粘贴(前)

删除到行末

D  # 删除至行末(从光标位置开始)

删除到行首

Ctrl U  # 删除至行末(从光标位置开始)(编辑模式)

 

  • 全局替换

# 文件内替换

:%s/原字符串/替换后的字符串/g # 替换每一个字符串
eg. :%/old/new/g

# 文件外替换
sed -i "s#原字符串#替换后的字符串#g" 文件名
eg. sed -i "s#old#new#g" abc.txt



替换

:s 命令替换字符串(当前行)

 

:s/p1/p2/   替换当前行第一个p1为p2

:s/p1/p2/g  替换当前行所有的p1为p2

 

:n1,n2s 命令替换字符串(指定行)

 

:n1,n2s/p1/p2/g  将第n1至n2行中所有p1均用p2替代。其中n1和n2为行号,可以为.代表当前行,可以为$代表最后一行

 

:.,$s/p1/p2/g 用字符串p2替换当前行到末尾所有出现的字符p1

:1,$s/p1/p2/g 用字符串p2替换所有出现的字符p1

 

:%s命令替换字符串(全文)

 

:%s/p1/p2/(等同于:g/p1/s//p2/) 替换每一行的第一个p1为p2

:%s/p1/p2/g(等同于:g/p1/s//p2/g) 替换每一行中所有p1为p2

 

2.g选项的总结

 

g放在命令末尾,表示对搜索字符串的每次出现进行替换;不加g,表示只对搜索字符串的首次出现进行替换。

g放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

 

  • 其它不常用功能

|     光标所在行行首

L    屏幕所显示的底行

{    段首

}    段尾

-    前一行行首

+    后一行行首

(    句首

)    下一句首

$    行末

M    屏幕中间行

0    行首(零)

hjkl    左下上右

x    删除光标所在字符

R    替换模式(可以替换任意字符)

r    单个替换

 

s    删除字符并插入(单个字符删除,并进入插入模式)

S    删除行并插入(整行删除)

>>     缩进(相当于一个tab)

<<     反缩进

=    自动格式化

J    合并上下两行

I    插入到行首

i     插入

C    从光标处开始修改至行位

a    在光标后附件或追加

A    在行末追加


 


 

Shell相关

调用方法 functionA_  并传递参数

 

# 先定义一个方法
function funcationA_()
{
echo "这是一个函数"
# 调用方法时传递的第一个参数,即 33
var1=$1
# 调用方法时传递的第二个参数,即 444
var2=$2
echo "$var1" ## 33
echo "$var2" ## 444
}




# 调用方法,并传递参数
functionA_ 33 444

 

[注意事项]

shell中必须先定义,再调用方法。否则将会报错。

 

登录mysql数据库,并执行操作

# 定义变量,用来保存数据库名
DB_name=IFCSDB_NEW
SQL_Password=123456

mysql -u root -p$SQL_Password --connect-expired-password <<EOF
use $DB_name;
source ${SQLFilePath}/abc.sql;
exit
EOF # 这行必须从行首开始

[注意事项]

SQL文件中必须不能包括"#"开头的注释行,否则使用 shell 脚本调用(或使用 Navicat 执行 SQL 文件)的时候会出现 MySQL 语句报错。解决办法是将所有的"#"开头的注释改成"--"形式的注释。



从server.xml中获取服务端口

  • 两步骤走的方法:

# ① 获取得到: "50163"

# IFCS_Port=`cat ${Old_IFCS_Path}/conf/server.xml |grep -E "protocol=\"HTTP/1.1\"| "protocol="HTTP/1.1"|  awk '{print $2}'|awk 'NR==1{print}' |cut -d"=" -f2`

# ② 将"双引号",去掉,得到 50163

# IFCS_Port=`echo ${IFCS_Port} | sed  's/\"//g'`

  • 二合一的方法:

IFCS_Port=`cat tomcat/conf/server.xml |grep -E "protocol=\"HTTP/1.1\"| "protocol="HTTP/1.1"|  awk '{print $2}'|awk 'NR==1{print}' | cut -d "=" -f2 | cut -d "\"" -f2`

 

启动服务,设置内存大小

nohup java -server -Xms512m -Xmx1G -Xss512k -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:ParallelGCThreads=4 -jar ${Server_Jar_Name}.jar >/dev/null 2>&1 &

 


 


 

Mysql 相关



  • 启动

systemctl start mysqld or service mysql start

  • 关闭

systemctl stop mysqld or service mysql stop

  • 重启

systemctl restart mysqld or service mysql restart

  • 登录

  • 密码明文

 语法:mysql -u用户名 -p'用户密码'

 举例:

mysql -uroot -p'123456'

  • 密码密文

 语法:mysql -u用户名 -p+回车,然后输入密码

 举例:

mysql -uroot -p

123456

 





 

redis 相关

  • 启动(默认端口:6379)

./redis-server redis.conf

  • 修改密码(设置密码为:123456)

requirepass 123456

 


 


kafka

 

  • 启动 kafka

bin/zookeeper-server-start.sh config/zookeeper.properties

 





 

Linux 常用快捷键

 

1. Tab

 

这是你不能没有的 Linux 快捷键。它将节省你 Linux 命令行中的大量时间。

只需要输入一个命令,文件名,目录名甚至是命令选项的开头,并敲击 tab 键。它将自动完成你输入的内容,或为你显示全部可能的结果。

如果你只记一个快捷键,这将是必选的一个。

 

2. Ctrl + C

 

这些是为了在终端上中断命令或进程该按的键。它将立刻终止运行的程序。

如果你想要停止使用一个正在后台运行的程序,只需按下这对组合键。

 

3. Ctrl + Z

 

该快捷键将正在运行的程序送到后台。通常,你可以在使用 & 选项运行程序前之完成该操作, 但是如果你忘记使用选项运行程序,就使用这对组合键。

 

4. Ctrl + D

 

这对键盘快捷键将使你退出当前终端。如果你使用 SSH 连接,它将会关闭。如果你直接使用一个终端,该应用将会立刻关闭。

把它当成“退出”命令。

 

5. Ctrl + L

 

你怎么清空你的终端屏幕?我猜是用 clear 命令。

你可以使用 Ctrl+L 清空终端,代替输入 C-L-E-A-R。得心应手,不是吗?

 

6. Ctrl + A

 

该快捷键将移动光标到所在行首。

假设你在终端输入了一个很长的命令或路径,并且你想要回到它的开头, 使用方向键移动光标将花费大量时间。注意你无法使用鼠标移动光标到行首。

这是 Ctrl+A 节省时间的地方。

 

7. Ctrl + E

 

这对快捷键与 Ctrl+A 相反。Ctrl+A 送光标到行首,反之 Ctrl+E 移动光标到行尾。

 

8. Ctrl + U

 

输入了错误的命令?代替用退格键来丢弃当前命令,使用 Linux 终端中的 Ctrl+U 快捷键。该快捷键会擦除从当前光标位置到行首的全部内容。

 

9. Ctrl + K

 

这对和 Ctrl+U 快捷键有点像。唯一的不同在于不是行首,它擦除的是从当前光标位置到行尾的全部内容。

 

10. Ctrl + W

 

你刚才了解了擦除到行首和行尾的文本。但如果你只需要删除一个单词呢?使用 Ctrl+W 快捷键。

使用 Ctrl+W 快捷键,你可以擦除光标位置前的单词。如果光标在一个单词本身上,它将擦除从光标位置到词首的全部字母。

最好的方法是用它移动光标到要删除单词后的一个空格上, 然后使用 Ctrl+W 键盘快捷键。

 

11. Ctrl + Y

 

这将粘贴使用 Ctrl+W,Ctrl+U 和 Ctrl+K 快捷键擦除的文本。如果你删除了错误的文本或需要在某处使用已擦除的文本,这将派上用场。

 

12. Ctrl + P

 

你可以使用该快捷键来查看上一个命令。你可以反复按该键来返回到历史命令。在很多终端里,使用 PgUp 键来实现相同的功能。

 

13. Ctrl + N

 

你可以结合 Ctrl+P 使用该快捷键。Ctrl+N 显示下一个命令。如果使用 Ctrl+P 查看上一条命令,你可以使用 Ctrl+N 来回导航。许多终端都把此快捷键映射到 PgDn 键。

 

14. Ctrl + R

 

你可以使用该快捷键来搜索历史命令。



发布于: 2020 年 05 月 05 日 阅读数: 34
用户头像

瞎琢磨先生

关注

还未添加个人签名 2019.02.22 加入

还未添加个人简介

评论

发布
暂无评论
瞎琢磨先生の常用的 linux 命令