常用命令
apt安装软件包
在 Ubuntu上,安装软件通常使用 apt (全称 Advanced Packaging Tool) 软件包管理工具安装。
apt 能够从指定的 apt 源服务器自动下载安装包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
!!! 注意:视频上讲的要更换 apt 源服务器, 但是那是老版本的才需要。
Ubuntu 24 以后的新版本不需要这样的操作了。
系统会根据你的IP地址选择合适的源 ,目前国内使用的是清华大学的源。
apt 命令用法
- 安装软件
apt install package1
安装指定的安装包package1, 比如 apt install net-tools
- 列出所有安装信息
apt list --installed
显示所有已经安装的程序包
- 列出指定软件信息
apt list package1
显示指定程序包package1的安装情况
- 删除软件
apt remove package1
删除程序包package1
启动、重启、关闭服务
Linux上有些软件程序是以服务的形式安装的,比如 SSH 服务、 MySQL服务、 nginx服务等。
这些 软件 的启动、重启、关闭 要使用特殊的命令
在当前的 Ubuntu 系统上,使用命令 systemctl 来 启动、重启、关闭 服务。
比如,
要查看 服务 ssh 状态, 执行命令 systemctl status ssh
要启动 服务 ssh, 执行命令 systemctl start ssh
要重启 服务 ssh, 执行命令 systemctl restart ssh
要关闭 服务 ssh, 执行命令 systemctl stop ssh
打包与压缩
打包
Linux下打包的最常用命令是tar 命令,可将多个文件、目录打包到一个文件中。
- tar 命令打包
下面是使用tar命令打包的操作演示:
在当前工作目录下面创建3个文件,使用下列命令:
touch 123.txt 456.txt 789.txt
将这3个文件放到一个文件包files.tar,使用下列命令:
tar cvf files.tar 123.txt 456.txt 789.txt
也可以使用通配符,如 *.txt,这样的格式代表以txt结尾的文件
tar cvf files1.tar *.txt
tar命令同样可以打包目录,假设 当前目录下 byhy是一个子目录,byhy.txt是一个文件
tar cvf byhy.tar ./byhy byhy.txt
这个命令就把目录 byhy 和 文件 byhy.txt 都 打包到 文件 byhy.tar 中了。
- tar 命令解包
要 将 上面创建的 files1.tar 解压到当前目录,使用下列命令:
tar xvf files.tar
- 查看tar 包内容
如果只是想查看 上面创建的 files1.tar 内容,使用下列命令:
tar tvf files.tar
- 往tar 包中添加文件
如果想 在 files1.tar中 添加 新文件 newfile,使用下列命令:
tar rvf files.tar newfile
注意:tar命令只是把文件、目录打包到一个文件中。 并不会压缩文件
压缩
- gzip 压缩 和解压
gzip命令用于文件的压缩与解压缩,压缩后的文件名后缀为“.gz”
比如
要 压缩文件abc.txt ,执行命令
gzip abc.txt
这样就产生了一个名为 abc.txt.gz 的压缩后的文件
要 解压文件abc.txt.gz,执行命令
gzip -d abc.txt.gz
- gzip 和 tar 的联合使用
tar工具与gzip工具联合使用,实现打包并压缩、解压缩并解包功能
假设 在当前目录有如下3个文件 touch 111.txt 222.txt 333.txt
我们要,打包并压缩这3个文件,放到压缩包文件 byhy.tar.gz里面,使用下面命令:
tar zcvf byhy.tar.gz *.txt
解压缩并解包,使用下面命令:
tar zxvf byhy.tar.gz
● bzip2、zip 压缩、解压
bzip2 和 zip 也是常见的压缩解压工具, 使用方法和 gzip 类似
如下
---------------------------------------------
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
---------------------------------------------
.zip
解压:unzip FileName.zip
压缩:zip -r FileName.zip DirName
---------------------------------------------
注意:如果你的Linux上没有安装 bzip2、zip、unzip,可以执行命令 apt install bzip2 zip unzip 来安装
top 查看系统进程的动态运行情况
执行top命令可以查看 当前系统中,运行的进程的信息,比如
[root@localhost ~]# top
top - 14:01:00 up 15:52, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 2895572 total, 2507692 free, 118824 used, 269056 buff/cache
KiB Swap: 3145724 total, 3145724 free, 0 used. 2598756 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2041 root 20 0 0 0 0 S 0.3 0.0 0:03.60 kworker/0:3
1 root 20 0 127960 6580 4104 S 0.0 0.2 0:01.91 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.29 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kworker/u2:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:01.94 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dra+
11 root rt 0 0 0 0 S 0.0 0.0 0:00.48 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.01 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
● CPU 整体负载
在这行显示了 CPU 整体负载
Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
● 各个CPU 的负载(按键盘1,可以在整体cpu和所有cpu之间切换)
Cpu0 : 0.3%us, 0.3%sy, 0.0%ni, 97.7%id, 1.3%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
- 进程的CPU占用
缺省情况下,进程列表里就是按CPU占用率来排序的。
如果不是,可以按快捷键大写的P要求top按照CPU占用率来排序。(按b,再按x可以显示当前排序列)
- 整体内存使用量
KiB Mem : 2895572 total, 2507692 free, 118824 used, 269056 buff/cache
KiB Swap: 3145724 total, 3145724 free, 0 used. 2598756 avail Mem
注意:上面显示 2507692 free,并非只有 2507692 的内存可用。
因为 buffer 和 cache 部分的内存都是临时缓存用了, 其实也是可用的内存
实际可用的内存大概是 free + buffers + cached
- 各个进程对内存的占用(RES)
按快捷键大写的 M 可以 对进程列表按照内存使用率来排序
查看系统内存使用情况
free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 2827 115 2449 8 262 2538
Swap: 3071 0 3071
查看设置系统时间
date 可以用来显示或设定系统的日期与时间。
- 显示当前日期和时间
[byhy@localhost ~]$ date
Mon Nov 7 23:25:05 PST 2018
- 设定日期
# date -s 20161109
- 设定时间
# date -s 21:05:50
查看系统版本
- 执行命令
uname –a查看系统内核版本信息
# uname -a
Linux byhy-server 5.4.0-80-generic #90-Ubuntu SMP Fri Jul 9 22:49:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
说明 5.4.0 为Linux内核的版本。
- 执行命令
lsb_release -a查看Ubuntu系统版本信息
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
其中,显示Ubuntu发行版本为 20.04 版本
Python 包的安装
为什么不能直接pip安装?
很多刚从 Windows 或者其他环境转到 Ubuntu/Debian 的开发者会碰到这个问题。
输入 python3 没问题,但一敲 pip 就会报错找不到命令。
在较新的 Ubuntu/Debian 版本(如 Debian 12 及以上)中,如果你尝试在全局环境运行 pip,系统甚至会直接弹出一个 EXTERNALLY-MANAGED 的报错拦截你。这是 Python 官方为了保护 Linux 发行版而推出的 PEP 668 规范,强制隔离系统 Python 环境和用户开发环境。
这是出于对系统稳定性和包管理哲学的严谨考虑。主要有以下2个原因:
✳️ 1. 著名的“系统级死锁”风险(包管理冲突)
Ubuntu/Debian 系统自身(比如桌面环境、系统工具、图形界面包管理器)有很多关键组件是用 Python 写的。
- 如果 Ubuntu/Debian 预装了
pip,用户很容易习惯性地使用sudo pip install some-package来安装第三方库。 pip会直接把库安装到系统全局目录(如/usr/lib/python3/dist-packages)。- 这极有可能覆盖掉 Ubuntu/Debian 系统自带的、经过严格测试的同名 Python 库。一旦版本不兼容,轻则某个系统工具打不开,重则整个系统直接崩溃或无法开机。
✳️ 2. “一切皆由 APT 管理”哲学
在 Ubuntu/Debian 的世界观里,系统里所有的软件、库、依赖,都应该由系统的包管理器 APT 统一记录和分发。
- 如果你用 APT 安装了一个 Python 库,APT 会记录它。
- 如果你同时用
pip去修改,APT 就无法追踪这些变化。这种“多头管理”在软件卸载或升级时会引发灾难性的依赖冲突(Dependency Hell)。
应该怎么安装Python 库
Ubuntu/Debian 官方推荐你通过以下两种标准方式来解决:
✳️ 方案 A:通过 APT 安装(适合需要全局使用的工具)
Ubuntu/Debian 官方其实把 常用的 Python 库 都打包成了自己的系统包,命名规则通常是 python3-加库名。
# 比如你想用 venv 库,直接用系统的 APT 安装:
sudo apt update
sudo apt install python3-venv -y
✳️ 方案 B:使用虚拟环境(官方最推荐的开发方式)
如果你是要自己写代码、做开发,正确的姿势是为每个项目建立独立的虚拟环境,这样你想怎么用 pip 就怎么用,完全不会影响系统。
# 1. 首先,你需要 APT 全局安装虚拟环境工具 venv,前面说过
sudo apt install python3-venv -y
# 2. 在你的项目目录下创建一个虚拟环境(名字叫 myenv)
python3 -m venv myenv
# 3. 激活这个虚拟环境
source myenv/bin/activate
# 4. 此时你的终端前面会多一个 (myenv),现在你可以安全地使用 pip 了!
pip install django
在虚拟环境激活的状态下,pip 会把库安装在当前目录的 myenv 文件夹里,跟干净的 Debian 系统互不干扰。开发完成后,输入 deactivate 就能退出虚拟环境。
如果你执意要 在全局环境使用 pip 来安装 Python 包,需要先取消 EXTERNALLY-MANAGED 的限制,
执行下面命令,取消 EXTERNALLY-MANAGED
mv /usr/lib/python3.XX/EXTERNALLY-MANAGED /usr/lib/python3.XX/EXTERNALLY-MANAGED.old
这个命令里面的 python3.XX 换成你Linux系统上实际的 Python 版本号,比如 python3.14
!!!注意:我们不建议这么做。
作业和练习
请使用 root 账号本机直接登录登录 Linux,依次执行下面的操作
-
root 账号本机直接登录 Linux,根据你Linux主机的版本,使用适当的命令 关闭,启动,重启 sshd服务。
看看关闭后,远程PuTTY登录是否中断了连接。再次启动sshd服务后,远程PuTTY是否可以重新登录。
-
使用命令,查看当前系统中CPU占用率最高的5个进程,再查看内存占用最高的5个进程
-
在网上查询如何 使用 apt 方式安装 vim,进行操作。安装好以后,执行vim,确保安装成功。
-
查看当前主机的时间,和你手机的时间是否一致, 再使用命令,把当前系统的时间调整和手机时间一模一样。
-
查看你的CentOS Linux系统的 版本号 和内核版本号。