Linux指令
(https://www.bilibili.com/video/BV1ex411x7Em?p=40)
1.1 echo 文字内容
- echo 会在终端显示参数指定的文字, 通常会和 重定向 联合使用
- 可直接创建文件和内容(touch只能创建文件)
1.2 重定向 >> 和 >
- > 表示输出, 会覆盖文件原有的内容
- >> 表示追加, 将追加内容驾到文件末尾
1.3 管道 |
- Linux运行将一个命令的输出 通过管道 作为 另一个命令的输入
- 这里 | 的左右为两端, 左端塞东西(写), 右端取东西(读)
- more:分屏显示内容
- grep:在命令执行结果的基础上查询指定文本
远程管理常用命令
1 关机重启
shutdown 选项 时间
-r 重新启动
- shutdown命令可以安全关闭或者重启
- 不知道选项和参数, 默认表示1分钟后关闭电脑
- 远程维护服务器, 最好不要关闭系统, 应该重启系统
# 重启操作系统, now表示现在
shutdown -r now
# 在20:22 关机
shutdown 20:22
# 过十分钟关机
shutdown +10
# 取消关机计划
shutdown -c
2 查看或配置网卡信息
| 命令 | 作用 |
|---|---|
| ifconfig | 查看/配置计算机当前网卡配置信息 |
| ping ip地址 | 检测到目标的连接是否正常 |
- 网卡是一个专门负责网络通讯设备
- ip地址是设置在网卡上的地址信息
- 没太联网的电脑上都有ip地址, 是保证电脑之间正常通讯的重要设置
ifconfig | grep inet 查看网卡对应的 IP 地址
- ping 一般用于检测当前计算机到目标计算机之间的网络 是否通畅, 数值越大, 速度越慢
- ping 的工作原理类似于声纳,
- 可以使用ping检测计算机是否开着
- 原理: 网络上的技巧有唯一的IP地址, 给目标ip发一个数据包, 对方就要返回一个数据包, 根据返回数据包以及时间, 可以确定目标主机的存在
- Linux中大多数可以使用ctrl+c结束执行
3 远程登录和复制文件
3.1 ssh基础(重点)
在Linux中 SSH 是 非常常用 的工具, 通过 SSH 客户端 我们可以连接到运行了 SSH 服务器的远程计算机上
- SSH 客户端是一种使用 Secure Shell (SSH) 协议连接到远程计算机的软件程序
- SSH 是目前较为可靠, 专为远程登录会话和其他网络服务 提供安全性的协议
- 使用 SSH 协议 可以有效防止远程管理过程中的信息泄漏
- 通过SSH协议可以对所有传输的数据进行加密, 也能够防止DNS欺骗和IP欺骗
- SSH 的另一个有点事传输的数据事经过压缩的, 所以可以加快传输速度
1)域名和端口号
域名
- 由一串 用点分隔 的名字组成 e.g www.baidu.com
- 是 IP 地址的别名, 方便用户记忆
端口号
- IP 地址: 通过IP地址找到网络上的计算机
- 端口号: 通过端口号可以找到计算机上运行的应用程序
- SSH 服务器的默认端口号是22, 如果是默认, 在连接时可以省略
- 端口号列表
| 服务 | 端口号 |
|---|---|
| SSH 服务器 | 22 |
| Web 服务器 | 80 |
| HTTPS | 443 |
| FTP 服务器 | 21 |
2)SSH 客户端的简单使用
ssh [-p port] user@remote
- user 是在远程机器上的用户名, 如果不指定, 默认为当前用户
- remote 是远程机器的地址, 可以说 IP/域名, 或者别名
- port 是SSH Sever 监听的端口, 如果不指定, 就默认为22
- 使用 exit 推出当前用户的登录
- ssh 终端命令只能在Linux或者Unix系统下使用
- 在Windows系统中, 可安装Putty 或者 Xshell客户端
3.2 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
#加上一厂选项可以传送文件夹
#把当前目录下的demo文件夹复制到远程家目录下的Desktop
scp -r demo user@remote:Desktop
#把远程家目录下的Desktop 复制到当前目录下的demo文件夹
scp -r use r@remote: Desktop demo
| 选项 | 含义 |
|---|---|
| -r | 若给出的源文件是目录文件, 则scp将递归该目录下的所有子目录和文件, 目标文件必须为一个目录名 |
| -P | 若远程 SSH 服务器端口不是22, 需要进行更改 |
3.3 SSH 高级 (知道)
- 免密码登录
- 设置别名
⚠️有关SSH配置信息都保存在用户家目录下的.ssh目录下
1)免密码登录
配置公钥
ssh-keygen 可以生成SSH钥匙
上传公钥岛服务器
ssh-copy-id -p port user@remote, 远程服务器记住公钥
非对称加密算法:
- 使用 公钥 加密数据, 需要使用 私钥 解密
- 使用 私钥 加密数据, 需要使用 公钥 解密
用户 和 权限 的基本概念
1.1 基本概念
- 用户是Linux系统工作中重要的一环, 用户管理包括 用户 与 组 管理
- 在Linux 系统中, 不论是由本机或是远程登录系统, 美国系统都必须拥有一个账号, 并且对于不同的系统资源有不同的使用权限
- 在Linux 中, 可以指定每一个用户 针对不同的文件或者目录的不同权限
- 对 文件/目录 权限包括:
| 权限 | 缩写 | 数字代号 |
|---|---|---|
| 读 | r | 4 |
| 写 | w | 2 |
| 执行 | x | 1 |
1.2 组
- 为了方便用户管理, 提出了组的概念
- 实际应用中, 可以预先针对组设置好权限, 然后将不同的用户分到不同的组中, 从而不用一次为每一个用户设置权限
1.3 ls -l 扩展
ls -l 可以以列表的形式, 从左到右依次是:
- 权限, 第1个字符如果是d表示目录
- 硬连接数, 表示有多少种方式可以访问当前目录/文件
- 持有者, 家目录下文件/目录的持有者通常是当前用户
- 组, 在Linux中, 很多时候会出现组名和用户名相同的情况
- 大小
- 时间
- 名称
1.4 chmod (重要)
chmod +/-rwx 文件名/目录名
- chmod 可以修改 用户/组 对 文件/目录 的权限
1.5 超级用户
- Linux系统中的root账号通常用于系统的维护和管理, 对于操作系统的所有资源具有所有访问权限
- 在大多数版本的Linux中, 都不推荐直接使用root账号登录系统
- 在Linux安装的过程中, 系统会自动创建一个用户账号, 而这个默认的用户就称为“标准用户“
sudo
- su 是 substitute 的缩写, 表示使用另一个用户的身份
- sudo 用以其他身份来执行命令, 预设的身份为root
- 用户使用sudo时, 先输入密码, 有5分钟的有效期限
2 组的管理 终端命令
⚠️创建/删除组的终端命令都需要通过sudo执行
| 命令 | 作用 |
|---|---|
| groupadd 组名 | 添加组 |
| groupdel 组名 | 删除组 |
| cat /etc/group | 确认组的信息 |
| chgrp -R 组名 文件/目录名 | 修改文件/目录的所属组 |
- 组的信息保存在 /etc/group文件中
- /etc 目录时专门用来保存系统配置信息的目录
3 用户管理 终端命令
⚠️创建/删除组的终端命令都需要通过sudo执行
| 命令 | 作用 | 说明 |
|---|---|---|
| useradd -m -g 组 新建用户名 | 添加新用户 | -m 自动建立用户家目录 -g 指定用户所在的组, 否则建立一个同明明的组 |
| passwd 用户名 密码 | 设置用户密码 | 如果是普通用户, 直接用passwd可以直接修改自己的账户密码 |
| userdel -r 用户名 | 删除用户 | -r 会自动删除用户家目录 |
| cat /etc/passwd | grep 用户名 | 确认用户信息 | 新建用户后, 用户信息会保存在 /etc/passwd |
- 创建用户时, 如果忘记添加 -m 选项制定新的家目录 — 最简单方法就是删除用户, 重新创建
- 创建用户时, 默认会创建一个和用户名同名的组名
- 用户信息保存在 /etc/passwd 文件中
查看用户信息
| 命令 | 作用 |
|---|---|
| id [用户名] | 产看用户 UID 和 GID 信息 |
| who | 查看当前所有登录的用户列表 |
| whoami | 查看当前登录用户的账户名 |
passwd 文件
/etc/passwd 文件存放的是用户的信息, 由6个分号组成的7个信息
- 用户名
- 密码 (x, 表示加密的密码)
- UID (用户标识)
- GID (组标识)
- 用户全名或本地账号
- 家目录
- 登录使用的Shell, 就是登录之后使用的终端命令, ubuntu 默认 dash
usermod
- usermod 可以哦你过来设置 用户 / 附加组 和 登录 Shell
- 主组: 通常在新建用户时指定, 在etc/passwd的第4列GID对应的组
- 附加组: 在etc/group中最后一列表示该组的用户列表, 用于指定 用户的附加权限
⚠️ 设置了用户的附加组后, 需要重新登录才能生效
#修改用户的主组 (passwd 中的GID)
usermod -g 组 用户名
#修改用户的附加组
usermod -G 组 用户名
#修改用户登录 Shell
usermod -s /bin/bash
⚠️ 默认使用useradd 添加的用户时没有权限使用sudo以root的身份执行命令的, 可以使用以下命令, 将用户添加到sudo附加组中
usermod -G sudo 用户名
which 重要 (查看执行命令的所在位置)
which ls
#输出
#/bin/ls
- /etc/passwd 时用于保存用户信息的文件
- /usr/bin/passwd 是拥有修改密码的程序
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) 超级用户的一些管理程序
切换用户
| 命令 | 作用 | 说明 |
|---|---|---|
| su - 用户名 | 切换用户, 并且切换目录 | - 可以切换到用户家目录, 否则保持位置不变 |
| exit | 推出当前登录账户 |
- su 不接用户名, 可以切换到root, 不推荐, 不安全
修改文件权限
| 命令 | 作用 |
|---|---|
| chown | 修改拥有者 |
| chgrp | 修改组 |
| chmod | 修改权限 |
chmod -R 755 文件名| 目录名
- chmod 在设置权限时, 可以简单的使用三个数字分别对应 持有者, 组, 其他 用户的权限
⚠️常见数字组合 (u表示用户/g表示组/o表示其他):
- 777 ===> u=rwx, g=rwx, o=rwx
- 755 ===> u=rwx, g=rx, o=rx
- 644 ===> u=rw, g=r, o=r
系统信息相关的命令
- 方便通过远程终端维护服务器时, 查看服务器上当前 系统日期和时间 / 磁盘空间占用情况/ 程序执行情况
- 本小结学习的终端命令基本都是查询命令, 通过这些命令堆系统的资源使用情况有个了解
1.1 时间和日期
| 命令 | 作用 |
|---|---|
| cal | 查看日历, -y可以查看一年 |
| date | 查看系统时间 |
1.2 磁盘信息
| 命令 | 作用 |
|---|---|
| df -h | disk free 磁盘剩余空间 |
| du -h [目录名] | disk usage 目录下文件大小 |
- -h 以人性化的方式显示文件大小
1.3 进程信息
| 命令 | 作用 |
|---|---|
| ps aux | process status 查看进程状态 |
| top | 动态显示运行中的进程并且排序 |
| kill [-9] 进程代号 | 终止指定代号的进程, -9表示强制终止 |
⚠️ps 默认只会显示当前用户通过终端启动的应用程序
ps选项说明:
- a 显示终端上的所有进程, 包括其他用户的进程
- u 显示进程的详细状态
- x 显示没有控制终端的进程
⚠️使用kill命令时, 最好只终止当前用户开启的进程, 而不要终止root身份开启的进程, 否则可能导致系统崩溃
1.4 其他命令
查找文件
| 命令 | 作用 |
|---|---|
| find [路径] -name “*.py” | 查找指定路径下扩展名是 .py的文件, 包括子目录 |
- 如果省略路径, 表示在当前文件下查找
- 之前学习的通配符, 在find中可使用
软连接
| 命令 | 作用 |
|---|---|
| ln -s 被连接的源文件 连接文件 | 建立文件的软连接, 类似于快捷方式 |
- 没有 -s 建立的是硬连接文件(两个文件占用相同大小的硬盘空间, 工作中几乎不会建立文件 的硬连接)
- 源文件钥使用绝对路径, 不能使用相对路径, 这样方便移动链接文件后, 仍可以正常使用
- 在Linux中, 文件名和文件数据是分开储存的
- 在Linux中, 只有文件的 硬连接数==0 才会被删除
- 使用 ls -l 可以查看一个文件的硬连接的数量
- 在日常生活中, 几乎不会删除建立文件的硬连接
打包压缩
tar是linux中最常用的备份工具, 此命令可以把一系列文件打包到一个大文件中, 也可以吧一个包的大文件恢复成一系列文件
#打包文件
tar -cvf 打包文件.tar 被打包的文件/ 路径…
#解包文件
tar -xvf 打包文件.tar
| 命令 | 作用 |
|---|---|
| c | 生成档案文件, 创建打包文件 |
| x | 解开档案文件 |
| v | 列出归档解档详细过程, 显示进度 |
| f | 指定档案文件名称, f后面一定是.tar文件, 必须放在选项最后 |
| -C | 解压缩到指定目录, 压缩目录必须存在 |
- tar 只负责打包文件, 但是不压缩
- 用gzip压缩tar打包后的文件, 扩展名是 .tar.gz
- 在tar中, 使用 -z 选项可以直接调用gzip方便实现压缩和解压缩
- 用bzip2压缩后会有 .bz2
- 在tar中, 可以使用 -j 调用bzip2, 其他和gzip一样
软件安装和卸载 apt
#安装软件
$ sudo apt install 软件包
#卸载软件
$ sudo apt remove 软件名
#更新已经安装的包
$ sudo apt upgrade