文章目录
Linux终端命令格式
终端命令格式
command [-options] [parameter]
- 1
说明:
- command :命令名,相应功能的英文单词或单词的缩写
- [-options] :选项,可用来对命令进行控制,也可以省略
- parameter :传给命令的参数,可以是 零个、一个 或者 多个
查阅命令帮助信息
-help
说明:
- 显示 command 命令的帮助信息
-man
说明:
- 查阅 command 命令的使用手册
man 是 manual 的缩写,是 Linux 提供的一个 手册,包含了绝大部分的命令、函数的详细使用 - 说明
使用 man 时的操作键
常用Linux命令的基本实用
学习Linux终端命令的原因
- Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等
- 在职场中,大量的 服务器维护工作 都是在 远程 通过 SSH 客户端 来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成
- 在职场中,作为后端程序员,必须要或多或少的掌握一些 Linux 常用的终端命令
- Linux 发行版本的命令大概有 200 多个,但是常用的命令只有 10 多个而已
常用Linux命令的基本使用
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ls | list | 查看当前文件夹下的内容 |
02 | pwd | print work directory | 查看当前所在文件夹 |
03 | cd[目录名] | changge directory | 切换文件夹 |
04 | touch[文件名] | touch | 如果文件不存在,新建文件 |
05 | mkdir[目录名] | make directory | 创建目录 |
06 | rm[文件名] | remove | 删除指定文件 |
07 | clear | clear | 清屏 |
小技巧:
ctrl + shift + =
放大终端窗口的字体显示ctrl + -
缩小终端窗口的字体显示
自动补全
在敲出 文件
/ 目录
/ 命令
的前几个字母之后,按下 tab 键
- 如果输入的没有歧义,系统会自动补全
- 如果还存在其他
文件
/目录
/命令
,再按一下 tab 键,系统会提示可能存在的命令
小技巧 - 按
上
/下
光标键可以在曾经使用过的命令之间来回切换 - 如果想要退出选择,并且不想执行当前选中的命令,可以按
ctrl + c
其它命令
查找文件
find 命令功能非常强大,通常用来在 特定的目录下 搜索 符合条件的文件
序号 | 命令 | 作用 |
---|---|---|
01 | find [路径] -name “*.py” | 查找指定路径下扩展名是 .py 的文件,包括子目录 |
- 如果省略路径,表示在当前文件夹下查找
- 之前学习的通配符,在使用 find 命令时同时可用
演练目标
- 1.搜索桌面目录下,文件名包含 1 的文件
find -name "*1*"
- 1
- 2.搜索桌面目录下,所有以 .txt 为扩展名的文件
find -name "*.txt"
- 1
- 3.搜索桌面目录下,以数字 1 开头的文件
find -name "1*"
- 1
软链接
序 号 | 命令 | 作用 |
---|---|---|
01 | ln -s 被链接的源文件 链接文件 | 建立文件的软链接,用通俗的方式讲类似于 Windows 下的快捷方式 |
注意:
- 没有
-s
选项建立的是一个 硬链接文件两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接 - 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用
演练目标
- 将桌面目录下的 01.py 移动到 demo/b/c 目录下
- 在桌面目录下新建 01.py 的 软链接 FirstPython分别使用 相对路径 和 绝对路径 建立 FirstPython 的软链接
- 将 FirstPython 移动到 demo 目录下,对比使用 相对路径 和 绝对路径 的区别
硬链接简介(知道)
在使用 ln 创建链接时,如果没有 -s 选项,会创建一个 硬链接,而不是软链接
硬链接演练
- 在
~/Desktop/demo
目录下建立~/Desktop/demo/b/c/01.py
的硬链接01_hard
- 使用 ls -l 查看文件的硬链接数(硬链接——有多少种方式可以访问文件或者目录)
- 删除
~/Desktop/demo/b/c/01.py
,并且使用 tree 来确认 demo 目录下的三个链接文件文件软硬链接的示意图
文件软硬链接示意图
在 Linux 中,文件名 和 文件的数据 是分开存储的
- 提示:
在 Linux 中,只有文件的硬链接数
== 0 才会被删除
使用ls -l
可以查看一个文件的硬链接的数量
在日常工作中,几乎不会建立文件的硬链接,知道即可
打包压缩
- 打包压缩 是日常工作中备份文件的一种方式
- 在不同操作系统中,常用的打包压缩方式是不同的选项 含义
Windows 常用 rar
Mac 常用 zip
Linux 常用 tar.gz
打包 / 解包
tar
是 Linux 中最常用的 备份工具,此命令可以 把一系列文件 打包到 一个大文件中,也可以把一个 打包的大文件恢复成一系列文件tar
的命令格式如下:
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径...
# 解包文件
tar -xvf 打包文件.tar
- 1
- 2
- 3
- 4
tar选项说明:
选项 | 含义 |
---|---|
c | 生成档案文件,创建打包文件 |
x | 解开档案文件 |
v | 列出归档解档的详细过程,显示进度 |
f | 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后 |
注意: f 选项必须放在最后,其他选项顺序可以随意
压缩/解压缩
1)gzip
- tar 与 gzip 命令结合可以使用实现文件 打包和压缩
tar 只负责打包文件,但不压缩
用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz
在 Linux 中,最常见的压缩文件格式就是 xxx.tar.gz
- 在 tar 命令中有一个选项 -z 可以调用 gzip ,从而可以方便的实现压缩和解压缩的
- 功能命令格式如下:
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
- 1
- 2
- 3
- 4
- 5
- 6
选项 | 含义 |
---|---|
-C | 解压缩到指定目录,注意:要解压缩的目录必须存在 |
2) bzip2(two)
- tar 与 bzip2 命令结合可以使用实现文件 打包和压缩(用法和 gzip 一样)
tar 只负责打包文件,但不压缩
用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2 - 在 tar 命令中有一个选项 -j 可以调用 bzip2 ,从而可以方便的实现压缩和解压缩的功能
- 命令格式如下:
# 压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...
# 解压缩文件
tar -jxvf 打包文件.tar.bz2
- 1
- 2
- 3
- 4
软件安装
通过 apt 安装/卸载软件
- apt 是
Advanced Packaging Tool
,是 Linux 下的一款安装包管理工具 - 可以在终端中方便的 安装/卸载/更新软件包
# 1. 安装软件
$ sudo apt install 软件包
# 2. 卸载软件
$ sudo apt remove 软件名
# 3. 更新已安装的包
$ sudo apt upgrade
- 1
- 2
- 3
- 4
- 5
- 6
文件和目录常用命令
查看目录内容
ls 命令说明
- ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,类似于 DOS下的 dir 命令
Linux 下文件和目录的特点
- Linux 文件 或者 目录 名称最长可以有 256 个字符参数 含义
- 以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示
- . 代表当前目录
- … 代表上一级目录
ls 常用选项
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
ls通配符的使用
通配符 | 含义 |
---|---|
* | 代表任意个数个字符 |
? | 代表任意一个字符,至少 1 个 |
[] | 表示可以匹配字符组中的任一一个 |
[abc] | 匹配 a、b、c 中的任意一个 |
[a-f] | 匹配从 a 到 f 范围内的的任意一个字符 |
注意:以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示
切换目录
cd
cd
是英文单词 change directory 的简写,其功能为更改当前的工作目录,也是用户最常用的命令之一
注意:Linux 所有的 目录 和 文件名 都是大小写敏感的
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录) |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 保持在当前目录不变 |
cd … | 切换到上级目录 |
cd - | 可以在最近两次工作目录之间来回切换 |
相对路径和绝对路径
相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录 所在的目录位置
绝对路径 在输入路径时,最前面是 / 或者 ~,表示从 根目录/家目录 开始的具体目录位置
创建和删除操作
touch
- 创建文件或修改文件时间
如果文件 不存在,可以创建一个空白文件
如果文件 已经存在,可以修改文件的末次修改日期
mkdir
- 创建一个新的目录
选项 | 含义 |
---|---|
-p | 可以递归创建目录 |
新建目录的名称 不能与当前目录中 已有的目录或文件 同名
rm
- 删除文件或目录
使用 rm 命令要小心,因为文件删除后不能恢复
选项 | 含义 |
---|---|
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹 时必须加此参数 |
拷贝和移动文件
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | tree [目录名] | tree | 以树状图列出文件目录结构 |
02 | cp 源文件目标文件 | copy | 复制文件或者目录 |
03 | mv 源文件 目标文件 | move | 移动文件或者目录/文件或者目录重命名 |
tree
- tree 命令可以以树状图列出文件目录结构
选项 | 含义 |
---|---|
-d | 只显示目录 |
cp
- cp 命令的功能是将给出的 文件 或 目录 复制到另一个 文件 或 目录 中,相当DOS 下的 copy命令
选 项 | 含义 |
---|---|
-i | 覆盖文件前提示 |
-r | 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必 |
须为一个目录名
mv
- mv 命令可以用来 移动 文件 或 目录,也可以给 文件或目录重命名
选项 | 含义 |
---|---|
-i | 覆盖文件前提示 |
查看文件内容
序 号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat 文件名 | concatenate | 查看文件内容、创建文件、文件合并、追加文件内容等功能 |
02 | more 文件名 | more | 分屏显示文件内容 |
03 | grep 搜索文本 文件名 | grep | 搜索文本文件内容 |
cat
cat 命令可以用来 查看文件内容、创建文件、文件合并、追加文件内容 等功能
cat 会一次显示所有的内容,适合 查看内容较少 的文本文件
选项 | 含义 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出的所有行编号 |
Linux 中还有一个 nl 的命令和 cat -b 的效果等价
more
- more 命令可以用于分屏显示文件内容,每次只显示一页内容
- 适合于 查看内容较多的文本文件
使用 more 的操作键:
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter | 键 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索 word 字符串 |
grep
Linux 系统中 grep 命令是一种强大的文本搜索工具
grep 允许对文本文件进行 模式查找,所谓模式查找,又被称为正则表达式。
选项 | 含义 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示不包含匹配文本的所有行(相当于求反) |
-i | 忽略大小写 |
常用的两种模式查找
参数 | 含义 |
---|---|
^a | 行首,搜寻以 a 开头的行 |
ke$ | 行尾,搜寻以 ke 结束的行 |
其他
echo 文字内容
echo 会在终端中显示参数指定的文字,通常会和 重定向 联合使用
重定向 > 和 >>
Linux 允许将命令执行结果 重定向到一个 文件
将本应显示在终端上的内容 输出/追加 到指定文件中
其中
> 表示输出,会覆盖文件原有的内容
>> 表示追加,会将内容追加到已有文件的末尾
管道 |
- Linux 允许将 一个命令的输出 可以通过管道 做为 另一个命令的输入
- 可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 | 的左右分为两端,
左端塞东西(写),右端取东西(读)
常用的管道命令有:
- more :分屏显示内容
- grep :在命令执行结果的基础上查询指定的文本
系统信息相关命令
时间和日期
序号 | 命令 | 作用 |
---|---|---|
01 | date | 查看系统时间 |
02 | cal | calendar 查看日历, -y 选项可以查看一年的日历 |
磁盘信息
序号 | 命令 | 作用 |
---|---|---|
01 | df -h | disk free 显示磁盘剩余空间 |
02 | du -h [目录名] | disk usage 显示目录下的文件大小 |
进程信息
所谓进程,通俗地说就是 当前正在执行的一个程序
序号 | 命令 | 作用 |
---|---|---|
01 | ps aux | process status 查看进程的详细状况 |
02 | top | 动态显示运行中的进程并且排序 |
03 | kill [-9] 进程代号 | 终止指定代号的进程, -9 表示强行终止 |
ps 默认只会显示当前用户通过终端启动的应用程序
ps 选项说明
选项 | 含义 |
---|---|
a | 显示终端上的所有进程,包括其他用户的进程 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
提示:使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,否则可能导致系统崩溃
- 要退出 top 可以直接输入 q
用户权限相关命令
组管理
提示:创建组 / 删除组 的终端命令都需要通过 sudo 执行
序号 | 命令 | 作用 |
---|---|---|
01 | groupadd 组名 | 添加组 |
02 | groupdel 组名 | 删除组 |
03 | cat /etc/group | 确认组信息 |
04 | chgrp -R 组名 文件/目录名 | 递归修改文件/目录的所属组 |
提示:
组信息保存在 /etc/group 文件中
/etc 目录是专门用来保存 系统配置信息 的目录
用户管理
提示:创建用户 / 删除用户 / 修改其他用户密码 的终端命令都需要通过 sudo 执行
创建用户/设置密码/删除用户
提示:
- 创建用户时,如果忘记添加 -m 选项指定新用户的家目录 —— 最简单的方法就是删除用户,重新创建
- 创建用户时,默认会创建一个和用户名同名的组名
- 用户信息保存在 /etc/passwd 文件中
查看用户信息
序号 | 命令 | 作用 |
---|---|---|
01 | id [用户名] | 查看用户 UID 和 GID 信息 |
02 | who | 查看当前所有登录的用户列表 |
03 | whoami | 查看当前登录用户的账户名 |
提示
- /etc/passwd 是用于保存用户信息的文件
- /usr/bin/passwd 是用于修改用户密码的程序
which 命令可以查看执行命令所在位置,例如:
which ls
# 输出
# /bin/ls
which useradd
# 输出
# /usr/sbin/useradd
- 1
- 2
- 3
- 4
- 5
- 6
bin 和 sbin
- 在 Linux 中,绝大多数可执行文件都是保存在 /bin 、 /sbin 、 /usr/bin 、 /usr/sbin
- /bin ( binary )是二进制执行文件目录,主要用于具体应用
- /sbin ( system binary )是系统管理员专用的二进制代码存放目录,主要用于系统管理
- /usr/bin ( user commands for applications )后期安装的一些软件
- /usr/sbin ( super user commands for applications )超级用户的一些管理程序
提示:
cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到 cd命令的位置
切换用户
序 号 | 命令 | 作用 | 说明 |
---|---|---|---|
01 | su - 用户名 | 切换用户,并且切换目录 | - 可以切换到用户家目录,否则保持位置不变 |
02 | exit | 退出当前登录账户 |
su 不接用户名,可以切换到 root ,但是不推荐使用,因为不安全
exit 示意图如下:
修改文件权限
序号 | 命令 | 作用 |
---|---|---|
01 | chown | 修改拥有者 |
02 | chgrp | 修改组 |
03 | chmod | 修改权限 |
命令格式如下:
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
# 递归修改文件|目录的组
chgrp -R 组名 文件名|目录名
# 递归修改文件权限
chmod -R 755 文件名|目录名
- 1
- 2
- 3
- 4
- 5
- 6
远程管理常用命令
关机/重启
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | shutdown | 选项 时间 shutdown | 关机/重新启动 |
常用命令示例
# 重新启动操作系统,其中 now 表示现在
$ shutdown -r now
# 立刻关机,其中 now 表示现在
$ shutdown now
# 系统在今天的 20:25 会关机
$ shutdown 20:25
# 系统再过十分钟后自动关机
$ shutdown +10
# 取消之前指定的关机计划
$ shutdown -c
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
不指定选项和参数,默认表示 1 分钟之后 关闭电脑
远程维护服务器时,最好不要关闭系统,而应该重新启动系统
查看配置网卡信息
序 号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ifconfig | configure a network interface | 查看/配置计算机当前的网卡配置信息 |
02 | ping ip地址 | ping | 检测到目标 ip地址 的连接是否正常 |
ifconfig
ifconfig 可以查看/配置计算机当前的网卡配置信息
# 查看网卡配置信息
$ ifconfig
# 查看网卡对应的 IP 地址
$ ifconfig | grep inet
- 1
- 2
- 3
- 4
提示:一台计算机中有可能会有一个 物理网卡 和 多个虚拟网卡,在 Linux 中物理网卡的名字通常以 ensXX 表示
127.0.0.1 被称为 本地回环/环回地址,一般用来测试本机网卡是否正常
ping
ping 一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢
# 检测到目标主机是否连接正常
$ ping IP地址
# 检测本地网卡工作正常
$ ping 127.0.0.1
- 1
- 2
- 3
- 4
ping 的工作原理与潜水艇的声纳相似, ping 这个命令就是取自 声纳的声音
网络管理员之间也常将 ping 用作动词 —— ping 一下计算机X,看他是否开着
远程登录和赋值文件
ssh 基础(重点)
在 Linux 中 SSH 是 非常常用 的工具,通过 SSH 客户端 我们可以连接到运行了 SSH 服务器 的远程机器上
ssh的简单使用:
ssh [-p port] user@remote
- 1
- user 是在远程机器上的用户名,如果不指定的话默认为当前用户
- remote 是远程机器的地址,可以是 IP/域名,或者是 后面会提到的别名
- port 是 SSH Server 监听的端口,如果不指定,就为默认值 22
提示:
- 使用 exit 退出当前用户的登录
- ssh 这个终端命令只能在 Linux 或者 UNIX 系统下使用
- 如果在 Windows 系统中,可以安装 PuTTY 或者 XShell 客户端软件即可
- 在工作中,SSH 服务器的端口号很有可能不是 22,如果遇到这种情况就需要使用 -p 选项,指定正确的端口号,否则无法正常连接到服务器
scp
scp 就是 secure copy ,是一个在 Linux 下用来进行 远程拷贝文件 的命令
它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的 -P 而不是小写的
# 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
# 注意:`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py
# 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
scp -P port user@remote:Desktop/01.py 01.py
# 加上 -r 选项可以传送文件夹
# 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
scp -r demo user@remote:Desktop
# 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
scp -r user@remote:Desktop demo
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
选 项 | 含义 |
---|---|
-r | 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
-P | 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口 |
注意:
scp 这个终端命令只能在 Linux
或者 UNIX
系统下使用
如果在 Windows 系统中,可以安装 PuTTY ,使用 pscp 命令行工具或者安装 FileZilla使用 FTP 进行文件传输
本文中:前移和前为 ←,后移和后为 →
移动类
按键 | 作用 |
---|---|
Ctrl + a | 移到命令行首 (a:ahead) |
Ctrl + e | 移到命令行尾 (e:end) |
Ctrl + f | 按字符前移 (f:forward) |
Ctrl + b | 按字符后移 (b:backward) |
Alt + f | 按单词前移 |
Alt + b | 按单词后移 |
Ctrl + x x | 将光标移动到行首,再按一次则光标跳回当前位置 |
编辑类
按键 | 作用 |
---|---|
Tab | 自动补齐 |
Ctrl + i | 自动补齐 |
Ctrl + d | 删除光标后一个字符 delete |
Ctrl + h | 删除光标前一个字符 backspace |
Ctrl + w | 从光标处剪切/删除至字首 |
Ctrl + u | 从光标处剪切/删除至行首 |
Ctrl + k | 从光标处剪切/删除至行尾 |
Ctrl + h | 从光标处向前删除一个字符 |
Ctrl + d | 从光标处向后删除一个字符 |
Ctrl + y | 粘贴使用 Ctrl + u Ctrl + k Ctrl + w 剪切/删除的文本 |
Alt + d | 从光标处删除至字尾 |
Ctrl + t | 交换光标处和之前的字符 |
Alt + t | 交换光标处和之前的单词 |
Alt + c | 从光标处更改为首字母大写的单词 |
Alt + u | 从光标处更改为全部大写的单词 |
Alt + l | 从光标处更改为全部小写的单词 |
Ctrl + o | 执行当前命令,并选择上一条命令 |
Ctrl + _ | 撤销操作 |
Ctrl + l | 清除屏幕 clear |
ALT+Backspace | 删除前一个词 |
控制类
按键 | 作用 |
---|---|
Ctrl + s | 阻止屏幕输出 |
Ctrl + q | 允许屏幕输出 |
Ctrl + c | 终止命令 |
Ctrl + z | 挂起命令 |
Ctrl+d | 在命令行的为空的情况下可以退出终端 |
Ctrl+[ | 相当于Esc键 |
Esc×3 | 显示所有的支持的终端命令。 |
历史类
按键 | 作用 |
---|---|
Ctrl+p | 上一个使用的历史命令(p:previous) |
Ctrl+n | 下一个使用的历史命令(n:next ) |
Ctrl + r | 逆向搜索命令历史(r:retrieve) |
Ctrl + g | 从历史搜索模式退出 |
Ctrl+z | 将当前任务退到后台 |
fg | 回到最近退到后台的任务 |
Alt + . | 使用上一条命令的最后一个参数 |
一、目录操作
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">pwd 查看当前工作目录
clear 清除屏幕
cd <span style="color:#669900">~</span> 当前用户目录
cd <span style="color:#669900">/</span> 根目录
cd <span style="color:#669900">-</span> 上一次访问的目录
cd <span style="color:#999999">.</span><span style="color:#999999">.</span> 上一级目录
</code></span></span>
- 1
- 2
- 3
- 4
- 5
- 6
查看目录内信息
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ll 查看当前目录下内容(LL的小写)
</code></span></span>
- 1
创建目录
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">mkdir aaa 在当前目录下创建aaa目录,相对路径;
mkdir <span style="color:#999999">.</span>/bbb 在当前目录下创建bbb目录,相对路径;
mkdir <span style="color:#669900">/</span>ccc 在根目录下创建ccc目录,绝对路径;
</code></span></span>
- 1
- 2
- 3
递归创建目录(会创建里面没有的目录文件夹)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">mkdir -p temp/nginx
</code></span></span>
- 1
搜索命令
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">find / -name 'b' 查询根目录下(包括子目录),名以b的目录和文件;
find / -name 'b*' 查询根目录下(包括子目录),名以b开头的目录和文件;
</code></span></span>
- 1
- 2
重命名
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">mv 原先目录 文件的名称 mv tomcat001 tomcat
</code></span></span>
- 1
剪切命令(有目录剪切到制定目录下,没有的话剪切为指定目录)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">mv /aaa /bbb 将根目录下的aaa目录,移动到bbb目录下,在bbb,麚也叫aaa目录;
mv bbb usr/bbb 将当前目录下的bbbb目录,移动到usr目录下,并且修改名称为bbb;
</code></span></span>
- 1
- 2
复制目录
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">cp -r /aaa /bbb 将/目录下的aaa目录复制到/bbb目录下,在/bbb目录下的名称为aaa
cp -r /aaa /bbb/aaa 将/目录下的aa目录复制到/bbb目录下,且修改名为aaa;
</code></span></span>
- 1
- 2
强制式删除指定目录
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">rm -rf /bbb 强制删除/目录下的bbb目录。如果bbb目录中还有子目录,也会被强制删除,不会提示;
</code></span></span>
- 1
删除目录
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">rm -r /bbb 普通删除。会询问你是否删除每一个文件
</code></span></span>
- 1
二、文件操作
删除
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">rm -r a.java 删除当前目录下的a.java文件(每次回询问是否删除y:同意)
</code></span></span>
- 1
强制删除
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">rm <span style="color:#669900">-</span>rf a<span style="color:#999999">.</span>java 强制删除当前目录下的a<span style="color:#999999">.</span>java文件
rm <span style="color:#669900">-</span>rf <span style="color:#999999">.</span>/a<span style="color:#669900">*</span> 强制删除当前目录下以a开头的所有文件;
rm <span style="color:#669900">-</span>rf <span style="color:#999999">.</span><span style="color:#5c6370">/* 强制删除当前目录下所有文件(慎用);
</span></code></span></span>
- 1
- 2
- 3
创建文件
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">touch testFile
</code></span></span>
- 1
递归删除.pyc格式的文件
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">find <span style="color:#999999">.</span> <span style="color:#669900">-</span>name <span style="color:#669900">'*.pyc'</span> <span style="color:#669900">-</span>exec rm <span style="color:#669900">-</span>rf <span style="color:#999999">{</span><span style="color:#999999">}</span> \<span style="color:#999999">;</span>
</code></span></span>
- 1
打印当前文件夹下指定大小的文件
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">find <span style="color:#999999">.</span> <span style="color:#669900">-</span>name <span style="color:#669900">"*"</span> <span style="color:#669900">-</span>size <span style="color:#98c379">145800</span>c <span style="color:#669900">-</span>print
</code></span></span>
- 1
递归删除指定大小的文件(145800)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">find <span style="color:#999999">.</span> <span style="color:#669900">-</span>name <span style="color:#669900">"*"</span> <span style="color:#669900">-</span>size <span style="color:#98c379">145800</span>c <span style="color:#669900">-</span>exec rm <span style="color:#669900">-</span>rf <span style="color:#999999">{</span><span style="color:#999999">}</span> \<span style="color:#999999">;</span>
</code></span></span>
- 1
递归删除指定大小的文件,并打印出来
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">find <span style="color:#999999">.</span> <span style="color:#669900">-</span>name <span style="color:#669900">"*"</span> <span style="color:#669900">-</span>size <span style="color:#98c379">145800</span>c <span style="color:#669900">-</span>print <span style="color:#669900">-</span>exec rm <span style="color:#669900">-</span>rf <span style="color:#999999">{</span><span style="color:#999999">}</span> \<span style="color:#999999">;</span>
</code></span></span>
- 1
"."
表示从当前目录开始递归查找“ -name '*.exe' "
根据名称来查找,要查找所有以.exe结尾的文件夹或者文件" -type f "
查找的类型为文件"-print"
输出查找的文件目录名-size 145800c
指定文件的大小-exec rm -rf {} \;
递归删除(前面查询出来的结果)
三、文件内容操作(查看日志,更改配置文件)
修改文件内容
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">vim a<span style="color:#999999">.</span>java 进入一般模式
<span style="color:#61aeee">i</span><span style="color:#999999">(</span>按键<span style="color:#999999">)</span> 进入插入模式<span style="color:#999999">(</span>编辑模式<span style="color:#999999">)</span>
<span style="color:#61aeee">ESC</span><span style="color:#999999">(</span>按键<span style="color:#999999">)</span> 退出
<span style="color:#669900">:</span>wq 保存退出(shift<span style="color:#669900">+</span>:调起输入框)
<span style="color:#669900">:</span>q! 不保存退出(shift<span style="color:#669900">+</span>:调起输入框)(内容更改)
<span style="color:#669900">:</span>q 不保存退出(shift<span style="color:#669900">+</span>:调起输入框)(没有内容更改)
</code></span></span>
- 1
- 2
- 3
- 4
- 5
- 6
文件内容的查看
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">cat a<span style="color:#999999">.</span>java 查看a<span style="color:#999999">.</span>java文件的最后一页内容;
more a<span style="color:#999999">.</span>java 从第一页开始查看a<span style="color:#999999">.</span>java文件内容,按回车键一行一行进行查看,
按空格键一页一页进行查看,q退出;
less a<span style="color:#999999">.</span>java 从第一页开始查看a<span style="color:#999999">.</span>java文件内容,按回车键一行一行的看,
按空格键一页一页的看,支持使用PageDown和PageUp翻页,q退出;
</code></span></span>
- 1
- 2
- 3
- 4
- 5
总结下more 和 less的区别:
- less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
- less不必读整个文件,加载速度会比more更快
- less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容.
- 由于more不能后退.
实时查看文件后几行(实时查看日志)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">tail <span style="color:#669900">-</span>f a<span style="color:#999999">.</span>java 查看a<span style="color:#999999">.</span>java文件的后<span style="color:#98c379">10</span>行内容;
</code></span></span>
- 1
前后几行查看
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">head a<span style="color:#999999">.</span>java 查看a<span style="color:#999999">.</span>java文件的前<span style="color:#98c379">10</span>行内容;
tail <span style="color:#669900">-</span>f a<span style="color:#999999">.</span>java 查看a<span style="color:#999999">.</span>java文件的后<span style="color:#98c379">10</span>行内容;
head <span style="color:#669900">-</span>n <span style="color:#98c379">7</span> a<span style="color:#999999">.</span>java 查看a<span style="color:#999999">.</span>java文件的前<span style="color:#98c379">7</span>行内容;
tail <span style="color:#669900">-</span>n <span style="color:#98c379">7</span> a<span style="color:#999999">.</span>java 查看a<span style="color:#999999">.</span>java文件的后<span style="color:#98c379">7</span>行内容;
</code></span></span>
- 1
- 2
- 3
- 4
文件内部搜索指定的内容
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">grep under <span style="color:#98c379">123.</span>txt 在<span style="color:#98c379">123.</span>txt文件中搜索under字符串,大小写敏感,显示行;
grep <span style="color:#669900">-</span>n under <span style="color:#98c379">123.</span>txt 在<span style="color:#98c379">123.</span>txt文件中搜索under字符串,大小写敏感,显示行及行号;
grep <span style="color:#669900">-</span>v under <span style="color:#98c379">123.</span>txt 在<span style="color:#98c379">123.</span>txt文件中搜索under字符串,大小写敏感,显示没搜索到的行;
grep <span style="color:#669900">-</span>i under <span style="color:#98c379">123.</span>txt 在<span style="color:#98c379">123.</span>txt文件中搜索under字符串,大小写敏感,显示行;
grep <span style="color:#669900">-</span>ni under <span style="color:#98c379">123.</span>txt 在<span style="color:#98c379">123.</span>txt文件中搜索under字符串,大小写敏感,显示行及行号;
</code></span></span>
- 1
- 2
- 3
- 4
- 5
终止当前操作
Ctrl+c
和Ctrl+z
都是中断命令,但是作用却不一样。
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ctrl<span style="color:#669900">+</span>z
ctrl<span style="color:#669900">+</span>c
</code></span></span>
- 1
- 2
Ctrl+Z就扮演了类似的角色,将任务中断,但是任务并没有结束,在进程中只是维持挂起的状态,用户可以使用fg/bg操作前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。
Ctrl+C也扮演类似的角色,强制中断程序的执行。
重定向功能
可以使用 > 或 < 将命令的输出的命令重定向到test.txt文件中(没有则创建一个)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">echo <span style="color:#669900">'Hello World'</span> <span style="color:#669900">></span> <span style="color:#669900">/</span>root<span style="color:#669900">/</span>test<span style="color:#999999">.</span>txt
</code></span></span>
- 1
四、系统日志位置
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">cat <span style="color:#669900">/</span>etc<span style="color:#669900">/</span>redhat<span style="color:#669900">-</span>release 查看操作系统版本
<span style="color:#669900">/</span><span style="color:#c678dd">var</span><span style="color:#669900">/</span>log<span style="color:#669900">/</span>message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
<span style="color:#669900">/</span><span style="color:#c678dd">var</span><span style="color:#669900">/</span>log<span style="color:#669900">/</span>message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
<span style="color:#669900">/</span><span style="color:#c678dd">var</span><span style="color:#669900">/</span>log<span style="color:#669900">/</span>secure 与安全相关的日志信息
<span style="color:#669900">/</span><span style="color:#c678dd">var</span><span style="color:#669900">/</span>log<span style="color:#669900">/</span>maillog 与邮件相关的日志信息
<span style="color:#669900">/</span><span style="color:#c678dd">var</span><span style="color:#669900">/</span>log<span style="color:#669900">/</span>cron 与定时任务相关的日志信息
<span style="color:#669900">/</span><span style="color:#c678dd">var</span><span style="color:#669900">/</span>log<span style="color:#669900">/</span>spooler 与UUCP和news设备相关的日志信息
<span style="color:#669900">/</span><span style="color:#c678dd">var</span><span style="color:#669900">/</span>log<span style="color:#669900">/</span>boot<span style="color:#999999">.</span>log 守护进程启动和停止相关的日志消息
</code></span></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
查看某文件下的用户操作日志
到达操作的目录下,执行下面的程序:
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">cat <span style="color:#999999">.</span>bash_history
</code></span></span>
- 1
五、创建与删除软连接
1、创建软连接
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ln <span style="color:#669900">-</span>s <span style="color:#669900">/</span>usr<span style="color:#669900">/</span>local<span style="color:#669900">/</span>app <span style="color:#669900">/</span>data
</code></span></span>
- 1
注意:创建软连接时,data目录后不加 / (加上后是查找其下一级目录);
2、删除软连接
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">rm <span style="color:#669900">-</span>rf <span style="color:#669900">/</span>data
</code></span></span>
- 1
注意:取消软连接最后没有/,rm -rf 软连接。加上/是删除文件夹;
六、压缩和解压缩
tar
tar
压缩(-c)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-php">tar <span style="color:#669900">-</span>cvf start<span style="color:#669900">.</span>tar a<span style="color:#669900">.</span>java b<span style="color:#669900">.</span>java <span style="color:#5c6370">//将当前目录下a.java、b.java打包</span>
tar <span style="color:#669900">-</span>cvf start<span style="color:#669900">.</span>tar <span style="color:#669900">.</span><span style="color:#669900">/</span><span style="color:#669900">*</span> <span style="color:#5c6370">//将当前目录下的所欲文件打包压缩成haha.tar文件</span>
tar <span style="color:#669900">-</span>zcvf start<span style="color:#669900">.</span>tar<span style="color:#669900">.</span>gz a<span style="color:#669900">.</span>java b<span style="color:#669900">.</span>java <span style="color:#5c6370">//将当前目录下a.java、b.java打包</span>
tar <span style="color:#669900">-</span>zcvf start<span style="color:#669900">.</span>tar<span style="color:#669900">.</span>gz <span style="color:#669900">.</span><span style="color:#669900">/</span><span style="color:#669900">*</span> <span style="color:#5c6370">//将当前目录下的所欲文件打包压缩成haha.tar.gz文件</span>
</code></span></span>
- 1
- 2
- 3
- 4
- 5
解压缩(-x)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">tar <span style="color:#669900">-</span>xvf start<span style="color:#999999">.</span>tar <span style="color:#5c6370">//解压start.tar压缩包,到当前文件夹下;</span>
tar <span style="color:#669900">-</span>xvf start<span style="color:#999999">.</span>tar <span style="color:#669900">-</span>C usr<span style="color:#669900">/</span>local <span style="color:#5c6370">//(C为大写,中间无空格)</span>
<span style="color:#5c6370">//解压start.tar压缩包,到/usr/local目录下;</span>
tar <span style="color:#669900">-</span>zxvf start<span style="color:#999999">.</span>tar<span style="color:#999999">.</span>gz <span style="color:#5c6370">//解压start.tar.gz压缩包,到当前文件夹下;</span>
tar <span style="color:#669900">-</span>zxvf start<span style="color:#999999">.</span>tar<span style="color:#999999">.</span>gz <span style="color:#669900">-</span>C usr<span style="color:#669900">/</span>local <span style="color:#5c6370">//(C为大写,中间无空格)</span>
<span style="color:#5c6370">//解压start.tar.gz压缩包,到/usr/local目录下;</span>
</code></span></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
解压缩tar.xz
文件
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">tar xf node<span style="color:#669900">-</span>v12<span style="color:#999999">.</span><span style="color:#98c379">18.1</span><span style="color:#669900">-</span>linux<span style="color:#669900">-</span>x64<span style="color:#999999">.</span>tar<span style="color:#999999">.</span>xz
</code></span></span>
- 1
unzip/zip
压缩(zip)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">zip lib<span style="color:#999999">.</span>zip tomcat<span style="color:#999999">.</span>jar <span style="color:#5c6370">//将单个文件压缩(lib.zip)</span>
zip <span style="color:#669900">-</span>r lib<span style="color:#999999">.</span>zip lib<span style="color:#669900">/</span> <span style="color:#5c6370">//将目录进行压缩(lib.zip)</span>
zip <span style="color:#669900">-</span>r lib<span style="color:#999999">.</span>zip tomcat<span style="color:#669900">-</span>embed<span style="color:#999999">.</span>jar xml<span style="color:#669900">-</span>aps<span style="color:#999999">.</span>jar <span style="color:#5c6370">//将多个文件压缩为zip文件(lib.zip) </span>
</code></span></span>
- 1
- 2
- 3
解压缩(unzip)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">unzip file1<span style="color:#999999">.</span>zip <span style="color:#5c6370">//解压一个zip格式压缩包</span>
unzip <span style="color:#669900">-</span>d <span style="color:#669900">/</span>usr<span style="color:#669900">/</span>app<span style="color:#669900">/</span>com<span style="color:#999999">.</span>lydms<span style="color:#999999">.</span>english<span style="color:#999999">.</span>zip <span style="color:#5c6370">//将`english.zip`包,解压到指定目录下`/usr/app/`</span>
</code></span></span>
- 1
- 2
七、Linux下文件的详细信息
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties"> R:Read w:write x: execute执行
-rw-r--r-- 1 root root 34942 Jan 19 2018 bootstrap.jar
前三位代表当前用户对文件权限:可以读/可以写/不能执行
中间三位代表当前组的其他用户对当前文件的操作权限:可以读/不能写/不能执行
后三位其他用户对当前文件权限:可以读/不能写/不能执行
</code></span></span>
- 1
- 2
- 3
- 4
- 5
更改文件的权限
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">chmod u<span style="color:#669900">+</span>x web<span style="color:#999999">.</span>xml (<span style="color:#669900">--</span><span style="color:#669900">-</span>x<span style="color:#669900">--</span><span style="color:#669900">--</span><span style="color:#669900">--</span>) 为文件拥有者(user)添加执行权限;
chmod g<span style="color:#669900">+</span>x web<span style="color:#999999">.</span>xml (<span style="color:#669900">--</span><span style="color:#669900">--</span><span style="color:#669900">--</span>x<span style="color:#669900">--</span><span style="color:#669900">-</span>) 为文件拥有者所在组(group)添加执行权限;
chmod <span style="color:#98c379">111</span> web<span style="color:#999999">.</span>xml (<span style="color:#669900">--</span><span style="color:#669900">-</span>x<span style="color:#669900">--</span>x<span style="color:#669900">--</span>x) 为所有用户分类,添加可执行权限;
chmod <span style="color:#98c379">222</span> web<span style="color:#999999">.</span>xml (<span style="color:#669900">--</span>w<span style="color:#669900">--</span>w<span style="color:#669900">--</span>w<span style="color:#669900">-</span>) 为所有用户分类,添加可写入权限;
chmod <span style="color:#98c379">444</span> web<span style="color:#999999">.</span>xml (<span style="color:#669900">-</span>r<span style="color:#669900">--</span>r<span style="color:#669900">--</span>r<span style="color:#669900">--</span>) 为所有用户分类,添加可读取权限;
</code></span></span>
- 1
- 2
- 3
- 4
- 5
八、常用的docker容器的命令:
1、下载镜像
Linux服务器下载安装包镜像命令
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">wget https<span style="color:#669900">:</span><span style="color:#669900">/</span><span style="color:#669900">/</span>mirrors<span style="color:#999999">.</span>huaweicloud<span style="color:#999999">.</span>com<span style="color:#669900">/</span>elasticsearch<span style="color:#669900">/</span><span style="color:#98c379">7.8</span><span style="color:#98c379">.0</span><span style="color:#669900">/</span>elasticsearch<span style="color:#669900">-</span><span style="color:#98c379">7.8</span><span style="color:#98c379">.0</span><span style="color:#669900">-</span>windows<span style="color:#669900">-</span>x86_64<span style="color:#999999">.</span>zip
</code></span></span>
- 1
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">https<span style="color:#669900">:</span><span style="color:#669900">/</span><span style="color:#669900">/</span>mirrors<span style="color:#999999">.</span>huaweicloud<span style="color:#999999">.</span>com<span style="color:#669900">/</span>
</code></span></span>
- 1
2、常用命令
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">#<span style="color:#98c379">1</span>、查看docker中下载好的镜像:
docker images
#<span style="color:#98c379">2</span>、查询需要的容器名称:
docker search mysql
#<span style="color:#98c379">3</span>、将需要的docker容器下载运行到本地<span style="color:#999999">(</span>名称、端口号、msyql密码、ID<span style="color:#999999">)</span>:
docker run <span style="color:#669900">-</span>di <span style="color:#669900">--</span>name<span style="color:#669900">=</span>first <span style="color:#669900">-</span>p <span style="color:#98c379">3306</span><span style="color:#669900">:</span><span style="color:#98c379">3306</span> <span style="color:#669900">-</span>e MYSQL_ROOT_PASSWORD<span style="color:#669900">=</span>root <span style="color:#98c379">26d</span><span style="color:#98c379">26d</span>sfsd31a
#<span style="color:#98c379">4</span>、查看运行的docker容器:
docker ps
#<span style="color:#98c379">5</span>、查看所有的docker容器(包括未运行的):
docker ps <span style="color:#669900">-</span>a
#<span style="color:#98c379">6</span>、停止当前运行的docker容器:
docker stop first
#<span style="color:#98c379">7</span>、启动docker容器:
docker start first
#<span style="color:#98c379">8</span>、重启docker容器:
docker restart first
#<span style="color:#98c379">9</span>、删除docker容器:
docker rm first
</code></span></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
九、运维常用命令
1、查看服务器端口号是否可用
查看服务器是否可用
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ping <span style="color:#98c379">49.32</span><span style="color:#98c379">.587</span><span style="color:#98c379">.164</span>
</code></span></span>
- 1
查看服务器指定端口是否可用
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">telnet <span style="color:#98c379">49.32</span><span style="color:#98c379">.587</span><span style="color:#98c379">.164</span> <span style="color:#98c379">8093</span>
</code></span></span>
- 1
这是我写过的一个Linux安装Telnet的文章。
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">https<span style="color:#669900">:</span><span style="color:#669900">/</span><span style="color:#669900">/</span>blog<span style="color:#999999">.</span>csdn<span style="color:#999999">.</span>net<span style="color:#669900">/</span>lydms<span style="color:#669900">/</span>article<span style="color:#669900">/</span>details<span style="color:#669900">/</span><span style="color:#98c379">113698856</span>
</code></span></span>
- 1
1、shutdown(关闭计算机)
shutdown是最常用也是最安全的关机和重启命令,它会在关机之前调用fsck检查磁盘,其中-h和-r是最常用的参数:
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java"><span style="color:#669900">-</span>h:停止系统服务并关机
<span style="color:#669900">-</span>r: 停止系统服务后重启
</code></span></span>
- 1
- 2
案例:
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">shutdown <span style="color:#669900">-</span>h now <span style="color:#669900">--</span>立即关机
shutdown <span style="color:#669900">-</span>h <span style="color:#98c379">10</span><span style="color:#669900">:</span><span style="color:#98c379">53</span> <span style="color:#669900">--</span>到<span style="color:#98c379">10</span><span style="color:#669900">:</span><span style="color:#98c379">53</span>关机,如果该时间小于当前时间,则到隔天
shutdown <span style="color:#669900">-</span>h <span style="color:#669900">+</span><span style="color:#98c379">10</span> <span style="color:#669900">--</span><span style="color:#98c379">10</span>分钟后自动关机
shutdown <span style="color:#669900">-</span>r now <span style="color:#669900">--</span>立即重启
shutdown <span style="color:#669900">-</span>r <span style="color:#669900">+</span><span style="color:#98c379">30</span> <span style="color:#669900">'The System Will Reboot in 30 Mins'</span> <span style="color:#669900">--</span><span style="color:#98c379">30</span>分钟后重启并并发送通知给其它在线用户
</code></span></span>
- 1
- 2
- 3
- 4
- 5
2、查看处于各种连接状态数量(ESTABLISHED、CLOSE_WAIT、TIME_WAIT)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>n <span style="color:#669900">|</span> awk <span style="color:#669900">'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'</span>
</code></span></span>
- 1
查看处于ESTABLISHED
状态连接
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>nt <span style="color:#669900">|</span> awk <span style="color:#669900">'{if($NF=="ESTABLISHED"){wait[$5]++}}END{for(i in wait) print i,wait[i]}'</span>
</code></span></span>
- 1
查看处于CLOSE_WAIT
状态连接
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>nt <span style="color:#669900">|</span> awk <span style="color:#669900">'{if($NF=="CLOSE_WAIT"){wait[$5]++}}END{for(i in wait) print i,wait[i]}'</span>
</code></span></span>
- 1
查看处于TIME_WAIT
状态连接
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>nt <span style="color:#669900">|</span> awk <span style="color:#669900">'{if($NF=="TIME_WAIT"){wait[$5]++}}END{for(i in wait) print i,wait[i]}'</span>
</code></span></span>
- 1
3、ping命令
对 www.lydms.com 发送 4 个 ping 包, 检查与其是否联通
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ping <span style="color:#669900">-</span>c <span style="color:#98c379">4</span> www<span style="color:#999999">.</span>lydms<span style="color:#999999">.</span>com
</code></span></span>
- 1
4、netstat 命令netstat 命令用于显示各种网络相关信息,如网络连接, 路由表, 接口状态等等;
列出所有处于监听状态的tcp端口:
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>lt
</code></span></span>
- 1
查看所有的端口信息, 包括 PID 和进程名称
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>tulpn
</code></span></span>
- 1
5、查看当前端口号占用情况
1.用于查看某一端口的占用情况
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">lsof <span style="color:#669900">-</span>i<span style="color:#669900">:</span><span style="color:#98c379">8080</span>
</code></span></span>
- 1
2.显示tcp,udp的端口和进程等相关情况
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>tunlp
</code></span></span>
- 1
3.指定端口号的进程情况
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>tunlp<span style="color:#669900">|</span>grep <span style="color:#98c379">8080</span>
</code></span></span>
- 1
4.查看PID进程信息
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ps <span style="color:#669900">-</span>aux <span style="color:#669900">|</span>grep <span style="color:#98c379">28990</span>
</code></span></span>
- 1
根据PID,查看JVM中各线程信息('0x9eb’为nid值)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">jstack <span style="color:#98c379">2246</span><span style="color:#669900">|</span>grep <span style="color:#669900">'0x9eb'</span> <span style="color:#669900">-</span>A <span style="color:#98c379">50</span>
</code></span></span>
- 1
6、ps 命令
过滤得到当前系统中的 ssh 进程信息
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ps aux <span style="color:#669900">|</span> grep <span style="color:#669900">'ssh'</span>
</code></span></span>
- 1
7、管道命令简单来说, Linux 中管道的作用是将上一个命令的输出作为下一个命令的输入, 像 pipe 一样将各个命令串联起来执行, 管道的操作符是 |
管道命令查看当前运行的程序中,名称为java的程序
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ps <span style="color:#669900">-</span>ef<span style="color:#669900">|</span>grep java
</code></span></span>
- 1
查看/etc/passwd文件中的root内容
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">cat <span style="color:#669900">/</span>etc<span style="color:#669900">/</span>passwd <span style="color:#669900">|</span> grep <span style="color:#669900">'root'</span>
</code></span></span>
- 1
查看当前系统的ip连接(Windows和Linux通用)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>an
</code></span></span>
- 1
将sh test.sh任务放到后台,并将打印的日志输出到nohup.out文件中,终端不再能够接收任何输入(标准输入)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">nohup sh test<span style="color:#999999">.</span>sh <span style="color:#669900">&</span>
</code></span></span>
- 1
将sh test.sh任务放到后台,并将打印的日志输出到nohup.out文件中,终端能够接收任何输入
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">nohup sh test<span style="color:#999999">.</span>sh <span style="color:#669900">&</span>
</code></span></span>
- 1
8、添加Host地址
打开配置文件
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">vim <span style="color:#669900">/</span>etc<span style="color:#669900">/</span>hosts
</code></span></span>
- 1
在打开的文件中添加
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java"><span style="color:#98c379">49.235</span><span style="color:#98c379">.32</span><span style="color:#98c379">.164</span> www<span style="color:#999999">.</span>lydms<span style="color:#999999">.</span>com
</code></span></span>
- 1
保存文件后,重启网络
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java"><span style="color:#669900">/</span>etc<span style="color:#669900">/</span>init<span style="color:#999999">.</span>d<span style="color:#669900">/</span>network restart
</code></span></span>
- 1
重新加载成功:
十、yum常用命令
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">yum install iptables<span style="color:#669900">-</span>services 下载并安装iptables
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum update package_name<span style="color:#999999">.</span>rpm 更新当前系统中所有安装的rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum clean all 删除所有缓存的包和头文件
</code></span></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
十一、其他命令
查看历史使用命令
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-yml">history
</code></span></span>
- 1
过滤与es
相关命令
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-yml">history <span style="color:#999999">|</span> grep es
</code></span></span>
- 1
查看占用资源
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ps <span style="color:#669900">-</span>au 占用的资源是从进程启动开始,计算的平均占用资源,比如cpu等
top 实时占用的资源;
</code></span></span>
- 1
- 2
查看当前目录所占存储
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">du <span style="color:#669900">-</span>lh 查看当前文件下各文件夹占用存储空间
du <span style="color:#669900">-</span>sh 查看当前文件夹所占存储空间
du <span style="color:#669900">--</span>max<span style="color:#669900">-</span>depth<span style="color:#669900">=</span><span style="color:#669900"><</span>目录层数<span style="color:#669900">></span> 超过指定层数的目录后,予以忽略。
du <span style="color:#669900">--</span>max<span style="color:#669900">-</span>depth<span style="color:#669900">=</span><span style="color:#98c379">1</span> 只查看当前目录下文件占用的存储空间
</code></span></span>
- 1
- 2
- 3
- 4
管道命令:
根据项目查看进程,更加PID查看项目,以及项目路径
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">ps <span style="color:#669900">-</span>ef 查看所有的进程
ps <span style="color:#669900">-</span>ef <span style="color:#669900">|</span> grep mysql 查看mysql相关的进程
</code></span></span>
- 1
- 2
通过进程PID查看所占用的端口号
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">netstat <span style="color:#669900">-</span>nap <span style="color:#669900">|</span>grep 进程<span style="color:#61aeee">ID</span><span style="color:#999999">(</span>PID<span style="color:#999999">)</span>
</code></span></span>
- 1
查看Linux下系统存储使用率
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">df <span style="color:#669900">-</span>h 查看系统硬盘使用情况
</code></span></span>
- 1
杀死进程(根据PID)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">kill <span style="color:#669900">-</span><span style="color:#98c379">9</span> <span style="color:#98c379">2630</span> 进程pid
</code></span></span>
- 1
关闭防火墙
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">service iptables stop 临时关闭防火墙
chkconfig iptables off 防火墙开启不启动
service iptables status 查看防火墙状态
</code></span></span>
- 1
- 2
- 3
开机启动选项
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">msconfig 查看开机启动选项
chkconfig 查看开机启动服务列表
</code></span></span>
- 1
- 2
查看MySQL服务的程序的状态
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-properties">service mysql start 开启MySQL
service mysql status 查看MySQL的状态
service mysql stop 关闭MySQL
</code></span></span>
- 1
- 2
- 3
十二、Linux内核优化
打开配置文件
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">vim <span style="color:#669900">/</span>etc<span style="color:#669900">/</span>sysctl<span style="color:#999999">.</span>conf
</code></span></span>
- 1
加载新的配置(需开启防火墙iptables,否则会报错)
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">sysctl <span style="color:#669900">-</span>p
</code></span></span>
- 1
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-javav">https://www.cnblogs.com/lldsn/p/10489593.html
</code></span></span>
- 1
十三、用户权限操作
添加用户sum
:
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">useradd –d <span style="color:#669900">/</span>usr<span style="color:#669900">/</span>sum <span style="color:#669900">-</span>m sum
</code></span></span>
- 1
关于useradd的某些参数:
-u: 指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID
-g: 指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在
-G: 指定额外组
-c: 指定用户的注释信息
-d: 指定用户的家目录
已创建的用户sum
设置密码
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">passwd sum
</code></span></span>
- 1
用户添加root
权限
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">visudo
</code></span></span>
- 1
找到root
用户权限位置
添加与root
用户相同权限
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">## Allow root <span style="color:#c678dd">to</span> run any commands anywhere
root ALL<span style="color:#669900">=</span><span style="color:#999999">(</span>ALL<span style="color:#999999">)</span> ALL
eses ALL<span style="color:#669900">=</span><span style="color:#999999">(</span>ALL<span style="color:#999999">)</span> ALL
</code></span></span>
- 1
- 2
- 3
新建的用户在面显示
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">cat <span style="color:#669900">/</span>etc<span style="color:#669900">/</span>passwd
</code></span></span>
- 1
删除用户sum
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">userdel sum
</code></span></span>
- 1
删除用户文件夹
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">rm <span style="color:#669900">-</span>rf <span style="color:#669900">/</span>usr<span style="color:#669900">/</span>sum
</code></span></span>
- 1
切换下刚才添加的用户
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">su sum
</code></span></span>
- 1
回到root用户
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">exit
</code></span></span>
- 1
添加用户组
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">groupadd groupname
</code></span></span>
- 1
删除用户组
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">groupdel groupname
</code></span></span>
- 1
可以看到自己的分组和分组id
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">cat <span style="color:#669900">/</span>etc<span style="color:#669900">/</span>group
</code></span></span>
- 1
sum: x:1000:1000:: /usr/sum :/bin/bash
sum: x:0:1000:: /usr/sum :/bin/bash
十四、TOP
实时占用的资源:
<span style="color:#000000"><span style="background-color:#282c34"><code class="language-java">top
</code></span></span>
- 1
top命令执行结果分为两个区域:统计信息区和进程信息区
TOP:任务队列信息,与uptime命令执行结果相同.
- 15:33:39:系统时间
- up 5:40:主机已运行时间
- 2 users:用户连接数(不是用户数,who命令)
- load average: 1.09, 1.04, 0.98:系统平均负载,统计最近1,5,15分钟的系统平均负载
Tasks:进程信息
- 123 total:进程总数
- 3 running:正在运行的进程数
- 120 sleeping:睡眠的进程数
- 0 stopped:停止的进程数
- 0 zombie:僵尸进程数
%CPU(s):CPU信息(当有多个CPU时,这些内容可能会超过两行)
- 42.1 us:用户空间所占CPU百分比
- 2.0 sy:内核空间占用CPU百分比
- 0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
- 49.2 id:空闲CPU百分比
- 0.0 wa:等待输入输出的CPU时间百分比
- 6.0 hi:硬件CPU终端占用百分比
- 0.7 si:软中断占用百分比
- 0.0 st:虚拟机占用百分比
KiB Mem:内存信息(与第五行的信息类似与free命令类似)
- 3780.9 total:物理内存总量
- 727.4 free:已使用的内存总量
- 668.8 used:空闲的内存总量(free + userd = total)
- 2384.7 buff/cache:用作内核缓存的内存量
KiB:swap信息
- 2048.0 total:交换分区总量
- 2046.0 free:已使用的交换分区总量
- 2.0 used:空闲交换分区总量
- 859.6 avail:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
-
PID:进程id
-
USER:进程所有者的用户名
-
PR:优先级
-
NI:nice值。负值表示高优先级,正值表示低优先级
-
RES:进程使用的、未被换出的物理内存的大小
-
%CPU:上次更新到现在的CPU时间占用百分比
-
%MEM:进程使用的物理内存百分比
-
TIME+:进程所使用的CPU时间总计,单位1/100秒
-
COMMAND:命令名/行
-
PPID:父进程id
-
RUSER:Real user name(看了好多,都是这样写,也不知道和user有什么区别,欢迎补充此处)
-
UID:进程所有者的id
-
VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
-
GROUP:进程所有者的组名
-
TTY:启动进程的终端名。不是从终端启动的进程则显示为?
-
NI:nice值。负值表示高优先级,正值表示低优先级
-
P:最后使用的CPU,仅在多CPU环境下有意义
-
TIME:进程使用的CPU时间总计,单位秒
-
SWAP:进程使用的虚拟内存中被被换出的大小
-
CODE:可执行代码占用的物理内存大小
-
DATA:可执行代码以外的部分(数据段+栈)占用的物理内存大小
-
SHR:共享内存大小
-
nFLT:页面错误次数
-
nDRT:最后一次写入到现在,被修改过的页面数
-
S:进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
-
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
-
Flags:任务标志