Linux进阶命令

Linux常用高级命令

1 top 查看内存
2 df -h 查看磁盘存储情况(并以人性化方式显示)
3 iotop 查看磁盘IO读写(yum install iotop安装)
4 iotop -o 直接查看比较高的磁盘读写程序
5 netstat -anp(-tunlp) | grep 端口号 查看端口占用情况
6 uptime 查看报告系统运行时长及平均负载
7 ps -aux 查看进程
8 echo 重定向,用于追加内容或者覆盖内容,输出内容到控制台
9 free 查看内存使用情况
10 ln (-s) 创建硬(软)链接

记得链式学习

装虚拟机时一定要记住的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 编辑虚拟机的网络
vim /etc/sysconfig/network-scripts/ifcfg-ens33

# 修改
BOOTPROTO="none" # 看这里, 必须是none或者static, 不能是dhcp
IPADDR="192.168.88.161"
PREFIX="24" # 255.255.255.0 8+8+8
GATEWAY="192.168.88.2"
DNS1="8.8.8.8"
DOMAIN="114.114.114.114"

# 改完后记得按下 esc, 进入到命令模式, 然后输入 :wq保存退出, 重启虚拟机.
systemctl restart network # 如果不想重启虚拟机, 就通过该命令重启网络服务.

对文件夹的操作:

  • 查看文件夹,创建文件夹,删除文件夹,进入文件夹,复制文件夹,移动文件夹,给文件夹改名,解压,压缩文件夹
  • 授权(chmod),宿主(chown),echo命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 查看文件夹
ls -a # 表示表示显示当前目录的文件夹和文件以及隐藏文件
ls ~ -al # 通过列表方式显示当前用户家目录中的所有文件,并以人性化的方式显示
ls -l # 通过列表显示当前目录下的文件和文件夹,其中文件夹以d开头,文件以-开头
ls -al # 以列表的形式查看文件夹和文件以及隐藏文件
ll -h # 以人性化的方式显示当前文件和目录

#创建文件夹
midir 路径/文件夹 #命令、创建文件夹
mkdir aaa/bbb/ccc -p # 创建嵌套文件夹可以加p

#删除文件夹
rm -rf 文件夹(路径)名称

#进入文件夹
cd ./test #去当前目录的test文件夹

#复制文件夹
cp -r ./aaa ./桌面 # 复制文件夹必须加-r

#移动文件夹
mv /a ./b # 将当前路径下的a文件夹移动到当前路径下的b文件夹,不需要加-r

#给文件夹改名
mv /a /b/c #将/a目录移动到/b下,并重命名为c

#压缩文件夹
tar -cvf aaa.tar a.txt b.txt c.txt # 将a,b,c.txt压缩为一个tar压缩包,其中c是压缩,v是显示,f是后面跟文件
tar -xvf aaa.tar # 将aaa.tar解压缩,其中x是解压缩,v是视图显示,f后面跟要解压的文件

#解压为文件夹
tar -zcvf aaa.tar.gz a.txt b.txt c.txt # 指定z格式进行压缩,压缩包格式为tar.gz
tar -zxvf aaa.tar.gz -C ./test # 通过—C指定解压缩的路径

#授权
chmod u+x,g-w a.txt # 给用户增加可执行权限(u = user),给用户组删去写权限
chmod g+x a.txt # 给用户组增加可执行权限(g = group)
chmod o+x a.txt # 给游客增加可执行权限(o = other)
chmod u=rw,g=rw,o=r # 一次性给不同用户赋予不同的权限,中间加,
r = 4; w = 2; x = 1; 0 = 啥都没有 # 数字法
chmod 777 a.txt # rwxrwxrwx
chmod 664 # rw rw r
chmod 0 a.txt # 将所有用户权限取消
chmod 1 a.txt # 先给o(其他人)增加权限
chmod 777 -R ./aaa #递归将文件夹下的所有文件都赋予777的权限

#宿主(将文件夹宿主给别人)
chown root /var/run/httpd.pid # 把 /var/run/httpd.pid 的所有者设置 root

对文件的操作:

  • 创建文件,打开文件,查看文件内容,删除文件,计数,查找文件,文件里面查找字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#打开文件
vim a.txt # 打开文本文件,i插入,:进入底行模式,q退出,wq保存退出,!q强制退出

#创建文件
touch a.txt # 创建文件并更新修改时间

#查看文件内容
cat #查看小型文件命令
cat ./a.txt # 查看a.txt文件的内容
cat ./a.txt -n # 查看a.txt文件的内容,并显示行号

more # 查看比较大的文件的命令
less # less命令功能:less命令的用法与more命令类似,也可以用来浏览超过一页的文件。所不同的是less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件。当要结束浏览时,只要在less命令的提示符":"下按Q键即可。

head -n 数字(代表行数) 文件路径 # 不写的话, 默认是: 10行
more ./a.txt -n #查看文件内容,并显示行号,查看文件时 按 b 返回 按 空格space 下一页 按 回车 下一行 按q退出

tail -3f a.txt # 显示文件末尾三行,加-f动态刷新(用echo追加内容会被显示),常用来查看日志

#删除文件
rm a.txt # 删除(需要按y确认删除)
rm -f a.txt # 强制删除

# 计数(wc命令)
wc -l 1.txt # 统计文件内容的行数
wc -w 1.txt # 统计文件内容的单词数
wc -m 1.txt # 统计文件内容的字符数,无论是英文字符,数字字符,空格,符号都算
wc -c 1.txt # 统计字节数

# 查找文件
find ~ -name "abc*" #查找整个家目录下的该文件 ,-name 按文件名查找文件
find 路径 -size +100M # 查找整个根目录下的文件大小大于100MB的文件,按ctrl+c停止显示

# 文件里面查找字符串
grep # 文件内容检索命令
grep xxx ./a.txt -n # 在当前目录下的a.txt文件中检索xxx内容,并且显示xxx所在文件的行号
ps -aux | grep mysql # 将进程列表输出到管道中,在管道右边写命令,grep查找mysql这个关键字并显示

# 管道(|)用于临时存储数据,还可以把前面的执行结果当做后边的数据集合
cat a.txt | wc -l # 查看a.txt文件的内容,并统计文本中的行数

系统命令:

  • 开关机,开启服务(service,systemctl),查看内存信息,查看CPU信息,查看网络端口,管道,软链接,查看当前二进制文件的位置(which),pwd,切换用户,添加删除用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 开关机
halt # 立刻关机
reboot # 重启
shutdown -h now # 立刻关机(root用户使用)

# 开启服务(service,systemctl)

# 查看内存信息
free # 该命令可以显示系统的内存使用情况,包括总内存、已用内存、剩余内存以及缓存和缓冲区使用情况。

top # 该命令可以动态显示系统的内存使用情况,包括内存使用率、内存使用情况

df # 该命令指的是检查文件系统的磁盘空间占用情况。

lscpu # 查看CPU信息

# 查看网络端口
netstat -nltp | grep (端口号) # netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况
lsof # 可查看端口占用情况
lsof -i:(端口号)

# 软链接
ln -s target source # ln -s:表示创建一个软连接;target:表示目标文件(夹),即源文件。source:表示当前目录的软连接名,即被创建出来的软连接名称以及放置在何处。

# 查看当前二进制文件(命令)的位置
which passwd # 查找命令所在路径。

# pwd 显示当前路径

# su 切换用户
su root # 切换到root用户

# 添加删除用户
useradd laowang -m # 添加用户laowang,并且在home文件夹中创建laowang文件
passwd laowang # 对老王进行密码的设置,如果设置简单了有可能会设置不成功
userdel laowang -r # 对老王进行删除 -r 把home文件夹给删掉
cat /etc/passwd # 看用户有没有删除成功就看这个文件中是否还存在该用户名,如果有表明没有删除成功

权限管理命令

对用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
useradd -g itcast itheima  # 创建用户并指定该用户的组为itcast
useradd itheima # 添加用户itheima,没有指定组,这里会创建一个和用户名相同的组,并将用户放到该组中
usermod -aG 组名 itheima # 修改用户itheima到指定的组中

passwd itheima # 设置用户的密码,如果提示密码过于简单再次输入就ok

cat /etc/passwd # 查看当前所有的用户
getent passwd # 查看当前所有的用户

userdel -r itheima # 删除用户,并将用户的家目录干掉

id itheima # 查看用户及其所属的用户组

chown [-R] [用户名][:][组名] 文件或者目录路径
chown -R itheima:itcast aa # 设置文件夹aa(及其子集)其属组是itcast,所属用户是itheima
chown -R :itcast # 设置文件夹aa其属组是itcast
chown -R itheima # 设置文件夹aa其属主是itcast

对组

1
2
3
4
5
6
7
8
9
10
11
12
13
# 添加用户组
groupadd itcast # 这里没有指定组号,系统会自动赋值最大组号+1
groupadd -g 1024 itcast # 创建组itcast,指定组号为1024

# 查看所有用户组
getent group
cat /etc/grop # 跟对用户操作对比,cat /etc/passwd

# 删除用户组
groupdel 组名 # userdel -r 用户名 # 这里删除用户要加-r

# 修改文件,文件夹的属组
chgrp -R 组名 文件(夹)路径 # -R是递归,recursion

时间相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
date  # 获取当前时间

date +'%Y/%m/%d %H:%M:%S' # 获取当前时间,并制定格式

date -d '1 days' +'%Y/%m/%d' # 获取当前时间并制定1天的偏移量(往后推迟1天)
date -d '-1 days' +'%Y/%m/%d' # 获取当前时间并制定1天的偏移量(往前推迟1天)
date -d '1 days ago' +'%Y/%m/%d' # 获取当前时间并制定1天的偏移量(往前推迟1天)

date -s '2023-01-01 13:14:21' # 手动设置时间

date -u ntp.aliyun.com # 手动校验当前系统的时间(连外网)

# 上一种方式可以开启ntpd服务,自动校验时间
yum -y install ntp # 下载ntp包,并且所有需要点y/n的地方全部统一y
systemctl start ntpd # 开启ntpd服务
systemctl enable ntpd # 设置ntpd开机自启
systemctl status ntpd # 查看ntpd的状态

软硬链接

  • 硬链接的目的是: 相当于备份, 为了提高容错, 且硬链接的文件, 内容会实时同步.
  • 软连接的目的是: 给文件(文件夹)创建一个快速的访问路径,依赖于原文件
1
2
ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ip  # 创建软链接ip,其依赖于文件ifcfg-ens33(相当于指针)
ln /etc/sysconfig/network-scripts/ifcfg-ens33 ip # 创建硬链接ip,备份且实时同步,防止重要文件被误删

详解echo命令

1
2
3
4
5
6
7
8
# 作用1: 用于输出内容到控制台的, 类似于Python的 print()
echo `pwd`
echo 'hello' # 输出hello
echo 123 # 在控制台输出123

# 作用2:用于追加 或者 覆盖内容到 文件中. >表示覆盖写入, >>表示追加写入
echo 'nihao' >> a.txt # 追加内容到a.txt
echo 'nihao' > a.txt # 将a.txt中的所有内容替换成‘nihao’

详解systemctl命令

  • 作用:用于开启或者关闭某些服务的
1
2
3
4
5
6
7
8
9
10
11
# 常见的操作(start,stop,status,enabledisable,restart)--3个s,2个e,1个r
systemctl status network # 查看副网卡的网络状态
systemctl restart network # 重启网络服务
systemctl stop firewalld # 关闭防火墙

# IP地址变成了127.0.0.1解决方法
# 产生原因: 主网络服务(NetworkManager开启了)
# 解决方案: 禁用主网络服务, 关闭主网络服务的开机自启, 重启副网络服务
systemctel stop NetworkManager # 禁用主网络服务
systemctl disable NetworkManager # 关闭主网络服务的开机自启
systemctel restart network # 重启副网络服务

详解Vim编辑器

基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
vim /etc/sysconfig/network-scripts/ifcfg-ens33  # 编辑文件

# 进入命令模式
gg # 回到行首
G # 回到行尾
dd # 删除一行
ndd # 删除n行,n为数字,如3nn,删除3行
yy # 向下复制一行
nyy # 向下复制n行
p # 粘贴
u # 撤销
ctrl + r # 反撤销

# 输入i,o,O进入输入模式
i # 在当前行插入
o # 向下一行插入
O # 向上一行插入

# 不想编辑了,按ESC,再按:进入底线模式
:q # 不保存退出
:q! # 不保存强制退出
:wq # 保存退出
:wq! # 保存并强制退出
shift+z+z # 等价于:wq
set nu # 设置显示行号
set nonu # 设置不显示行号
:%s/旧文本/新文本 # 将旧文本替换成新文本
:行号 # 跳转到n行 如:100 跳转到100行
:nohl # 取消高亮显示

Linux软件安装的方式

  • 方式1: 上传解压, 修改配置文件即可.

    上传安装包到Linux中, 解压后, 修改下配置文件即可.

    例如: JDK, Zookeeper, Hadoop, Hive等都是这种方式.

  • 方式2: rpm方式

    RedHat Packet Manager, 小红帽的包管理器, 专门维护Linux的各种包的.

    弊端: 需要我们手动解决依赖问题.

    例如: MySQL的安装.

  • 方式3: yum方式

    全称叫: Yellow dog Updater, Modified, 可以理解为就是基于RPM方式做的升级,

    帮我们自动解决依赖的问题.

    1
    2
    # 格式
    yum -y [install | remove | search] 要安装的包名 # -y的意思是: 不询问, 直接同意,search看看有没有,没有再装,remove卸载,install直接装

Linux使用Tricks(小技巧)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 如下是Linux中的快捷方式.
ctrl + c # 终止某些命令的执行.
ctrl + d # 登出
ctrl + L # 清屏

clear # 清屏
ctrl + r # 查找历史命令
history # 查看历史命令
!前缀名 # 根据前缀, 去匹配最近的一个能匹配到的命令
ctrl + a # 行首, 等价于 home键
ctrl + e # 行尾, 等价于 end键
ctrl + ← # 向左移动1个单词
ctrl + → # 向右移动1个单词