常用的Linux命令
工作中常用 Linux 命令总结
不求装逼,只求不翻车
系统操作
关机重启
# 重新启动
reboot
# 马上关机(断电关机)
shutdown -h now
# 立刻关机(centos) (不断电关机)
halt
查看系统信息
1. 查看系统版本
# 查看系统的版本
cat /proc/version
cat /etc/*release
# 查看版本号
cat /etc/issue
2. 查看系统 CPU 信息
# 查看 CPU 信息
lscpu
3. 查看服务器运行内存
# 查看服务器运行内存大小
free -h
4. 查看服务器硬盘大小
# 查看服务器硬盘大小
df -h
5. 查看系统时间
# 查看服务器器系统时间
date
# 查看服务器硬件时钟的操作
hwclock --show
# 系统时间同步为硬件时间
hwclock --systohc
# 将系统时间同步为网络时间
ntpdate 192.168.0.1
ntpdate time.ntp.org
# 设置时区
timedatectl set-timezone Asia/Shanghai
6. 查看主机名称
# 查看 hostname
hostname
# 查看 hostname 详细信息
hostnamectl
# 修改hostname
vim /etc/hostname
# 重启生效
shutdown -r now
权限操作
1. 创建用户
# 创建名称为 'kyle' 用户
useradd kyle
# 设置 'kyle' 用户的密码
passwd kyle
# 删除 'kyle' 用户
userdel -r kyle
2. 权限说明
# r
对文件是指可读取内容 对目录是可以 ls
# w
对文件是指可修改文件内容,对目录是指可以在其中创建或删除子节点(目录或文件)
# x
对文件是指是否可以运行这个文件,对目录是指是否可以 cd 进入这个目录
3. 文件/文件夹权限变更
# 将 'a.txt' 的文件权限变更为 666
# 即属主可以读写、属组中的用户可以读写、其它用户可以读写
chmod 666 a.txt
# 赋予属主对 'a.txt' 文件的可执行权限,其它权限不变
chmod u+x a.txt
u 代表用户
g 代表用户组
o 代表其他
a 代表所有
# 赋予属主对 'a.txt' 文件的权限为 7 ,属组的权限为 6,其它用户为 1
chmod u=rwx,g=rw,o=x a.txt
3. 文件/文件夹属性变更
# 将文件 'a.txt' 的属主和属组变更为 clickhouse
chown -R clickhouse:clickhouse a.txt
文件操作命令
文件操作(增、删、移动、复制)
1. 创建一个文件
# 在 opt 目录下创建一个名称为 a.txt 的文件
touch /opt/a.txt
2. 创建文件夹
# 创建一个文件夹,如果目录不存在,会创建多级目录
mkdir -p /home/abc/temp
# 创建一个文件夹,如果父目录 '/home/abc' 不存在,会报错
mkdir /home/abc/temp
3. 创建文件并增加内容
# 第一种:在 opt 目录下创建一个名称为 a.txt 的文件,并且文件的内容为 1
echo 1 > /opt/a.txt
# 第二种:在 opt 目录下创建一个名称为 a.txt 的文件,wq 后才能保存文件
vim /opt/a.txt
4. 文件复制
注意:如果目标文件夹存在名称相同的文件,会提示是否覆盖,如果覆盖 输入 yes + 回车
,不覆盖直接回车
# 第一种:将 '/home/a.txt' 文件复制到 '/opt/kafka/' 目录下,复制后在目标目录下文件名不变
cp /home/a.txt /opt/kafka/
# 第二种:将 '/home/a.txt' 文件复制到 '/opt/kafka/' 目录下,复制后的文件名称更改为 'b.txt'
cp /home/a.txt /opt/kafka/b.txt
5. 文件移动
# 第一种:将 '/home/a.txt' 文件移动到 '/opt/kafka/' 目录下,移动后在目标目录下文件名不变
# 注意:移动后 'a.txt' 文件在 '/home' 目录中就不存在了
mv /home/a.txt /opt/kafka/
# 第二种:移动并把文件名改为 'b.txt'
mv /home/a.txt /opt/kafka/b.txt
文件属性操作
1. 查看文件属性
# 查看文件 a.txt 的文件属性
lsattr a.txt
2. 编辑文件属性
# 给文件添加 i 属性
chattr +i a.txt
# 去除文件的 i 属性
chattr -i a.txt
查看文件大小
1. 查看文件夹大小
# 只显示某个文件夹的总大小
# 查看 'server' 文件夹的总大小
du -sh /opt/server/
2. 查看文件的大小
# 查看文件夹下的所有文件的大小(递归显示所有)
du /opt/server -h
# 设置展示的深度,只展示第一层,防止展示的太多
du -d 1 /opt/server -h
# 显示当前目录下所有文件的大小(只显示一层)
du -sh *
文件查找
1. 按照文件名查找
# 查找 '/opt/server' 目录下以文件名 'kafka' 开头的文件
find /opt/server -name 'kafka*'
2. 按照文件名查找
# 查找 '/opt/server' 目录下文件大小大于 100M 的文件
find /opt/server -type f -size +100M
3. 在指定文件中查找关键词
# 在 'pom.xml' 文件中查找 'flink' 关键字
grep flink pom.xml
# 在 'pom.xml' 文件中查找 'flink' 关键字,高亮显示
grep flink pom.xml --color
# 在 'pom.xml' 文件中查找 'flink' 关键字,并将搜索结果导入到 temp.log 中
grep flink pom.xml > temp.log
4. 查找可执行文件的位置
# 查看 python 命令的执行文件在哪
which python
# 查看 java 命令的执行文件在哪
which java
5. 高性能文件查找
# 安装命令
yum install mlocate
# 更新数据库
updatedb
# 在根目录下查找所有的以“startUp”开头的文件
locate /startUp
# 搜索etc目录下,所有以m开头的文件
locate /etc/m
# 只列举前n个搜索结果
locate -n 3 /etc/m
文件内容浏览
1. 文件内容翻页查看
此命令装逼且实用,用了之后不想用其他的,利器!!!
# 翻页查看 '/opt/app.log' 文件中的内容,默认从头开始翻页
less /opt/app.log
# 下一页
空格
# 上一页
b
# 从文件末尾开始翻页
# 多次按,可以看到文件更新后的内容
shift + g
# 从当前页的位置向下搜索包含 'error' 关键字的内容,一般在文件头开始,向下搜索
# n:跳转到下个结果页 N:跳转到上一个结果页
/error
# 从当前页的位置向上搜索包含 'error' 关键字的内容,一般在文件末尾开始,向上搜索
# n:跳转到下个结果页 N:跳转到上一个结果页
?error
2. 实时浏览文件更新内容
注意:多用于启动日志的查看,会不断的显示文件末尾指定行数的内容
# 查看 'opt/app.log' 末尾 10 行的内容
# -f 循环读取
# -n 指定行数
tail -f -n 10 /opt/app.log
文件内容编辑
1. 编辑模式切换
# 编辑 '/opt/server.config' 的内容
vim /opt/server.config
# 按一下 'i' 进入编辑模式
i
# 编辑完成后按一下 'ESC' 退出编辑模式
ESC
# 按一下 ':' 进行后续操作
:
# 强制退出,编辑不生效
q!
# 保存并退出,编辑生效
wq
# 如果是只读模式,不让编辑内容,则强制保存退出
wq!
2. 命令常用命令
命令 | 功能 |
---|---|
o | 在当前行后面插入一空行 |
O | 在当前行前面插入一空行 |
dd | 删除光标所在行 |
ndd | 从光标位置向下连续删除 n 行 |
yy | 复制光标所在行 |
nyy | 从光标位置向下连续复制n行 |
p | 粘贴 |
u | 撤销上一次命令 |
gg | 回到文件顶部 |
G | 回到文件末尾 |
/str | 查找str |
2. 底行模式常用命令
命令 | 功能 |
---|---|
:w 文件 | 另存为 |
:w | 保存(ctrl + s) |
:q | 退出, 如果没有保存,不允许退出 |
:q! | 强行退出, 不保存退出 |
:wq | 保存并退出 |
:x | 保存并退出 |
:set nu | 设置行号 |
:%s/旧文本/新文本/g | 文本替换 |
文件内容对比
1. 简单对比文件内容差异
# 对比当前文件下的 'a.txt' 和 'words.txt' 的区别
diff ./a.txt ./words.txt
文件列表查看
1. 简单查看
# 列出文件列表,每页展示3条
ll | more -5
head 只看头几行
tail 只看尾巴几行
# 文件翻页
ll | less
2. 显示文件树
# 查看当前目录的树状图
tree ./
# 只展示一层
tree -L 1 /opt/server
压缩和解压
解压 (多种格式)
1. .zip
格式压缩包
# 把当前文件夹中的 'flink.zip' 解压到 '/opt/server/' 目录下
unzip flink.zip -d /opt/server/
2. .tar.gz
格式压缩包
注意:.tar.gz
为 tar
打包,gzip
程序压缩的文件
# 将当前文件夹中的 'sqoop.tar.gz' 解压到 '/opt/server/' 目录下
tar -zxvf sqoop.tar.gz -C /opt/server/
打包压缩 (多种格式)
1. 打包为 .zip
格式包
# 将 '/opt/server/logs' 文件夹打包为 log.zip
zip -q -r log.zip /opt/server/logs
2. 打包为 .tar
格式包
# 将 '/opt/server/logs' 文件夹打包为 log.tar,打包到当前的文件夹
tar -cvf log.tar /opt/server/logs
# 注意:此时解压时使用如下命令
# 使用 -zxvf 会报错 gzip: stdin: not in gzip format,意为:非 gzip 压缩文件
tar -xvf log.tar
3. 打包为 .tar
格式包,并使用 gzip
压缩
# 将 '/opt/server/logs' 文件夹打包为 log.tar.gz,并使用 gzip 压缩,打包到当前的文件夹
tar -zcvf log.tar.gz /opt/server/logs
# 注意:此时解压是使用如下命令
tar -zxvf log.tar.gz
进程端口
进程操作
1. 根据应用名称查看进程
# 查看包含 'zookeeper' 关键字应用的进程信息
# 两种都行
ps -ef | grep zookeeper
ps aux | grep zookeeper
2. 查看 java
的进程
# 查看所有的 Java 进程,显示的详细
jps -l
# 查看所有的 Java 进程,显示的不详细
jps
# 查看包含 'zookeeper' 关键字应用的进程信息,并显示详细参数
# m:输出main method的参数
# -l:输出完全的包名,应用主类名,jar的完全路径名
# -v:输出jvm参数
# -V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
jps -mlvV | grep zookeeper
3. 根据端口号查看进程
# 查看端口号为 2181 的进程
netstat -an | grep 2181
4. 根据进程号查看对应的应用目录
# 查看 27544 对应的应用目录
pwdx 27544
5. 杀进程
# 杀死进程
kill -9 4394
# 杀掉多个进程
kill -9 25718 25719 25811 25812
常用启停脚本
1. Windows: start.bat
@echo on
start java -jar example.jar --server.port=8080
pause
2. Windows: stop.bat
@echo off
taskkill -f -t -im javaw.exe
exit
3. Linux: start.sh
# 第一种:指定配置文件和堆内存
#!/bin/sh
java -Xms512M -Xmx2048M -XX:+HeapDumpOnOutOfMemoryError -DAsyncLogger.RingBufferSize=262144 -DAsyncLoggerConfig.RingBufferSize=262144 -Dlog4j2.AsyncQueueFullPolicy=Discard -jar xxx.jar jfile=config/application.properties
# 第二种:指定端口
#!/bin/sh
java -jar hsrcm-rcce-ui-tools-1.0.0-SNAPSHOT.jar --server.port=8083
4. Linux: stop.sh
#!/bin/sh
PID=`ps axu | grep java | grep xxx |grep -v grep| awk '{printf $2}'`
for i in $PID
do
kill -9 $i
done
网络及服务
网络相关
1. 查看 IP 地址
# 查看本机 IP 地址
ifconfig
2. 防火墙操作
# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl disable firewalld
# 禁用防火墙
systemctl stop firewalld
# 启动防火墙
yum 操作
1. 查看 yum 相关信息
# 查看已经安装的应用
yum list installed
# 查看本地配置的 yum 源
yum repolist
# 更新 yum 命令
sudo yum update
2. yum 操作
# 通过 yum 安装 libtool 应用
yum install -y libtool
# 移除已经安装的 libtool 应用
yum remove libtool
3. 常用的 yum 应用
# 树状显示文件夹
yum install tree
# np 工具
yum install -y nc
nc -lk 9000
# SecureCRT 中可以使用 rz 和 sz 进行文件上传下载
yum install lrzsz -y
网络传输
1. 下载网络文件
# 下载指定文件到当前文件夹
wget http://test.com/testfile.zip
# 指定文件下载后的保存名字
wget -O wordpress.zip http://test.com/download
# 限制下载速度为300k
wget --limit-rate=300k http://www.linuxde.net/testfile.zip
# 断点续传
wget -c http://www.linuxde.net/testfile.zip
# 后台下载
wget -b http://www.linuxde.net/testfile.zip
2. 服务器文件互传
# 从指定的服务器中拉取指定的文件(远程到本地)
# 将 '192.168.0.0' 服务器中的 '/usr/lib/a.txt' 文件拉取到 '/opt/server' 目录下
scp -r root@192.168.0.0:/usr/lib/a.txt /opt/server/
# 将本地文件发送到远程服务器(本地到远程)
# 将当前的 'b.txt' 文件发送到 '101.132.183.132' 的 '/usr/lib/' 目录下
# 会提示输入密码
scp -r /opt/server/b.txt root@101.132.183.132:/usr/lib/
高级命令
重定向命令
1. 重定向 >
(覆盖)
Linux 允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中
注意:文件不存在则创建,文件存在则覆盖写入
# 将 'ls -a' 命令的执行结果保存到 'dir.txt' 中
ls -a /opt > dir.txt
2. 重定向 >>
(追加)
注意:文件不存在则创建,文件存在则追加写入
# 将 'ls -a' 命令的执行结果保存到 'dir.txt' 中
ls -a /opt >> dir.txt
文件提取命令
1. 命令说明
cut
命令可以从一个文本文件或者文本流中提取文本列
2. 命令参数
参数 | 解释 |
---|---|
-b | 按字节选取忽略多字节字符边界 |
-c | 仅显示行中指定范围的字符 |
-d | 自定义分隔符,默认为制表符 |
-f | 与 -d 一起使用,指定显示哪个区域 |
-n | 与'-b'选项连用,不分割多字节字符 |
–complement | 补足被选择的字节、字符或字段 |
--out-delimiter=<字段分隔符> | 指定输出内容是的字段分割符 |
–help | 显示指令的帮助信息 |
–version | 显示指令的版本信息 |
3. 读取文件中指定的列
# student.scv 文件内容如下
01 Jackson 1990-01-01 男
02 Harry 1990-12-21 男
03 Ben 1990-05-20 男
04 Jack 1990-08-06 男
05 Rose 1991-12-01 女
06 Lisa 1992-03-01 女
07 Lucy 1989-07-01 女
08 Jim 1990-01-20 女
# 读取单列
# 读取 student.csv 文件,列的分隔符为空格,获取第 1 列
cut -d " " -f 1 student.csv
# 读取多列
# 读取 student.csv 文件,列的分隔符为空格,获取第 1 列
cut -d " " -f 1,2 student.csv
# 读取除提取指定字段之外的列
cut -d " " -f 1 --complement student.csv
4. 读取文件中指定的字符列
# 读取 1-5 个字符
cut -c 1-5 student.csv
# 读取前 4 个字符
cut -c -4 student.csv
# 读取第 4 到末尾的字符
cut -c 4- student.csv
文件统计命令
1. 命令说明
wc 命令主要用来统计行数、单词数、字节数
注意:在默认的情况下,wc 将计算指定文件的行数、字数以及字节数
2. 常用参数
参数 | 解释 |
---|---|
-l | 统计行数 |
-c | 统计字节数 |
-w | 统计单词数 |
-m | 统计字符数 |
3. 使用示例
# 统计 student.csv 文件的行数、单词数、字节数
wc student.csv