目 录CONTENT

文章目录

ubuntu 快速入门

Administrator
2025-06-07 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

1.下载 ubuntu 和 vmware

系统下载

https://cn.ubuntu.com

https://releases.ubuntu.com

虚拟机下载

https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html

2.使用 vmware 安装 ubuntu

处理器数量&每个处理器的内核数量

​ 在VMWare中设置了"处理器数量"为2, "每个处理器的内核数量"为2, 则意味着虚拟机将拥有两个虚拟CPU,

​ 每个虚拟CPU具有2个虚拟内核, 总共虚拟内核数量为2*2=4

​ 这里的2个CPU指的是2个虚拟的CPU, 而不是物理CPU. 这两个虚拟CPU各自拥有2个虚拟内核,

​ 总共是4个虚拟内核. 所以这个配置并不能直接等同于4个物理CPU或者2个物理CPU+2个超线程技术

​ 桥接模式

​ 在桥接模式下, 虚拟出来的操作系统就像是局域网中的一台独立的主机, 它可以访问网内任何一台机器

​ 主机网卡和虚拟网卡的IP地址处于同一个网段, 子网掩码、网关、DNS等参数都相同

​ NAT模式

​ 使用NAT模式网络连接时, 会在主机上建立单独的专用网络, 虚拟机不能直接和其他计算机进行通信,

​ 只能通过宿主机作为中介来进行通信

sudo apt update 和 sudo apt upgrade

​ sudo apt update 用于更新系统中可用软件包的列表, 不会安装或删除任何软件包, 只是更新软件包列表

​ sudo apt upgrade 用于升级系统中已经安装的软件包到最新版本

​ 因此, 通常先执行 sudo apt update 命令来获取最新的软件包列表, 再执行 sudo apt upgrade

3.文件和目录的创建、删除、移动、复制、重命名

pwd (print working directory): 显示当前工作目录

ls (list): 列出当前目录下的文件和子目录

​ ls

​ ls -l 按照长格式(long format)显示文件信息

mkdir (make directory): 创建一个新目录

​ 创建单个目录

​ mkdir web

​ 创建多个目录

​ mkdir web test

​ 创建多级目录 [p:parents 父级目录] -p表示创建指定的目录,并自动创建其中所需的所有缺少的父级目录

​ mkdir -p web/test

cd (change directory): 切换目录

​ cd web

​ cd ../

​ cd /home/david/web

​ 注

​ 相对路径是以 当前目录"./" 为基准的路径, 是从当前目录到目标文件或目录的路径. 如 ./web/test.txt 表示当前目录下的 web 目录中的 test.txt 文件

​ 相对路径中 "./" 表示当前目录, "../" 表示上一级目录

​ 绝对路径是相对于系统 根目录"/" 的完整路径. 如 /home/david/web

touch 创建空文件

​ 创建单个空文件

​ touch web.txt

​ 创建多个空文件

​ touch demo.txt test.txt

打印输出文本

​ echo "dengruicode.com"

向文件中添加一行文字 [ >> web.txt 将打印输出的文本 追加 到 web.txt 文件末尾, 若文件不存在, 则会创建该文件 ]

​ echo "dengruicode.com" >> web.txt

​ 注

​ >符号 是重定向输出 [ > 会覆盖已有的文件, >> 则会保留原来文件的内容, 在文件末尾追加内容 ]

cat 显示文件内容

​ cat web.txt

tail 从文件末尾显示指定数量的行

​ 默认显示文件的最后 10 行

​ tail web.txt

​ 显示文件的最后 1 行

​ tail -n 1 web.txt

head 从文件开头显示指定数量的行

​ 默认显示文件的前 10 行

​ head web.txt

​ 显示文件的前 1 行

​ head -n 1 web.txt

cp (copy): 复制

​ 将文件复制到另一个目录中

​ cp web.txt /home/david/web

​ cp /home/david/web.txt /home/david/web

​ 将文件复制到另一个目录中并重命名

​ cp /home/david/web.txt /home/david/web/newWeb.txt

​ 将目录复制到另一个目录中 [r:recursive 递归] -r表示复制整个目录树的内容

​ cp -r /home/david/test/ /home/david/web/

mv (move): 重命名或移动

​ 文件

​ 重命名文件

​ mv web.txt newWeb.txt

​ 移动文件

​ mv newWeb.txt /home/david/web

​ 移动文件并重命名

​ mv newWeb.txt /home/david/web/test.txt

​ 目录

​ 重命名目录

​ mv web newWeb

​ 移动目录

​ mv newWeb /home/david/test

​ 移动目录并重命名

​ mv newWeb /home/david/test/demo

rm (remove): 删除文件或目录

​ 删除单个文件

​ rm newWeb.txt

​ 删除多个文件

​ rm demo.txt test.txt

​ 删除目录 [r:recursive 递归] -r表示删除此文件夹和其子文件夹中的所有文件和目录

​ rm -r web

4.apt 安装 openssh 和远程连接 ubuntu

Ubuntu

​ ip addr

​ #安装 openssh-server

​ sudo apt install openssh-server

​ Windows

​ ping 192.168.1.22

​ MobaXterm 下载

https://mobaxterm.mobatek.net

​ 注

​ apt(Advanced Package Tool) 用于安装、升级、删除和查询软件包

​ ssh(Secure Shell) 是一种安全的远程登录协议

5.vim 编辑器

安装 [vim 是 vi 的增强版, 增加了许多功能和特性, 如语法着色、自动补全、多窗口编辑、插件支持等]

​ sudo apt install vim

​ vim test.txt 使用 vim编辑器 打开 test.txt [若打开后异常退出(ctrl+z),可手动删除交换文件 rm -rf .test.txt.swp]

​ i 进入编辑模式 [i:insert 插入]

​ Esc 退出编辑模式,进入命令模式

​ 命令模式

​ 查找 /字符串 回车

​ 向下翻一页 ctrl+f [f:forward 向前]

​ 向上翻一页 ctrl+b [b:backward 向后]

​ 跳转到文件开头 [[

​ 跳转到文件结尾 ]]

​ 跳转到指定行 示例:跳转到第10行 10gg [gg 是 go to line 的缩写形式 "跳转到指定的行"]

​ 0 移动到行首

​ $ 移动到行尾 [$:shift+4]

​ u 撤消

​ ctrl+r 重做

​ :set nu 显示行号 [nu 是 number 的缩写形式]

​ :%s/要被替换的文本/用来替换的文本/g

​ 示例 :%s/david/luna/g [将文档中所有的单词 david 替换成 luna]

​ %表示对整个文档进行操作 s表示替换操作 g表示全局替换,若不加g,则只会替换每行中第一个匹配到的文本

​ 退出

​ :q 退出不保存 [q:quit 退出]

​ :q! 强制退出不保存

​ :w 保存文件 [w:write 写入]

​ :wq 保存退出

6.在文件中查找指定的字符串 grep

grep(Global Regular Expression Print[全局正则表达式打印]) 使用正则表达式来搜索文本

​ 在单个文件中查找指定的字符串

​ grep david web.txt

​ 在 web.txt 文件中查找包含 david 字符串的所有行并打印出来

​ 在单个文件中查找指定的字符串 [行号] -n 的全称是 "line-number" 表示输出匹配行的行号

​ grep -n david web.txt

​ 在单个文件中查找指定的字符串 [忽略字母大小写] -i 的全称是 "ignore-case" 表示忽略字母的大小写

​ grep -i david web.txt

​ 在单个文件中查找指定的字符串 [忽略字母大小写并输出匹配行的行号]

​ grep -i -n david web.txt

​ grep -in david web.txt

​ 在单个文件中查找指定的字符串 -A 全称 "after-context", 表示上下文 [-A1 表示显示匹配行后1行的内容]

​ grep -n -A1 davidjobs web.txt

​ 在单个文件中查找指定的字符串 -B 全称 "before-context", 表示上下文 [-B1 表示显示匹配行前1行的内容]

​ grep -n -B1 davidjobs web.txt

​ 在单个文件中查找指定的字符串 -C 全称 "context", 表示上下文 [-C1 表示显示匹配行上下各1行的内容]

​ grep -n -C1 davidjobs web.txt

​ grep -nC1 davidjobs web.txt

​ 在多个文件中查找指定的字符串

​ grep david web.txt web2.txt

​ 在 web.txt web2.txt文件中查找包含 david 字符串的所有行并打印出来

​ 在多个文件中查找指定的字符串 [全词匹配] -w 的全称是 "word-regexp", 表示使用全词匹配, 即只有匹配到整个单词才算匹配成功

​ grep -w david web.txt web2.txt

7.切换到 root 用户

在 Ubuntu 系统中, root 用户没有设置默认密码

​ sudo passwd root [dengruicode.com]

​ 更改 root 用户的密码

su - root

​ 将当前用户临时切换到 root 用户 [su:switch user]

​ exit

​ 退出当前的 shell 环境或终端

​ 退出当前的 shell 环境: 结束当前Shell进程并返回到上一级的Shell环境或用户桌面

​ 可以类比为打开了多个程序窗口, 当你关闭一个窗口时, 并没有关闭电脑或者操作系统, 而是回到了之前的工作空间

​ 注

​ shell 是一个命令行解释器, 负责接收和解析用户通过终端输入的命令

​ 每当用户在终端中输入一条命令, shell 会立即将其 "翻译" 成操作系统可以理解的指令

​ 终端 是一个提供命令输入和输出环境的程序, 可以把它看作是一个窗口, 让用户可以看到操作系统的反馈

​ 而 shell 则是这个窗口中的工具, 帮助用户向操作系统发出指令

​ su root

​ 将当前用户临时切换到 root 用户, 但不会切换当前用户的环境变量和工作目录,

​ 当前用户的环境并不完全适合作为 root 用户来运行, 因为可能会出现一些权限问题

​ su - root

​ 将当前用户临时切换到 root 用户, 同时切换当前用户的环境变量和工作目录

​ 建议使用 su - root 命令来切换到 root 用户, 以确保当前用户的环境变量和工作目录

​ 与 root 用户的环境变量和工作目录保持一致, 避免出现不必要的问题

​ 在 linux 系统中, 用户的系统设置通常是独立的, 每个用户都有自己的配置文件和环境变量

​ 当使用 su - root 命令临时切换到 root 用户后, 可以执行一些需要 root 权限的操作, 比如:修改系统设置

​ 修改的设置只会影响当前 root 的用户环境, 不会影响其他用户的系统设置

​ 当你退出 root 用户环境后, 这些操作将不会对其他用户或会话产生影响

8.添加、删除用户

su - root 切换到root用户

​ #当创建一个新用户账户时, 系统都会在 /home 目录下自动创建与该用户账户同名的文件夹

​ adduser luna 创建luna用户 [ ls /home 查看该系统上所有已创建用户的主目录 ]

​ deluser luna 删除luna用户 [ rm -r /home/luna 删除luna用户的主目录 ]

​ deluser --remove-home luna 删除luna用户及其相关文件

​ passwd luna 更改用户密码

​ 注

​ 报错 userdel: user luna is currently used by process 4857

​ 解决

​ ps -f 显示当前终端会话中运行的进程的详细信息

​ UID PID PPID C STIME TTY TIME CMD

​ root 1 0 0 17:29 ? 00:00:03 /sbin/init splash

​ root 2 0 0 17:29 ? 00:00:00 [kthreadd]

​ ......

​ UID (User ID) 进程用户ID

​ PID (Process ID) 进程ID

​ PPID (Parent Process ID) 父进程ID

​ C(CPU) 进程占用 CPU 的百分比

​ STIME (Start Time) 进程启动的具体时间

​ TTY (Teletypewriter) 与进程交互的终端设备

​ TIME 启动进程花费的 CPU 时间

​ CMD 启动进程的命令

​ ps -ef 显示系统中所有正在运行的进程的详细信息

​ ps -ef | grep luna 显示系统中所有名称包含 luna 的进程的详细信息

​ ps[process status 进程状态]

​ -e[every 每个] 表示显示所有进程, 包括其他用户的进程

​ -f[full format 完整格式] 表示以完整格式显示进程信息

​ | 管道符号 将前一个命令的 "输出" 作为后一个命令的 "输入"

​ grep luna 会在 ps -ef 命令的 "输出" 中查找包含 luna 的进程信息

​ 强制结束 id=4857 的进程

​ kill -9 4857

​ -9 表示发送 SIGKILL[signal kill] 信号给进程 id 为 4857 的进程

​ SIGKILL 信号是一种强制停止进程的信号

9.用户组

查看用户的所属组信息

​ groups 显示当前用户的所属组信息

​ david adm cdrom sudo dip plugdev users lpadmin

​ david : 组名为 david 的用户组 [david 用户隶属于和自己同名用户组]

​ adm(Administrator) : 管理员用户组, 具有系统管理权限

​ cdrom(CD-ROM) : 光盘用户组, 具有读取光盘的权限

​ sudo(Super User Do) : 超级用户组, 具有执行系统管理任务的权限

​ dip(Device Interface) : 接口用户组, 具有配置网络接口的权限

​ plugdev(Plug-in Device) : 设备插件用户组, 具有管理设备插件(如声卡、显卡等)的权限

​ users(Users) : 普通用户组, 不具有系统管理权限

​ lpadmin(Local Printer Administration) : 打印机管理用户组, 具有管理打印机的权限

​ groups david [查看 david 用户的所属组信息]

​ david : david adm cdrom sudo dip plugdev users lpadmin

​ david 当前登录用户的用户名是 david

​ david 组名为 david 的用户组

​ groups root

​ root : root

​ root 用户隶属于 root 组, root 组被赋予了最高的权限, 允许其成员访问系统中的所有资源

​ 查看所有用户组的信息

​ cat /etc/group

​ /etc/group 文件的每行格式是 group_name:x:GID:group members

​ group_name 表示用户组的名称

​ x 表示密码占位符, 密码是存储在/etc/shadow文件中

​ GID 表示组ID(GID), 用于唯一标识用户组

​ group members 表示该用户组的成员, 每个成员用逗号分隔

​ 列出包含 david 字符串的用户组的信息

​ grep david /etc/group

​ adm:x:4:syslog,david [表示名为adm的组, 组密码是x, 组ID是4, 组成员包括syslog和david]

​ cdrom:x:24:david [表示名为cdrom的组, 组密码是x, 组ID是24, 组成员包括david]

​ sudo:x:27:david [表示名为sudo的组, 组密码是x, 组ID是27, 组成员包括david]

​ dip:x:30:david [表示名为dip的组, 组密码是x, 组ID是30, 组成员包括david]

​ plugdev:x:46:david [表示名为plugdev的组, 组密码是x, 组ID是46, 组成员包括david]

​ users:x:100:david [表示名为users的组, 组密码是x, 组ID是100, 组成员包括david]

​ lpadmin:x:118:david [表示名为lpadmin的组, 组密码是x, 组ID是118, 组成员包括david]

​ david:x:1000: [表示名为david的组, 组密码是x, 组ID是1000, 没有其他组成员]

​ 查看用户 david 的用户ID和组ID

​ id david

​ uid=1000(david) gid=1000(david)

​ 组=1000(david),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),118(lpadmin)

创建测试用户

​ su - root 切换到root用户

​ adduser luna 创建luna用户

​ 创建一个名为 test 的用户组

​ groupadd test

​ 注

​ grep test /etc/group

​ test:x:1002:

10.文件和目录权限

创建目录

​ mkdir demo

​ 按照长格式(long format)显示文件信息

​ ls -l

​ drwxrwxr-x 2 david david 4096 11月 30 15:15 demo

​ d 表示目录(directory)

​ rwxrwxr-x 是目录的权限部分, 其中:

​ r(read) 表示读取权限, 允许用户列出目录中的文件列表

​ w(write) 表示写入权限, 允许用户对目录创建、删除、修改等

​ x(execute) 表示执行权限, 允许用户进入目录并访问其中的文件和子目录

​ rwx 是目录所有者(owner)的权限, 表示具有读取、写入和执行权限

​ rwx 是目录所属组(group)的权限, 表示具有读取、写入和执行权限

​ r-x 是其他用户(others)的权限, 表示只具有读取和执行权限

​ 2 是文件的硬链接数, 表示该目录有2个硬链接

​ 除了根目录(/)外, 每个目录至少包含2个目录项 . 和 ..

​ .(点) 表示当前目录

​ ..(点点) 表示上级目录

​ 创建软链接(符号链接)

​ ln -s /home/david/test.txt /home/david/symbolicLink.txt

​ 创建硬链接

​ ln /home/david/test2.txt /home/david/hardLink.txt

​ 实现方式:

​ 硬链接是指向文件索引节点的引用, 类似原始文件的别名,

​ 硬链接与原始文件共享同一个索引节点,在系统中可以被视为同一个文件.

​ 软链接是指向另一个文件或目录的路径, 类似Windows的快捷方式,

​ 软链接有自己的索引节点

​ 删除原始文件时:

​ 硬链接仍然存在, 因为它指向的是文件的索引节点

​ 软链接则会失效, 因为它指向的文件已不存在

​ david 是目录的所有者, 即创建该目录的用户

​ david 是目录的所属组, 即该目录所属的用户组

​ 4096 是文件的大小, 表示该目录占用的磁盘空间为 4096 字节

​ 11 月 30 15:15 是该目录最后一次被修改的日期和时间

​ demo 创建的目录

​ 文件权限

​ 示例

​ 创建空文件

​ touch test.txt

​ 按照长格式(long format)显示文件信息

​ ls -l

​ -rw-rw-r-- 1 david david 0 11月 30 14:58 test.txt

​ - 表示普通文件

​ rw-rw-r-- 是文件的权限部分, 其中:

​ r(read) 表示读取权限, 允许用户查看该文件

​ w(write) 表示写入权限, 允许用户对文件创建、删除、修改等

​ x(execute) 表示执行权限, 允许用户运行该文件

​ rw- 是文件所有者(owner)的权限, 表示具有读取和写入权限

​ rw- 是文件所属组(group)的权限, 表示具有读取和写入权限

​ r-- 是其他用户(others)的权限, 表示只具有读取权限

​ 1 是文件的硬链接数, 表示该文件有一个硬链接

​ 在默认情况下, 创建一个文件时, 系统通常会创建一个硬链接

​ david 是文件的所有者, 即创建该文件的用户

​ david 是文件的所属组, 即该文件所属的用户组

​ 0 是文件的大小, 表示该文件目前没有数据

​ 11 月 30 14:58 是该文件最后一次被修改的日期和时间

​ test.txt 创建的文件

11.设置文件或目录的权限 chmod

chmod(change mode 表示更改 change 文件模式 mode) 设置文件或目录的权限

​ 符号模式

​ u(user)所有者, g(group)所属组, o(others)其他用户

​ r(read)读取, w(write)写入, x(execute)执行

​ chmod u=r test.txt 设置 所有者u 具有 读取r 权限

​ chmod g=r test.txt 设置 所属组g 具有 读取r 权限

​ chmod o= test.txt 清空 其他用户o 权限

​ chmod a= web.txt 清空 所有用户a 权限 [a(all)所有用户]

​ 设置 所有者u和所属组g 具有 读取r和写入w 权限, 其他用户o 具有读取权限

​ chmod u=rw,g=rw,o=r test.txt

​ 移除 所有者u和所属组g 的 读取r和写入w 权限

​ chmod ug-rw test.txt

​ 为 所有者u 添加 读取r 权限

​ chmod u+r test.txt

​ 数字模式

​ r=4, w=2, x=1

​ 7(4+2+1) 可读r、可写w、可执行x

​ 6(4+2) 可读r、可写w

​ 5(4+1) 可读r、可执行x

​ 4 只读r

​ 3(2+1) 可写w、可执行x

​ 2 只写w

​ 1 只执行x

​ 0 没有任何权限

​ 设置 所有用户 具有 读取r、写入w、执行x 权限

​ chmod 777 test.txt

​ 设置 所有者 具有 读取r和写入w 权限, 所属组g和其他用户o 具有 读取r 权限

​ chmod 644 test.txt

​ 递归地将目录demo及其子目录下的所有文件的权限设置为777 [-R:recursive 递归]

​ sudo chmod -R 777 demo

12.更改文件或目录的所有者和所属组 chown 和 chgrp

su - root 切换到 root 用户

​ chown(change owner) 更改文件或目录的所有者

​ 将 test.txt 文件的所有者更改为 luna 用户

​ chown luna test.txt

​ 将 web 目录的所有者更改为 david 用户

​ chown david web

​ 将 web 目录及其包含的所有文件和子目录的所有者更改为 david 用户

​ [-R:recursive 递归]

​ chown -R david web

​ chgrp(change group) 更改文件或目录的所属组

​ 将 test.txt 文件的所属组更改为 luna 组

​ chgrp luna test.txt

​ 将 web 目录的所属组更改为 david 组

​ chgrp david web

​ 注

​ 将目录 web 的所有者更改为 luna 用户,所属组更改为 root 组

​ chown luna:root web

13.日期和时间

显示当前日期、时间和时区

​ date

​ 2023年 12月 04日 星期一 16:15:18 CST

​ CST(China Standard Time) 表示中国标准时间的时区缩写

​ 日期格式化

​ 年(Year)、月(Month)、日(Day) YYYY-MM-DD

​ date +%Y-%m-%d

​ 2023-12-04

​ 简化

​ date +%F

​ 2023-12-04

​ 时(Hour)、分(Minute)、秒(Second) HH:MM:SS

​ date +%H:%M:%S

​ 16:15:18

​ 简化

​ date +%T

​ 16:15:18

​ 年、月、日、时、分、秒 YYYY-MM-DD HH:MM:SS

​ date +"%Y-%m-%d %H:%M:%S"

​ 2023-12-04 16:15:18

​ 简化

​ date +"%F %T"

​ 2023-12-04 16:15:18

​ 注

​ 错误示范

​ echo date +"%F %T" >> log.txt

​ 正确示范

​ echo date +"%F %T" >> log.txt

​ echo $(date +"%F %T") >> log.txt

​ 反引号` 和 $() 都可以用来执行命令或表达式的值

​ $()不仅可以引用命令的输出, 还可以引用变量的值、命令的参数等

14.前台和后台运行 shell 脚本

shell 是一个命令行解释器, 负责接收和解析用户通过终端输入的命令

​ 每当用户在终端中输入一条命令,shell 会立即将其 "翻译" 成操作系统可以理解的指令

​ 终端 是一个提供命令输入和输出环境的程序,可以把它看作是一个窗口,让用户可以看到系统的反馈

​ 而 shell 则是这个窗口中的工具,帮助用户向操作系统发出指令

​ #!/bin/bash 是脚本的头文件声明,指定使用 bash 解释器来执行后续的脚本代码

​ 前台运行 Shell 脚本

​ 1.通过 bash 解释器来执行

​ bash demo.sh

​ 注

​ 显示文件的最后 3 行

​ tail -n 3 time.txt

​ 2.直接运行脚本

​ ./demo.sh

​ 注

​ 添加执行权限

​ chmod u+x demo.sh

​ 后台运行 Shell 脚本

​ \1. &符号 表示在后台运行, 关闭终端后, 会结束进程

​ bash demo.sh &

​ 注

​ ps -f 显示当前终端会话中运行的进程的详细信息

​ ps[process status 进程状态]

​ -f[full format 完整格式] 表示以完整格式显示进程信息

​ #终止一个正在运行的进程

​ kill 3244

​ \2. nohup(no hang up 不挂断) 关闭终端后, 进程仍然能够在后台运行

​ nohup bash demo.sh &

​ 注

​ ps -ef 显示系统中所有正在运行的进程的详细信息

​ ps -ef | grep demo.sh 显示系统中所有包含 demo.sh 的进程的详细信息

​ -e[every 每个] 表示显示所有进程, 包括其他用户的进程

​ | 管道符号 将前一个命令的 "输出" 作为后一个命令的 "输入"

​ grep demo.sh 会在ps -ef命令的 "输出" 中查找包含demo.sh的进程信息

15.查看进程信息 ps

进程是指在计算机中正在运行的程序

ps (Process Status) 进程状态 显示当前终端会话中运行的进程信息

ps -f 显示当前终端会话中运行的进程的详细信息

​ UID PID PPID C STIME TTY TIME CMD

​ root 1 0 0 17:29 ? 00:00:03 /sbin/init splash

​ root 2 0 0 17:29 ? 00:00:00 [kthreadd]

​ ......

​ UID (User ID) 进程用户ID

​ PID (Process ID) 进程ID

​ PPID (Parent Process ID) 父进程ID

​ C(CPU) 进程占用 CPU 的百分比

​ STIME (Start Time) 进程启动的具体时间

​ TTY (Teletypewriter) 与进程交互的终端设备

​ TIME 启动进程花费的 CPU 时间

​ CMD 启动进程的命令

​ ps -ef 显示系统中所有正在运行的进程的详细信息, 包括系统进程和用户进程

​ ps -ef | grep demo.sh 显示系统中所有名称包含 demo.sh 的进程的详细信息

​ ps[process status 进程状态]

​ -e[every 每个] 表示显示所有进程, 包括其他用户的进程

​ -f[full format 完整格式] 表示以完整格式显示进程信息

​ | 管道符号 将前一个命令的 "输出" 作为后一个命令的 "输入"

​ grep demo.sh 会在 ps -ef 命令的 "输出" 中查找包含 demo.sh 的进程信息

​ ps -u 显示当前终端会话中 当前用户 正在运行的进程信息

​ USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

​ david 3271 0.0 0.1 19696 5120 pts/0 Ss 10:51 0:00 -bash

​ david 3717 0.0 0.0 18568 3456 pts/0 S 10:56 0:00 bash demo.sh

​ david 3725 0.0 0.0 16920 1920 pts/0 S 10:56 0:00 sleep 3

​ david 3728 0.0 0.1 22716 4864 pts/0 R+ 10:56 0:00 ps -u

​ USER 用户名

​ PID (Process ID) 进程ID

​ CPU CPU使用率

​ MEM (Memory) 内存使用率

​ VSZ (Virtual Size) 虚拟内存大小(以KB为单位)

​ RSS (Resident Set Size) 常驻内存大小(以KB为单位)

​ TTY (Teletypewriter) 与进程交互的终端设备

​ STAT (State) 进程状态

​ START 进程启动时间

​ TIME 启动进程花费的 CPU 时间

​ COMMAND 启动进程的命令

​ ps -x 显示与终端相关的进程

​ ps -ux 显示终端会话中 当前用户 正在运行的进程信息

​ 注

​ 强制结束 id=4857 的进程

​ kill -9 4857

​ -9 表示发送 SIGKILL[signal kill] 信号给进程 id 为 4857 的进程

​ SIGKILL 信号是一种强制停止进程的信号

16.查看cpu、内存等系统信息

top 查看系统的实时信息,包括CPU占用率、内存使用、进程列表等

​ top - 13:42:36 up 57 min, 1 user, load average: 0.03,0.02,0.00

​ (13:42:36) 当前时间为13:42:36

​ (up 57 min) 系统运行了57分钟

​ (1 user) 1个登录用户

​ (load average: 0.03,0.02,0.00) 系统的负载平均值为0.03,0.02,0.00

​ 系统在过去的1分钟(0.03)、5分钟(0.02,)、15分钟内(0.00)的平均负载

​ 任务: 279 total, 1 running,278 sleeping, 0 stopped, 0 zombie

​ (279 total) 总共有279个进程

​ (1 running) 1个正在运行的进程数

​ (278 sleeping) 278个正在休眠的进程

​ (0 stopped) 0个停止的进程

​ (0 zombie) 0个僵尸进程

​ 僵尸进程 是指在进程已经结束运行但其相关资源

​ (如内存空间等)尚未被释放的情况下,该进程的状态,

​ 是一个已经死亡但仍然存在于系统中的进程

%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni,99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

​ (0.2 us)[user] 用户空间占用CPU的百分比为0.2%

​ 0.2 us 表示系统上有一些用户级任务正在运行,但它们对CPU的占用相对较低

​ (0.2 sy)[system] 系统空间占用CPU的百分比为0.2%

​ (0.0 ni)[nice] 调整过优先级的用户进程占用 CPU 的百分比为0.0%

​ nice 优先级调整值,用于调整进程的优先级

​ 当一个进程被赋予较高的nice值时,它将以较低的优先级运行,

​ 从而使其他进程能够获得更多的 CPU 资源

​ (99.6 id)[idle] 空闲时间占用CPU的百分比为99.6%

​ 99.6 id 表示 CPU 大部分时间处于空闲状态,说明系统负载较低

​ (0.0 wa)[wait] 等待I/O占用CPU的百分比为0.0%

​ I/O[Input/Output]操作 是指系统中的输入和输出操作,

​ 常见的 I/O 操作有:读取和写入文件、键盘输入、打印机输出等

​ 0.0 wa 表示 CPU 没有花费时间等待 I/O 操作,

​ 说明着当前系统的 I/O 操作比较高效,没有对CPU造成明显的阻塞,

​ 若wa的值较高,则说明 I/O 操作存在瓶颈

​ (0.0 hi)[hardware interrupt] 硬中断占用CPU的百分比为0.0%

​ 硬中断是由硬件设备(如键盘、鼠标等)发出的信号,

​ 会打断 CPU 正在执行的任务,使其跳转到中断处进行处理

​ 0.0 hi 表示没有硬中断发生

​ (0.0 si)[software interrupt] 软中断占用CPU的百分比为0.0%

​ 软中断是由软件程序发出的信号,会打断CPU正在执行的任务,

​ 使其跳转到中断处进行处理

​ 0.0 si 表示没有软中断发生

​ (0.0 st)[steal] 虚拟化占用CPU的百分比为0.0%

​ 0.0 st 表示没有虚拟机从物理机中窃取CPU时间,

​ 即虚拟化对 CPU 的占用为 0.0%

​ MiB Mem : 3870.3 total, 2357.1 free, 917.4 used, 838.1 buff/cache

​ MiB Mem[Megabytes of Memory] 内存的兆字节数

​ (3870.3 total) 总内存大小为3870.3 MiB

​ (2357.1 free) 空闲内存大小为2357.1 MiB

​ (917.4 used) 已使用的内存大小为917.4 MiB

​ (838.1 buff/cache) 缓冲和缓存区内存大小为838.1 MiB

​ MiB Swap: 3870.0 total, 3870.0 free, 0.0 used. 2952.8 avail Mem

​ MiB Swap[Megabytes of Swap] 交换空间兆字节数

​ 交换空间(Swap Space) 是系统中的虚拟内存技术,用于在物理内存不足时,

​ 将部分内存数据暂时存储到磁盘上

​ (3870.0 total) 总交换空间大小为3870.0 MiB

​ (3870.0 free) 空闲交换空间大小为3870.0 MiB

​ (0.0 used) 已使用的交换空间大小为0.0 MiB

​ (2952.8 avail Mem) 可用的物理内存大小为2952.8 MiB

​ 3870.0 free 表示交换空间完全空闲,没有被使用,

​ 说明系统目前没有内存压力,不需要将内存数据交换到磁盘上

​ 进程号 USER PR NI VIRT RES SHR %CPU %MEM TIME+ COMMAND

​ 2274 david 20 0 23132 5632 3456 R 1.3 0.1 1:06.52 top

​ 457 systemd+ 20 0 17200 7296 6528 S 0.3 0.2 0:37.21 systemd-oo+

​ 1137 gdm 20 0 4113984 204004 119936 S 0.3 5.1 0:27.26 gnome-shell

​ 1992 root 20 0 0 0 0 I 0.3 0.0 0:03.29 kworker/0:+

​ USER 用户名

​ PR(Priority) 优先级

​ NI(Nice) 优先级调整值,用于调整进程的优先级

​ VIRT(Virtual Memory) 虚拟内存大小

​ RES(Resident Memory) 物理内存大小

​ SHR(Shared Memory) 共享内存大小

​ %CPU(CPU Usage) CPU使用率

​ %MEM(Memory Usage) 内存使用率

​ TIME+(Time Elapsed) 进程使用的CPU时间

​ COMMAND 命令

​ 注

​ 在 top 命令的交互模式下,

​ 按键盘上 1键, 切换CPU显示模式, 显示每个CPU的使用情况

​ 按键盘上 大写字母M, 按照物理内存(RES)使用率对进程进行排序

​ 按键盘上 大写字母P, 按照CPU占用率对进程进行排序

​ 用来查看CPU占用率最高的进程

​ top -p 2555 查看PID为2555的进程的实时信息

​ p(process) 进程

​ free -m 以兆为单位显示内存的使用情况

​ -m 兆字节(MB)

​ total used free shared buff/cache available

​ 内存: 3870 911 2345 13 857 2959

​ 交换: 3869 0 3869

​ total 总内存大小

​ used 已使用的内存大小

​ free 空闲内存大小

​ shared 共享内存大小

​ buff/cache 缓冲和缓存区内存大小

​ available 可用的内存大小 = 空闲内存 + 缓冲和缓存区内存

​ 注

​ 虽然空闲内存为 2345 MB, 缓冲和缓存区内存为 857 MB,

​ 但实际可用的内存大小只有 2959 MB,

​ 这是因为还有其他一些内存区域被占用, 不能立即用于新的进程

17.root 用户 ssh 远程登录 ubuntu

/etc 目录用于存储系统的配置文件

​ ls /etc/ssh/

​ moduli sshd_config.d ssh_host_ecdsa_key.pub ssh_host_rsa_key.pub

​ ssh_config ssh_host_dsa_key ssh_host_ed25519_key ssh_import_id

​ ssh_config.d ssh_host_dsa_key.pub ssh_host_ed25519_key.pub

​ sshd_config ssh_host_ecdsa_key ssh_host_rsa_key

​ su - root

vim /etc/ssh/sshd_config

​ #PermitRootLogin prohibit-password

​ PermitRootLogin yes

​ systemctl status ssh 查看服务状态

​ systemctl restart ssh 重启服务

​ 注

​ ssh.service 是 openssh 的服务名称

18.压缩和解压

nginx

https://nginx.org/en/download.html

​ ubuntu

​ /usr 目录主要用来存储系统级别的二进制文件、库和文档

​ 可以被视为系统级目录

​ /usr/local 目录通常用来存储用户手动安装的软件

​ windows

​ C:\Windows 主要存储系统文件

​ C:\Program Files 目录通常用来存储用户手动安装的软件

ls /usr/local/

​ bin etc games include lib man sbin share src

​ 注

​ /usr/local/bin

​ bin(binary) 二进制文件

​ 存储可执行文件,即可以在命令行下直接运行的应用程序

​ /usr/local/etc

​ etc(etcetera) 表示"等等"

​ 存储本地安装的软件的配置文件

​ /usr/local/games

​ 存储游戏相关的文件

​ /usr/local/include

​ 存储C语言和其他编程语言的头文件(header files),

​ 这些文件包含了函数声明和宏定义等信息,用于编译应用程序

​ /usr/local/lib

​ lib(library) 库

​ 存储库文件,这些文件包含了常用的功能函数,可以被其他程序调用

​ /usr/local/man

​ man(manual pages)

​ 存储手册页,提供关于命令、库函数、配置文件等的详细说明

​ /usr/local/sbin

​ sbin(system binary) 系统二进制文件

​ 存储系统级别的可执行文件,通常是系统管理员才能运行的工具或服务

​ /usr/local/share

​ 存储共享文件,如字体、图标、文档等

​ /usr/local/src

​ src(source) 源代码

​ 存储软件的源代码,用于编译和修改软件

​ tar

​ 解压

​ tar -xf nginx-1.24.0.tar.gz

​ tar -xvf nginx-1.24.0.tar.gz

​ tar -xvzf nginx-1.24.0.tar.gz

​ tar -xvzf nginx-1.24.0.tar.gz -C /usr/local/src

​ 压缩

​ tar -cvzf nginx.tar.gz nginx-1.24.0

​ 注

​ -x(extract) 表示解压tar文件

​ -c(create) 表示创建一个新的tar文件

​ -v(verbose) 表示在解压过程中显示详细信息

​ -z 表示使用gzip解压缩,使用gzip会减少压缩文件体积

​ 以.gz结尾文件,会自动启用gzip

​ -f(file) 指定要解压的tar文件的路径

​ 告诉tar命令后面要跟一个文件名

​ -C(Change Directory) 解压到指定目录

​ zip

​ 解压

​ unzip images.zip

​ 压缩

​ zip -r img.zip images

​ 注

​ -r(recursive) 递归地压缩指定目录及其所有子目录和文件

19.安装和配置 nginx

创建工作目录

​ mkdir /usr/local/workspace

​ 切换到 nginx 目录

​ cd /usr/local/src/nginx-1.24.0

​ 配置

​ ./configure --prefix=/usr/local/workspace/nginx

​ 报错1

​ ./configure: error:

​ C compiler cc is not found

​ 安装 gcc(GNU Compiler Collection)

​ apt install gcc

​ 说明

​ gcc 由GNU开发的编译器,可以将源代码编译成可执行文件

​ apt 会分析依赖关系,并自动安装所有必要的软件包

​ gcc --version 查看 gcc 的版本

​ which gcc 查找系统中 gcc 可执行文件的路径

​ 报错2

​ ./configure: error:

​ the HTTP rewrite module requires the PCRE library

​ 安装 PCRE(Perl Compatible Regular Expressions)

​ apt install libpcre3 libpcre3-dev

​ 说明

​ PCRE 是一个用于正则表达式操作的库

​ 报错3

​ ./configure: error:

​ the HTTP gzip module requires the zlib library

​ 安装 zlib

​ apt install zlib1g-dev

​ 说明

​ zlib 是用于数据压缩的库

​ 编译和安装

​ make && make install

​ 报错

​ 找不到命令 "make"

​ 安装

​ apt install make

​ 查看 nginx 版本

​ /usr/local/workspace/nginx/sbin/nginx -v

​ 软连接

​ ln -s /usr/local/workspace/nginx/sbin/nginx /usr/bin/nginx

​ 说明

​ /usr/bin 目录用于存储系统提供的命令行工具,

​ 用户可以通过在终端中输入该命令的名称来执行

​ 查看 nginx 版本

​ nginx -v

​ 启动 nginx

​ nginx

停止 nginx

​ nginx -s stop

​ 说明

​ -s(signal)发送信号

​ 重新加载 nginx 配置文件

​ nginx -s reload

​ 说明

​ 平滑地重新加载配置,而不会中断正在进行的请求

​ ubuntu

http://127.0.0.1

​ windows

http://192.168.1.16

​ 查看 nginx 进程

​ ps -ef | grep nginx

​ 说明

​ 主进程 master process nginx

​ 工作进程 worker process

​ 工作进程是由主进程创建的

停止 nginx 服务

​ kill 87181

​ 注

​ nginx 目录说明

​ client_body_temp

​ 用于存储客户端发送的请求体(body)的临时文件

​ 如:上传的文件

​ fastcgi_temp

​ FastCGI进程的临时存储目录

​ logs

​ 用于存储 nginx 的日志文件

​ access.log 记录所有访问请求的日志

​ error.log 记录错误信息的日志

​ sbin

​ 包含 nginx 服务器的可执行文件

​ 如:启动、停止和重新加载

​ uwsgi_temp

​ uWSGI进程的临时存储目录

​ conf

​ 包含 nginx 的配置文件

​ html

​ 通常用于存储静态文件,如:html、css、图像等

​ proxy_temp

​ 代理服务器的临时存储目录

​ scgi_temp

​ SCGI进程的临时存储目录

20.使用 systemctl 命令控制 nginx 服务

systemd

​ 用于管理linux系统的初始化系统和服务管理器

​ systemctl

​ 是systemd的命令行工具,可以用来启动、停止服务等

​ 使用 systemctl 命令管理 nginx 服务

​ vim /usr/lib/systemd/system/nginx.service

​ [Unit]

​ Description=Nginx Web Server

​ After=network.target

​ [Service]

​ Type=forking

​ #ExecStart=/usr/local/workspace/nginx/sbin/nginx

​ ExecStart=/usr/bin/nginx

​ ExecReload=/usr/bin/nginx -s reload

​ ExecStop=/usr/bin/nginx -s stop

​ [Install]

​ WantedBy=multi-user.target

​ 注

​ [Unit]

​ Description=Nginx Web Server

​ 定义服务的描述信息

​ After=network.target

​ 指定在 网络服务 启动之后启动

​ [Service]

​ Type=forking

​ 设置了服务的类型为 forking,

​ 表示以子进程的方式运行服务

​ ExecStart=/usr/bin/nginx

​ 启动 nginx

​ ExecReload=/usr/bin/nginx -s reload

​ 重新加载 nginx 的配置

​ ExecStop=/usr/bin/nginx -s stop

​ 停止 nginx

​ [Install]

​ WantedBy=multi-user.target

​ 该服务在系统进入多用户模式时自动启动,

​ 在多用户模式下,可以有多个用户登录并使用该服务

systemctl 命令

​ 查看服务状态 systemctl status nginx

​ 启动 systemctl start nginx

​ 停止 systemctl stop nginx

​ 重新加载 systemctl reload nginx

​ 检查 nginx 服务是否已设置为开机自动启动

​ systemctl is-enabled nginx

​ 设置 nginx 服务开机自动启动

​ systemctl enable nginx

​ 禁止 nginx 服务开机自动启动

​ systemctl disable nginx

  • TypeScript

    TypeScript 快速掌握

    课堂·前端 (更新中)

  • Electron学习指南

    Electron 学习指南

    【免费】笔记

  • Koa2

    Koa2 快速掌握

21.安装和配置 mysql 允许远程连接

下载

https://dev.mysql.com/downloads/mysql

​ 切换到 src 目录

​ cd /usr/local/src

​ 解压

​ tar -xvf mysql-8.2.0-linux-glibc2.28-x86_64.tar.xz \

​ -C /usr/local/workspace

​ 说明

​ -C(change directory) 表示解压到指定目录

​ 切换到 workspace 目录

​ cd /usr/local/workspace

​ 目录重命名

​ mv mysql-8.2.0-linux-glibc2.28-x86_64 mysql

​ 切换到 mysql 目录

​ cd mysql

​ 创建一个名为 mysql 的用户组

​ groupadd mysql

​ 创建一个名为 mysql 的用户, 并将其添加到 mysql 用户组中

​ useradd -g mysql mysql

​ -g(primary group) 指定用户的主用户组

​ 查看用户 mysql 所属的所有用户组

​ groups mysql

​ 显示 mysql 目录的详细信息

​ ls -l /usr/local/workspace/mysql

​ 修改 mysql 目录的所有者和所属组

​ chown -R mysql:mysql /usr/local/workspace/mysql

​ 软连接

​ ln -s \

​ /usr/local/workspace/mysql/bin/mysqld \

​ /usr/bin/mysqld

​ 初始化 mysql 数据库

​ mysqld \

​ --initialize \

​ --user=mysql \

​ --basedir=/usr/local/workspace/mysql \

​ --datadir=/usr/local/workspace/mysql/data

​ 错误

​ error while loading shared libraries: libaio.so.1

​ 解决方法

​ apt install libaio1

​ libaio.so.1 是异步I/O库,

​ 允许应用程序进行非阻塞的磁盘读写操作

​ 非阻塞

​ 当调用某个函数或发出一个网络请求时,

​ 程序不会等待这个操作完成就继续执行其他代码

​ 临时密码

​ A temporary password is generated for

​ root@localhost: Tq6&)NF4jQa)

​ 配置 my.cnf

​ vim /etc/my.cnf

​ 启动 mysql

​ 方式1 mysqld

​ mysqld &

​ 错误

​ Could not create unix socket lock file

​ /var/lib/mysql/mysql.sock.lock

​ 解决方法

​ mkdir /var/lib/mysql

​ chmod 777 /var/lib/mysql

​ 说明

​ mysql.sock是数据库与客户端进行通信的套接字文件,

​ 用于在mysql客户端和服务器之间建立本地连接

​ /var/lib 目录用于存储系统和应用程序的数据文件

​ 方式2 mysqld_safe

​ 软连接

​ ln -s \

​ /usr/local/workspace/mysql/bin/mysqld_safe \

​ /usr/bin/mysqld_safe

​ # mysqld_safe --user=mysql &

​ mysqld_safe &

​ 说明

​ mysqld 直接启动 mysql 服务器

​ mysqld_safe 是一个封装了 mysqld 的脚本,

​ 在启动 mysqld 之前检查一些配置和环境变量,

​ 并在启动后监控 mysqld 的运行状态

​ 查看错误日志

​ tail error.log

​ 查找与 mysql 相关的进程

​ ps -aux | grep mysql

​ 软连接

​ ln -s \

​ /usr/local/workspace/mysql/bin/mysql \

​ /usr/bin/mysql

连接到 mysql 数据库

​ mysql -u root -p

​ 错误

​ Can't connect to local MySQL server

​ through socket '/var/lib/mysql/mysql.sock'

​ 解决方法1

​ mkdir /var/lib/mysql

​ chmod 777 /var/lib/mysql

​ 解决方法2

​ mysql -h 127.0.0.1 -u root -p

​ 设置 root 用户密码为 123456

​ ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

​ exit

​ 允许远程连接

​ USE mysql;

​ UPDATE mysql.user SET host = '%' WHERE User = 'root';

​ flush privileges;

​ exit

​ 软连接

​ ln -s \

​ /usr/local/workspace/mysql/bin/mysqladmin \

​ /usr/bin/mysqladmin

​ 关闭 mysql 数据库

​ mysqladmin -u root -p shutdown

​ 重启 mysql 数据库

​ mysqladmin -u root -p reload

​ 使用 systemctl 命令管理 mysql 服务

​ vim /usr/lib/systemd/system/mysql.service

​ systemctl 命令

​ 查看服务状态 systemctl status mysql

​ 启动 systemctl start mysql

​ 停止 systemctl stop mysql

​ 检查 mysql 是否已设置为开机自动启动

​ systemctl is-enabled mysql

​ 设置 mysql 开机自动启动

​ systemctl enable mysql

​ 禁止 mysql 开机自动启动

​ systemctl disable mysql

0

评论区