当前位置: 首页 > news >正文

Linux命令

一、Linux远程控制

0、Linux开关机命令

# 常用
reboot # 重启
init 0 # 关机# 其他看看就好
shutdown -h now # 立即关机
shutdown -h +1 # 一分钟后关机
halt # 立即停止系统,需要人工关闭电源
poweroff # 立即停止系统,并且关闭电源
shutdown -r now # 立即重启
shutdown -r +1 # 一分钟后重启
init 6 # 重启
logout # 注销

1、开启ssh访问

yum -y install openssh-server # 如果centos系统没有ssh服务,请安装
apt -y install openssh-server # 如果ubuntu系统没有ssh服务,请安装
systemctl start sshd # 启动服务
systemctl enable sshd # 设置开机自启apt -y install net-tools # 或者 yum -y install net-tools
ifconfig # 查看网卡信息# 修改ssh配置文件,无则添加
sudo vi /etc/ssh/sshd_config
Port 22
PermitRootLogin yes    #(是否允许 root 登录)
PasswordAuthentication yes  #(是否允许密码登录)# 重启ssh服务
systemctl restart sshd

2、Linux的目录结构

root@ubuntu:/# tree -L 1
.
|-- efi # 启动相关的引导文件
|-- boot # 系统启动相关的文件,如内核、initrd,以及grub(bootloader(可用于破密码))
|-- dev # 设备文件:块设备(随机访问,数据块)、字符设备(线性访问,按字符为单位)、tty远	程设备、vd*硬盘
|-- etc # 配置文件(软件安装完这里会产生配置文件)
"用户目录"
|-- home # 用户的家目录
|-- root # 超级管理员的家目录
"库文件"
|-- `lib` -> usr/lib # 库文件:静态库(.a),动态库(.all .so),/lib/modules(内核模块)
|-- `lib64` -> usr/lib64 # 库文件
|-- var # 可变化文件:第三方lib库,缓存,临时文件,备份
"程序目录"
|-- `bin` -> usr/bin # 命令的可执行文件,用户命令
|-- `sbin` -> usr/sbin # 命令的可执行文件,管理命令(系统管理员使用的系统管理程序)
|-- usr # 系统资源目录,用户的很多应用程序和文件都放在这个目录
"跟系统运行有关系的"
|-- proc # 伪文件系统,内核映射文件(临时存放系统运行进程相关的文件),内容在内存里
|-- sys # 伪文件系统,跟硬件设备相关的属性映射文件
"不重要的文件夹"
|-- media # 挂载点目录,移动设备
|-- mnt # 挂载点目录,额外的临时文件系统
|-- opt # 可选目录,第三方程序的安装目录
|-- tmp # 临时文件
|-- lost+found # 系统非法关机后,这里就存放了一些文件
|-- run # 是一个临时文件系统,存储系统启动以来的信息。
|-- srv # 用来存储要提供给网络的文件的地方,tftp、ftp建议将要提供的文件存储在此

二、Linux命令入门

1、命令格式

# 无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式:
command [-options] [parameter]
# command: 命令本身
# -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
# parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等ls -l /home/readme.md , ls是命令本身, -l是选项, /home/readme.md是参数
cp -r test1 test2 , cp是命令本身, -r是选项, test1 test2是参数

2、ls命令(列出文件)

ls [ -a -l -h] [Linux路径]
ls -a # 表示:all的意思,即列出全部文件(包含隐藏的文件/文件夹)
ls -l # 表示:以列表(竖向排列)的形式展示内容,并展示更多信息
ls -a -l 或者 ls -al 或者 ls -la # 都表示两功能同时使用.config .cache
# 显示以.开头的,表示是Linux系统的隐藏文件/文件夹(只要以.开头,就能自动隐藏)

3、cd命令(切换路径)

# cd命令来自英文:Change Directory
cd [Linux路径] # 表示要切换到哪个目录下
cd            # 不写参数,表示回到用户的HOME目录

4、pwd命令(当前路径)

pwd # 打印当前工作目录(路径)

5、绝对路径、相对路径、特殊路径符

cd /desktop # 绝对路径,根目录为起点
cd desktop # 相对路径,当前目录为起点# 特殊路径符:
cd .  # 当前目录,比如: cd ./Desktop 和 cd Desktop效果一致
cd .. # 上一级目录,比如: cd .. 切换到上一级目录, cd ../.. 切换到上二级的目录
cd ~  # HOME目录,比如: cd ~ 切换到HOME目录, cd ~/Desktop 切换到HOME内的Desktop目录

6、mkdir命令(新建文件夹)

mkdir [-p] linux路径 # 创建文件夹
# 参数必填,表示Linux路径,即要创建的文件夹的路径
# -p 选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录mkdir 文件夹
mkdir -p ~/一级文件夹/二级文件夹/三级文件夹

7、touch命令(新建文件)

touch linux路径 # 创建文件touch /home/123.txt

8、cat、more命令(查看)

cat test.txt # 查看文件内容
more test.txt # 支持翻页,如果文件内容过多,按【空格】可以一页页的展示,【q】退出查看

9、cp命令(复制)

cp [-r] 参数1 参数2 # 复制文件or文件夹
# -r选项,可选,用于复制文件夹使用,表示递归
# 参数1,Linux路径,表示被复制的文件或文件夹
# 参数2,Linux路径,表示要复制去的地方cp 123.txt 456.txt
cp 123.txt /Desktop # 绝对路径
cp 123.txt Desktop # 相对路径
cp -r Desktop Desktop2

10、mv命令(移动)

mv 参数1 参数2 # 移动文件or文件夹
# 参数1,Linux路径,表示被移动的文件或文件夹
# 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在mv 123.txt Desktop
mv 123.txt 456.txt
mv Desktop /home

11、rm命令(删除)

rm [-r -f] 参数1 参数2 ......参数N # 删除文件or文件夹
# -r选项,可选,用于删除文件夹使用,表示递归
# -f表示force,强制删除(不会弹出提示确认信息)# 普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示# 所以一般普通用户用不到-f选项
# 参数1、参数2、......、参数N 表示要删除的文件或文件夹路径,按照空格隔开rm 123.txt
rm -f 123.txt # 强制删除文件
rm 123.txt 456.txt 789.txt
rm -r desktop # 删除文件夹
rm -rf desktop # 强制删除文件夹# rm 支持通配符
rm test* # 删除test开头的文件or文件夹
rm *test # 删除test结尾的文件or文件夹
rm *test* # 删除包含test的文件or文件夹

12、which命令(查找程序)

# Linux命令,其实它们的本体就是一个个的二进制可执行程序
which ls
# /usr/bin/ls
which mkdir
# /usr/bin/mkdir

13、find命令(查找文件)

# 以文件名搜索
find 起始路径 -name "被查找的文件名"find / -name "test" # 全局搜索
find / -name "*test*" # 支持通配符搜索# 以文件大小搜索
find 起始路径 -size +|-n[kMG]
# +、- 表示大于和小于
# n表示大小数字
# kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GBfind / -size +100M # 查找大于100M的文件

14、grep命令(过滤内容)

grep [-n] 关键字 文件路径 # 从文件中通过关键字过滤文件行。
# 选项-n,可选,表示在结果中显示匹配的行的行号。
# 参数:关键字[必填],表示过滤的关键字,带有空格或其它特殊符号,建议使用""将关键字包围起来
# 参数:文件路径[必填],表示要过滤内容的文件路径,可作为内容输入端口【管道符输入】root@ubuntu:~# cat test.txt 
this is a cat.
my name is amy.
the cat is so cute.root@ubuntu:~# grep "cat" test.txt 
this is a cat.
the cat is so cute.root@ubuntu:~# grep -n "cat" test.txt 
1:this is a cat.
3:the cat is so cute.

15、wc命令(统计行数)

wc [-c -m -l -w] 文件路径 # 统计文件的行数、单词数量等
# 选项,-c,统计bytes(字节)数量
# 选项,-m,统计字符数量
# 选项,-l,统计行数
# 选项,-w,统计单词数量(按空格划分)
# 参数,文件路径,被统计的文件,可作为内容输入端口【管道符输入】root@ubuntu:~# wc test.txt 3 13 51 test.txt # 行数 单词数 字节数 文件名root@ubuntu:~# wc -c test.txt 
51 test.txt
root@ubuntu:~# wc -m test.txt 
51 test.txt
root@ubuntu:~# wc -l test.txt 
3 test.txt
root@ubuntu:~# wc -w test.txt 
13 test.txt

16、| 管道符(结果输入)

管道符:| # 将管道符左边命令的结果,作为右边命令的输入root@ubuntu:~# grep "cat" test.txt 
this is a cat.
the cat is so cute.
root@ubuntu:~# cat test.txt | grep "cat"
this is a cat.
the cat is so cute.
root@ubuntu:~# cat test.txt | grep "cat" | grep "cute"  # 嵌套管道符
the cat is so cute.root@ubuntu:~# ls -l /usr/bin | grep "touch"
-rwxr-xr-x 1 root root 96776 Apr 5 2024 touchcat test.txt | grep "cat" | wc -l # 统计文件中带有cat关键字的行数
# 2

17、echo命令(打印)

echo hello
# hello
echo "hello linux"  # 建议使用""包裹,避免空格后识别为参数2
# hello linux# 反引号` ,反引号包裹的内容,会被作为命令执行
echo pwd
# pwd
echo `pwd`
# /root
echo $PATH
# /usr/local/sbin:/usr/local/bin...

18、>重定向符(结果写入)

# >,将左侧命令的结果,覆盖写入到符号右侧指定的文件中(文件不存在会自动创建)
# >>,将左侧命令的结果,追加写入到符号右侧指定的文件中(文件不存在会自动创建)
echo "Hello Linux" > test.txt # 覆盖
echo "Hello Amy" > test.txt # 覆盖
echo "Hello sister" >> test.txt # 追加root@ubuntu:~# cat test.txt 
Hello Amy
Hello sister

19、tail命令(跟踪文本)

tail [-f -num] linux路径 # 可以查看文件尾部内容,跟踪文件的最新更改
# 参数,Linux路径,被跟踪的文件路径
# 选项,-f,持续跟踪文件的最新更改
# 选项, -num,查看尾部多少行(不填默认10行)root@ubuntu:~# ls / >> test.txt
root@ubuntu:~# tail test.txt
[默认查看txt中最后10行内容]
root@ubuntu:~# tail -5 test.txt
[查看txt中最后5行内容]# 终端1
root@ubuntu:~# tail -f test.txt # [前台持续任务]
hello
cat is so cute # [检测出新增内容,并打印出来]
# 终端2
root@ubuntu:~# echo "cat is so cute" >> test.txt

20、vi、vim命令(编辑器)

vi 文件路径
vim 文件路径(vim兼容全部的vi功能,新增彩色显示)
# 命令模式(Command mode)命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。
i # 输入模式(Insert mode)也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。
: # 底线命令模式(Last line mode)以:开始,通常用于文件的保存、退出。

a. 命令模式

模式 命令 描述
命令模式 i 在当前光标位置进入输入模式
命令模式 a 在当前光标位置之后进入输入模式
命令模式 I 在当前行的开头,进入输入模式
命令模式 A 在当前行的结尾,进入输入模式
命令模式 o 在当前光标下一行进入输入模式
命令模式 O 在当前光标上一行进入输入模式
输入模式 esc 任何情况下输入 esc 都能回到命令模式
模式 操作 描述
命令模式 键盘上、键盘 k 向上移动光标
命令模式 键盘下、键盘 j 向下移动光标
命令模式 键盘左、键盘 h 向左移动光标
命令模式 键盘右、键盘 l 向后移动光标
命令模式 0 移动光标到当前行的开头
命令模式 $ 移动光标到当前行的结尾
命令模式 pageup(PgUp) 向上翻页
命令模式 pagedown(PgDn) 向下翻页
命令模式 / 进入搜索模式
命令模式 n 向下继续搜索
命令模式 N 向上继续搜索
模式 操作 描述
命令模式 dd 删除光标所在行的内容
命令模式 ndd n 是数字,表示删除当前光标向下 n 行
命令模式 yy 复制当前行
命令模式 nyy n 是数字,复制当前行和下面的 n 行
命令模式 p 粘贴复制的内容
命令模式 u 撤销修改
命令模式 ctrl + r 反向撤销修改
命令模式 gg 跳到首行
命令模式 G 跳到行尾
命令模式 dG 从当前行开始,向下全部删除
命令模式 dgg 从当前行开始,向上全部删除
命令模式 d$ 从当前光标开始,删除到本行的结尾
命令模式 d0 从当前光标开始,删除到本行的开头

b. 底线命令模式

模式 命令 描述
底线命令模式 :wq 保存并退出
底线命令模式 :q 仅退出
底线命令模式 :q! 强制退出
底线命令模式 :w 仅保存
底线命令模式 :set nu 显示行号
底线命令模式 :set paste 设置粘贴模式(防止插入模式粘贴格式错乱)

21、--help命令(帮助手册)

# 命令手册
程序 --help # 可以通过这个选项,查看命令的帮助。
ls --help# 命令详细手册,通过man(manual, 手册)命令查看
man 程序
man ls # 查看ls命令的详细手册
man cd # 查看cd命令的详细手册# 大多数手册都是全英文的,如果阅读吃力,可以通过重定向符:man ls > ls-man.txt,输出手册到文件,然后通过翻译软件翻译内容查看哦

三、Linux用户和权限

1、root用户

#普通用户的权限,一般在其HOME目录内是不受限的。
#一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。su [-] [用户名] # 切换登录用户
# [-] 符号,是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上
# [用户名],表示要切换的用户,省略默认切换到root
# 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + dsu - howard
su - root
# 使用普通用户,切换到其它用户需要输入密码,如切换到root用户
# 使用root用户切换到其它用户,无需密码,可以直接切换变量环境
- shell类型:站在用户登录的角度来说- 登录式shell- ssh- su - USER- 非登录式shell- GUI的方式打开一个CLI shell- su USER- 脚本,在系统上自动执行
sudo 其他命令 # 使用sudo命令,为普通用户的命令授权,临时以root身份执行
# 在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
# 但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
# 为普通用户配置sudo认证
su - root # 切换到root用户
visudo 或者 vi /etc/sudoers # 执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
howard ALL=(ALL)  NOPASSWD:ALL # 在文件的最后添加这一行
# "NOPASSWD:ALL" 表示使用sudo命令,无需输入密码
:wq # 保存

2、用户、用户组

a. 用户组

# 以下命令需root用户执行
# 创建用户组
groupadd 用户组名
# 删除用户组
groupdel 用户组名

b. 用户

# 创建用户
useradd [-g -d] 用户名
# [-g],指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
# [-d],指定用户HOME路径,不指定,HOME目录默认在:/home/用户名useradd howard
useradd howard -d /home/howard
useradd howard -d /home/howard -g group1
# 删除用户
userdel [-r] 用户名
# [-r],删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
# 查看用户所属组
id [用户名]
# [用户名],被查看的用户,如果不提供则查看自身root@ubuntu:~# id
uid=0(root) gid=0(root) groups=0(root)
root@ubuntu:~# id howard  
uid=1000(howard) gid=1000(howard) groups=1000(howard)
# 修改用户所属组
usermod -aG 用户组 用户名 # 将指定用户加入指定用户组root@ubuntu:~# usermod -aG root howard
root@ubuntu:~# id howard
uid=1000(howard) gid=1000(howard) groups=1000(howard),0(root)

c. 查看系统有多少用户

getent passwd # 使用getent命令,可以查看当前系统中有哪些用户root@ubuntu:~# getent passwd
root:x:0:0:root:/root:/bin/bash
...
howard:x:1000:1000::/home/howard:/bin/sh用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

3、查看权限控制信息

a. 文件、文件夹权限信息

root@ubuntu:/# ls -l
total 76
drwxr-xr-x    6 root    root      480 Sep 13 15:47 dev
drwxr-xr-x   87 root    root     4096 Sep 19 14:28 etc
drwxr-xr-x    2 root    root     4096 Apr 22  2024 home
...
1权限控制信息    2用户   3用户组# 序号1,表示文件、文件夹的权限控制信息
# 序号2,表示文件、文件夹所属用户
# 序号3,表示文件、文件夹所属用户组

b. 权限信息解读

drwxr-xr-x # 解释
d		rwx			r-x				r-x
1		2			3				4所属用户权限	所属用户组权限		其它用户权限1:[d]表示文件夹,[-]表示文件,[l]表示软链接
2:所属用户权限
3:所属用户组权限
4:其它用户权限

c. rwx含义

[r]:表示读权限
[w]:表示写权限
[x]:表示执行权限# 针对文件
[r]:可以查看文件内容
[w]:表示可以修改此文件
[x]:表示可以将文件作为程序执行# 针对文件夹
[r]:可以查看文件夹内容,如ls命令
[w]:可以在文件夹内:创建、删除、改名等操作
[x]:表示可以更改工作目录到此文件夹,即cd进入# 针对文件夹没有[w]权限,无法在文件夹内创建文件:
root@ubuntu:~# useradd user1
root@ubuntu:~# su user1
$ cd /
$ touch test.txt
touch: cannot touch 'test.txt': Permission denied

4、chmod命令(赋权777)

"注意,只有文件、文件夹的所属用户或root用户可以修改。"
chmod [-R] 权限 文件或文件夹
# [-R],对文件夹内的全部内容应用同样的操作(文件内全继承)# u:user:所属用户权限,g:group组权限,o:other其它用户权限
chmod u=rwx,g=rx,o=x hello.txt # 将文件权限修改为:rwxr-x--x
chmod -R u=rwx,g=rx,o=x test # 将文件夹test以及文件夹内全部内容权限设置为:rwxr-x--x# 二进制快捷表示
r	w	x	=>	rwx	r-x	--x
4	2	1	=>	 7	 5	 1chmod -R 751 test # [751]等价于:u=rwx,g=rx,o=x

5、chown命令(赋权UG)

"此命令只适用于root用户执行"
chown [-R] [用户][:][用户组] 文件或文件夹
# [-R],同chmod,对文件夹内全部内容应用相同规则(文件内全继承)chown root hello.txt # 将hello.txt所属[用户]修改为root
chown :root hello.txt # 将hello.txt所属[用户组]修改为root
chown root:howard hello.txt # 将hello.txt所属用户修改为root,用户组修改为howard
chown -R root test # 将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则

四、Linux实用操作

1、ssh 快捷键

  • 退出登录
root@ubuntu:~# exit
或者
"crtl + D"
  • 查看历史命令
root@ubuntu:~# history1  docker...235  chmod -R 777 folder/244  history
# 可以通过:!命令前缀,自动执行最近一次匹配前缀的命令
root@ubuntu:~# !c
chmod -R 777 folder/  # 匹配最近c开头的命令执行
# 可以通过快捷键:ctrl + r,输入内容去匹配历史命令
(reverse-i-search)`tou': touch 456.txt
root@ubuntu:~# touch 456.txt
"回车键可以直接执行"
"键盘左右键,可以得到此命令(不执行)"
  • 光标移动
ctrl + a,跳到命令开头 # 等价于[home]键
ctrl + e,跳到命令结尾 # 等价于[end]键
ctrl + 键盘左键,向左跳一个单词
ctrl + 键盘右键,向右跳一个单词

2、yum、apt 软件安装

  • Centos系统
Centos安装包格式:.rpmyum [-y] [install | remote | search] 软件名称
# [-y],自动确认,无需手动确认安装或卸载过程
install	安装
remove	卸载
search	搜索
"yum命令需要root权限哦,可以su切换到root,或使用sudo提权"
"yum命令需要联网"yum [-y] install wget # 二次执行,会自动更新软件
yum [-y] remove wget
yum search wget # 搜索“应用商店”有没有[wget]软件
  • Ubuntu系统
Ubuntu安装包格式:.debapt [-y] [install | remote | search] 软件名称
# [-y],自动确认,无需手动确认安装或卸载过程apt install wget,安装wget
apt remove wget,移除wget
apt search wget,搜索wget
  • 安装本地软件包
apt install rpm # 安装rpm
rpm -ivh test.rpm

3、systemctl 命令(启停服务)【需补充知识】

systemctl start  |  stop  |  status  |  enable  |  disable     服务名
#          启动      关闭    查看状态  开启开机自启 关闭开机自启# 系统内置的服务比较多,比如:
[NetworkManager],主网络服务
[network],副网络服务
[firewalld],防火墙服务
[sshd],ssh服务(FinalShell远程登录Linux使用的就是这个服务)# 除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。
"部分软件安装后没有自动集成到systemctl中,我们可以手动添加"
【需补充知识】如何集成到systemctl

4、ln 命令(软链接)

ln -s 参数1 参数2 # 即创建《快捷方式》
# [-s],创建软连接
# 参数1:被链接的文件或文件夹
# 参数2:要链接去的目的地root@ubuntu:~# ln -s /etc ~/etc
root@ubuntu:~# ls -l
-rw-r--r-- 1 root root    0 Sep 20 07:41 456.txt
drwxr-xr-x 2 root root 4096 Sep 20 07:03 desk
lrwxrwxrwx 1 root root    4 Sep 20 09:08 etc -> /etc
root@ubuntu:~# cd etc
root@ubuntu:~/etc# pwd
/root/etc
root@ubuntu:~# rm etc # 删除软链接(不影响被链接的内容)

5、date 命令(日期时间)

date [-d 参数] [+格式化字符串]
# [-d],按照给定的字符串显示日期,一般用于作日期计算
# [格式化字符串],通过特定的字符串标记,来控制显示的日期格式%Y   年
%y   年份后两位数字 (00..99)
%m   月份 (01..12)
%d   日 (01..31)
%H   小时 (00..23)
%M   分钟 (00..59)
%S   秒 (00..60)
%s   时间戳(自 1970-01-01 00:00:00 UTC 到现在的秒数)root@ubuntu:~# date
Sun Sep 21 04:55:57 UTC 2025
root@ubuntu:~# date "+%Y-%m-%d %H:%M:%S"
2025-09-21 04:57:06
root@ubuntu:~# date "+%Y-%m-%d"
2025-09-21
root@ubuntu:~# date "+%s"
1758446615
[-d 参数],参数支持的时间标记为:
-year年
-month月
-day天
-hour小时
-minute分钟
-second秒root@ubuntu:~# date -d "+1 day" +%Y%m%d
20250923
root@ubuntu:~# date -d "-1 day" +%Y%m%d
20250921
root@ubuntu:~# date -d "+1 month" +%Y%m%d
20251022
root@ubuntu:~# date -d "+1 year" +%Y%m%d
20260922

6、修改Linux时区

"使用root权限,执行如下命令",修改时区为东八区时区rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date "+%Y-%m-%d %H:%M:%S"
# 2025-09-22 09:19:40

7、ntp 程序(时间同步)

# 如果安装失败,先卸载系统自带的systemd-timesyncd时间同步软件
sudo apt -y remove systemd-timesyncd
# 安装ntp
apt -y install ntp
systemctl start ntpd
systemctl enable ntpd # systemctl enable ntpsec# 手动校准
ntpdate -u ntp.aliyun.com

8、IP地址、主机名

a. ifconfig(IP地址)

# 安装网络工具
apt -y install net-tools
# 查看网卡信息
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.123.12  netmask 255.255.255.0  broadcast 192.168.123.255inet6 fe80::be24:11ff:fe58:6d10  prefixlen 64  scopeid 0x20<link>ether bc:24:11:58:6d:10  txqueuelen 1000  (Ethernet)# 基础知识
127.0.0.1,这个IP地址用于指代本机0.0.0.0,特殊IP地址
- 可以用于指代本机
- 可以在端口绑定中用来确定绑定关系(后续讲解)
- 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问

b. hostname(主机名)

# 显示主机名,其实ssh终端[@ubuntu:~#]就显示了主机名
root@ubuntu:~# hostname 
ubuntu# 修改主机名(需root)
hostnamectl set-hostname 主机名root@ubuntu:~# hostnamectl set-hostname qweert123
"重新登录ssh后"
root@qweert123:~# 

c. 域名解析

# 本地dns解析本
-Windows看:C:\Windows\System32\drivers\etc\hosts
-Linux看:/etc/hostsroot@ubuntu:~# cat /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
# --- BEGIN PVE ---
192.168.123.12 ubuntu.lan ubuntu
# --- END PVE ---# 如果本地dns解析本没有,再去联网询问DNS服务器(如114.114.114.114,8.8.8.8等)

d. 虚拟机配置固定IP

# 略过VMware网关固定IP的步骤# 设置虚拟机系统的静态IPvim /etc/sysconfig/network-scripts/ifcfg-ens33 # centos系统DEVICE=eth0
ONBOOT=yes
UUID=951958d8-6856-4768-9862-db3eaa54fd34
BOOTPROTO="dhcp" # 修改为"static"
IPADDR=192.168.123.13 # 修改
NETMASK=255.255.255.0
GATEWAY=192.168.123.1
DNS1=192.168.123.1
DOMAIN=lansystemctl restart network # 修改完后,重启网卡

9、网络请求、下载

a. ping

ping [-c num] ip或主机名
# [-c 数字],检查的次数,不使用-c选项,将无限次数持续检查
# 参数:ip或主机名,被检查的服务器的ip地址或主机名地址
ping baidu.com
ping -c 3 192.168.123.1

b. wget(文件下载)

# wget是非交互式的文件下载器,可以在命令行内下载网络文件
wget [-b] url
# [-b],可选,后台下载,会将日志写入到当前工作目录的wget-log文件
# [url],下载链接wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz # 下载apache-hadoop 3.3.0版本

c. curl(http请求)

# curl可以发送http网络请求,可用于:下载文件、获取信息等
curl [-O] url
# [-O],用于下载文件,当url是下载链接时,可以使用此选项保存文件
# url,要发起请求的网络地址curl cip.cc # 获取主机公网ip
curl baidu.com # 访问网页
curl -O http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz # 下载文件(通过curl下载hadoop-3.3.0安装包)

10、端口

Linux系统,可以支持65535个端口,分为3类进行使用:
`公认端口`:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口。"非特殊需要,不要占用这个范围的端口"
`注册端口`:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务。
`动态端口`:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。

a. nmap 命令(端口占用)

apt -y install nmap # 安装nmap,使用nmap命令查看端口占用root@ubuntu:~# nmap 127.0.0.1
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-09-22 13:28 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000050s latency).
Not shown: 997 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
9000/tcp open  cslistenerNmap done: 1 IP address (1 host up) scanned in 0.07 seconds

b. netstat 命令(指定端口)

apt -y install net-tools # 需安装net-tools使用netstat -anp | grep 端口号 # 查看指定端口占用情况# 查看9000端口被谁占用了
root@ubuntu:~# netstat -anp | grep 9000
tcp 	0	0	0.0.0.0:9000	0.0.0.0:*	LISTEN	715/docker-proxy    
tcp6	0	0	:::9000     	:::*    	LISTEN	722/docker-proxyroot@ubuntu:~# netstat -anp | grep 12345
root@ubuntu:~# 
#证明12345端口无人使用

11、进程管理

a. ps -ef(查看进程)

ps [-e -f] # 查看进程
# [-e],显示出全部的进程
# [-f],以完全格式化的形式展示信息(展示全部信息)root@ubuntu:~# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 Sep21 ?        00:00:02 /sbin/init
root          44       1  0 Sep21 ?        00:00:00 /usr/lib/systemd/systemd-journald
systemd+     105       1  0 Sep21 ?        00:00:00 /usr/lib/systemd/systemd-networkd
systemd+     216       1  0 Sep21 ?        00:00:00 /usr/lib/systemd/systemd-resolved
root         232       1  0 Sep21 ?        00:00:00 /usr/sbin/cron -f -P
...-UID:进程所属的用户ID
-PID:进程的进程号ID
-PPID:进程的父ID(启动此进程的其它进程)
-C:此进程的CPU占用率(百分比)
-STIME:进程的启动时间
-TTY:启动此进程的终端序号,如显示?,表示非终端启动
-TIME:进程占用CPU的时间(不占用时不进行累计)
-CMD:进程对应的名称或启动路径或启动命令# 查看指定进程
ps -ef | grep 过滤内容

b. kill(关闭进程)

kill [-9] 进程ID # 关闭进程
# [-9],表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。# ssh终端1,创建一个空进程
root@ubuntu:~# tail
Terminated
root@ubuntu:~# tail
Killed
# ssh终端2
root@ubuntu:~# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root        8001    7957  0 15:02 pts/4    00:00:00 tail
root        8017    7957  0 15:04 pts/4    00:00:00 tail # 重建的tail进程
root@ubuntu:~# kill 8001
root@ubuntu:~# kill -9 8017

12、主机状态监控

a. top 命令(任务进程)

top # 系统资源监控
# 按q键,或者crtl+c退出监控,默认每5秒刷新一次root@ubuntu:~# top
top - 15:17:15 up 1 day,  2:23,  1 user,  load average: 0.07, 0.06, 0.07
Tasks:  30 total,   1 running,  29 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.4 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st 
MiB Mem :   8192.0 total,   7322.1 free,    135.0 used,    735.1 buff/cache     
MiB Swap:   8192.0 total,   8192.0 free,      0.0 used.   8057.0 avail Mem PID USER   PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND       
258 root   20   0 1874772  48884  33920 S   0.3   0.6   0:51.66 containerd1 root   20   0   22088  12928   9216 S   0.0   0.2   0:02.41 systemd
...# 第一行
`top`:命令名称,`14:39:58`:当前系统时间,`up 6 min`:启动了6分钟,`2 users`:2个用户登录,`load`:1、5、15分钟负载
# 第二行
`Tasks`:175个进程,1 `running`:1个进程子在运行,174 `sleeping`:174个进程睡眠,0个停止进程,0个僵尸进程
# 第三行
`%Cpu(s)`:CPU使用率,`us`:用户CPU使用率,`sy`:系统CPU使用率,`ni`:高优先级进程占用CPU时间百分比,`id`:空闲CPU率,`wa`:IO等待CPU占用率,`hi`:CPU硬件中断率,`si`:CPU软件中断率,`st`:强制等待占用CPU率
# 第4、5行
`Kib Mem`:物理内存,`total`:总量,`free`:空闲,`used`:使用,`buff/cache`:buff和cache占用
`KibSwap`:虚拟内存(交换空间),`total`:总量,`free`:空闲,`used`:使用,`buff/cache`:buff和cache占用-PID:进程id
-USER:进程所属用户
-PR:进程优先级,越小越高
-NI:负值表示高优先级,正表示低优先级
-VIRT:进程使用虚拟内存,单位KB
-RES:进程使用物理内存,单位KB
-SHR:进程使用共享内存,单位KB
-S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
-%CPU:进程占用CPU率
-%MEM:进程占用内存率
-TIME+:进程使用CPU时间总计,单位10毫秒
-COMMAND:进程的命令或名称或程序文件路径
# top命令选项
-p 只显示某个进程的信息
-d 设置刷新时间,默认是 5s
-c 显示产生进程的完整命令,默认是进程名
-n 指定刷新次数,比如 top -n 3,刷新输出 3 次后退出
-b 以非交互非全屏模式运行,以批次的方式执行 top,一般配合 -n 指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp
-i 不显示任何闲置(idle)或无用(zombie)的进程
-u 查找特定用户启动的进程
# top交互式选项
"按键"	`功能`
"h 键",会显示帮助画面
"c 键",会显示产生进程的完整命令,等同于 -c 参数,再次按下 c 键,变为默认显示
"f 键",可以选择需要展示的项目
"M 键",根据驻留内存大小(RES)排序
"P 键",根据 CPU 使用百分比大小进行排序
"T 键",根据时间 / 累计时间进行排序
"E 键",切换顶部内存显示单位
"e 键",切换进程内存显示单位
"l 键",切换显示平均负载和启动时间信息
"i 键",不显示闲置或无用的进程,等同于 -i 参数,再次按下,变为默认显示
"t 键",切换显示 CPU 状态信息
"m 键",切换显示内存信息

b. df 命令(磁盘使用率)

df [-h] # 磁盘监控
# [-h],以更加人性化的单位显示[root@centos network-scripts]# df -h
`Filesystem`                    `Size` `Used` `Avail` `Use%` `Mounted on`
/dev/mapper/pve-vm--103--disk--0   49G  592M     46G     2%    /
none                              492K  4.0K    488K     1%    /dev
udev                              7.8G     0    7.8G     0%    /dev/tty
tmpfs                             7.8G     0    7.8G     0%    /dev/shm
tmpfs                             3.2G  8.1M    3.1G     1%    /run

c. iostat 命令(磁盘读写)

yum install sysstat # 安装软件iostat [-x] [num1 num2] # 可以使用iostat查看CPU、磁盘的相关信息
# -x,显示更多信息
# num1:数字,刷新间隔
# num2:数字,刷新几次"rrqm/s":每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge,提高IO利用率, 避免重复调用);
"wrqm/s":每秒这个设备相关的写入请求有多少被Merge了。
"rsec/s":每秒读取的扇区数;sectors
"wsec/":每秒写入的扇区数。
"rKB/s":`每秒发送到设备的读取请求数`
"wKB/s":`每秒发送到设备的写入请求数`
"avgrq-sz":平均请求扇区的大小
"avgqu-sz":平均请求队列的长度。毫无疑问,队列长度越短越好。    
"await":每一个IO请求的处理的平均时间(单位是微秒毫秒)。
"svctm":表示平均每次设备I/O操作的服务时间(以毫秒为单位)
"%util":`磁盘利用率`

d. sar 命令(网络状态)

sar -n DEV [num1 num2] # 可以使用sar命令查看网络的相关统计
"(sar命令非常复杂,这里仅简单用于统计网络)"
# [-n],查看网络,DEV表示查看网络接口
# [num1]:刷新间隔(不填就查看一次结束)
# [num2]:查看次数(不填无限次数)"IFACE" 本地网卡接口的名称
"rxpck/s" 每秒钟接受的数据包
"txpck/s" 每秒钟发送的数据包
"rxKB/S" `每秒钟接受的数据包大小,单位为KB`
"txKB/S" `每秒钟发送的数据包大小,单位为KB`
"rxcmp/s" 每秒钟接受的压缩数据包
"txcmp/s" 每秒钟发送的压缩包
"rxmcst/s" 每秒钟接收的多播数据包

13、环境变量

a. env(查看环境变量)

env # 查看系统记录的环境变量(可理解为系统的全局变量)root@ubuntu:~# env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin# PATH记录了系统执行任何命令的搜索路径
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
# 当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体

b. $符号(获取变量值)

echo $PATH
# /usr/local/sbin...
echo $PWD
# /root
echo "${PWD} 123456"
# /root 123456

c. export(设置变量)

(1) 临时变量(登出失效)
export MYNAME=amy # 设置临时变量(退出ssh终端失效)
echo $MYNAME
# amy
(2) 永久变量(当前用户)
针对当前用户生效,配置在当前用户的:~/.bashrc文件中echo "export MYNAME1=amy1" >> ~/.bashrc # 把变量写入到用户配置文件
source ~/.bashrc # 重载配置文件
echo $MYNAME1
# amy1
source 配置文件 # 重载配置文件,立刻生效,或重新登录FinalShell生效
(3) 永久变量(所有用户)
针对所有用户生效,配置在系统的:/etc/profile文件中echo "export MYNAME2=amy2" >> /etc/profile
source /etc/profile
# 系统中的环境变量相关文件有5种
- /etc/profile
- /etc/profile.d/*.sh
- etc/bashrc- ~/.bash_profile
- ~/.bashrc
(4) 自定义环境变量PATH
mkdir ~/myenv # 自定义一个环境变量文件夹
touch ~/myenv/my_program # 在文件夹内,创建一个小程序
echo "echo hello_world" > ~/myenv/my_program # 给小程序编写一些执行编程
chmod 755 ~/myenv/my_program # 给程序赋予执行权限# 将自定义环境变量目录追加到PATH,通过变量追加,不要写死
echo 'export PATH=$PATH:/root/myenv' >> /etc/profile # 用单引号,$PATH不会被展开
echo "export PATH=\$PATH:/root/myenv" >> /etc/profile # 对$进行转义
echo "export PATH=$PATH:/root/myenv" >> /etc/profile # 这是错误写法,$PATH已经展开source /etc/profile # 重载系统配置文件-------------------------------------
`验证环境变量是否写入到/etc/profile`
root@ubuntu:~# vi /etc/profile
...
export PATH=$PATH:/root/myenv`验证一下环境变量PATH是否已经更改`
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/myenv`成功在任何路径下,直接执行~/myenv环境变量中的程序`
root@ubuntu:~# cd
root@ubuntu:~# my_program 
hello_world

14、Linux文件的上传、下载

apt -y install lrzsz # 安装软件
"注意,rz、sz命令需要终端软件支持才可正常运行"
"FinalShell、SecureCRT、XShell等常用终端软件均支持此操作"rz      # 进行文件上传
sz 文件 # 进行文件下载# 已经不推荐使用,太慢了,还不如用其他ftp传输方式

15、压缩与解压

"zip格式":`Linux、Windows、MacOS,常用`
"7zip":Windows系统常用
"rar":Windows系统常用
"tar":`Linux、MacOS常用`
"gzip":`Linux、MacOS常用`

a. tar 命令

tar [-z -c -v -x -f -C] 参数1 参数2 ... 参数N
# 压缩选项
-c,创建压缩文件,用于压缩模式
-z,gzip模式,不使用-z就是普通的tarball格式("一般处于选项位第一个")
# 解压选项
-x,解压模式
-C,选择解压的目的地,用于解压模式
# 重要选项
-v,显示压缩、解压过程,用于查看进度
-f,要创建的压缩文件,或要解压的文件("[-f],必须在所有选项中位置处于最后一个")# .tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装。
# .gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积。tar -cvf test.tar 1.txt 2.txt 3.txt # tarball模式,压缩(不推荐)
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt # gzip模式,压缩tar -xvf test.tar # 解压到当前目录
tar -xvf test.tar -C /home/howard # 解压到指定目录
tar -zxvf test.tar.gz -C /home/howard # 以Gzip模式解压(-z可以省略,程序自动识别)

b. zip 命令

zip [-r] 参数1 参数2 ... 参数N
# [-r],被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致zip test.zip 1.txt 2.txt 3.txt # 只压缩文件
zip -r test.zip test howard 1.txt # 压缩包含文件和文件夹
unzip 参数 [-d 参数]
# [-d],指定要解压去的位置,同tar的-C选项
# [参数],被解压的zip压缩包文件unzip test.zip # 解压到当前目录
unzip test.zip -d /home/howard # 解压到指定文件夹
"注意解压时,目录如果有同名文件或文件夹,会自动覆盖"

16、scp 命令(服务器间传输)

scp [-r] 参数1 参数2
- -r选项用于复制文件夹使用,如果复制文件夹,必须使用-r
- 参数1:本机路径 或 远程目标路径
- 参数2:远程目标路径 或 本机路径如:
scp -r /export/server/jdk root@node2:/export/server/
将本机上的jdk文件夹, 以root的身份复制到node2的/export/server/内
同SSH登陆一样,账户名可以省略(使用本机当前的同名账户登陆)如:
scp -r node2:/export/server/jdk /export/server/
将远程node2的jdk文件夹,复制到本机的/export/server/内# scp命令的高级用法
cd /export/server
scp -r jdk node2:`pwd`/    # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下
scp -r jdk node2:$PWD      # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下
http://www.hskmm.com/?act=detail&tid=14789

相关文章:

  • 树上莫队
  • 比余额宝收益高的低风险短期理财工具-银行同业存单
  • 陇剑杯2025 决赛-ShellDecoder
  • Springcloud gateway笔记
  • AT_arc122_e [ARC122E] Increasing LCMs
  • C++ 锁
  • 飞书对程序员下手了,0 代码生成各类系统!!(附保姆级项目实战教程)
  • Adaptix C2:跨平台渗透测试与对抗仿真框架
  • 国标GB28181软件EasyGBS网页直播平台在邮政快递场景的落地与应用
  • sql统计一个字段各个值各有多个个的方法
  • WBS、甘特图、关键路径……项目计划的五大核心概念一文全懂
  • 智启新程:哲讯科技引领SAP ERP实施新范式
  • 移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现
  • 哲讯科技:以数智之力,铸就企业SAP ERP实施新典范
  • PR曲线绘制
  • 5台电脑怎么同步文件最安全高效?别再只知道用局域网共享了!
  • 关于CompatibilityHID例程的使用
  • SystemVerilog 代码风格指南
  • 赋能智慧化工:无锡哲讯科技SAP解决方案,构筑安全、合规与高效的数字新底座
  • 芯之所向,智造未来:无锡哲讯科技赋能芯片行业的高效管理与数字革新
  • UART、I2C、SPI:三种常见通信协议的区别
  • Day05---数据类型的转换
  • 个人项目——论文查重
  • 效率党的图片处理新选择:滴答修——在线全能工具箱,免费且强大
  • GPU0与GPU1
  • 对接全球股票市场K线数据实战
  • 9.23
  • centos安装docker和Jenkins
  • 硬件检测神器 HWiNFO:全组件监控 + 多系统兼容,免费无广告,运维 / 评测必备
  • Qt - 音频采集程序