0%

Linux Tutorial

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个信息

  1. 用户名
  2. 密码 (x, 表示加密的密码)
  3. UID (用户标识)
  4. GID (组标识)
  5. 用户全名或本地账号
  6. 家目录
  7. 登录使用的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