更新一篇超长的Linux操作系统的学习笔记,主要是一些概念和基本操作。认真学完的话,离大佬也是更近一步了

Linux操作系统概述

一:Linux操作系统概述

Linux操作系统介绍及作用

目前业界客户端大多采用Windows系统,而服务端大多数使用的是Linux,究其根源主要是开源免费,安全性高,支持多用户,支持关闭任意不需要的功能和对硬件资源要求低等因素。同时,Linux也是众多开源产品首先支持的平台,也是实际意义上的服务器和云平台的标准,包括众多安全设备,其内置的也是Linux操作系统(如防火墙,路由器,交换机,IDS和IPS,网闸等产品),对于网络安全的学习来说,掌握Linux操作系统起着至关重要的作用。

操作系统的作用

  • 五大基本功能
    • 进程和线程的管理
    • 存储管理
    • 文件管理
    • 设备管理
    • 用户接口
  • 三个作用
    • 资源的管理者
    • 向用户提供了一个服务
    • 对硬件机器的扩展

内核(Kernel)

内核是操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统的基本功能,是操作系统工作的基础。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

壳(Shell)

提供了命令接口,通俗点来说就是让用户直接操作内核的程序。通用的操作系统都要提供一个称为shell(外壳)的程序,用户使用这个程序来操作计算机系统进行工作。

应用程序(Application)

用户平时接触的程序。

Linux操作系统版本

Linux起源于Unix,因为开源免费的特性,吸引了很多厂商开发维护,渐渐形成了很多版本。

  • RedHat:RHEL(Red Hat Enterprise Linux)是商业版Linux系统,多用于企业生产环境,提供完善的商业支持,在性能、稳定性方面有保障。
  • Debian:Debian和Ubuntu是一个派系的,但界面可能没有Ubuntu那么华丽,比较稳定,适合用作服务器操作系统。Debian在开源圈子用得十分广泛,也有一大批开源爱好者活跃于其中。
  • 中科红旗:红旗Linux由北京中科红旗软件技术有限公司开发,包括桌面版、工作站版、数据中心服务器版、HA集群版和红旗嵌入式Linux等产品。红旗Linux是中国较大、较成熟的Linux发行版之一,2014年被大连五甲万京信息科技产业集团收购。
  • Ubuntu:Ubuntu界面比较华丽,包管理器很完善,社区也非常活跃,个人用户较多,从市面上看比较大众化。
  • CentOS:CentOS基于RedHat商业版系统的社区编译重发布版,完全开源免费,相较于其他一些免费的Linux发行版会更加稳定,因此一般企业里常用作服务器操作系统。
  • Fedora:Fedora与RedHat同属一个派系,背后的支撑企业也是红帽子公司。但Fedora是免费发行版,侧重于新技术的试验和加持,稳定性方面的考量较CentOS稍次要一些。
  • SUSE:SUSE背后有大公司支持,目前主要多用于企业用户。
  • Arch:Arch适合好奇心强的人尝鲜,官方Wiki做得好,AUR仓库繁荣,适合DIY玩家折腾,确实也吸引了不少粉丝。
  • Manjaro:Manjaro可看成是Arch Linux的衍生分支,包含了Arch的常见优点,但对用户更友好,注重体验和稳定性。Manjaro的安装和使用都比较方便,目前使用用户非常多。
  • Gentoo:Gentoo适合极客范化的折腾,也比较适合有特殊需要和特殊化定制的需求,总体来说比较小众。但用得很6的大佬们都说好,因为这些大佬们大多有系统洁癖,控制欲很强,什么都需要自己编译、自己定制,这个对他们来说简直就是天堂了。
  • Kali:Kali是一个面向安全的基于Debian的Linux发行版,预装了大量的安全软件。其主要功能有三个:数字取证、安全审计、渗透测试。Kali首先是一个操作系统,更确切地说是一个基于Linux kernel的操作系统,从BackTrack发展而来。而BT是2006年推出的一个用于渗透测试及黑客攻防的专用平台,基于Knoppix(Linux的一个发行版)开发。Backtrack从2006年的起始版本BackTrack v.1.0Beta开始,到2012年推出最终版本BackTrack 5 R3 release。之后,2013年offensive Security的Mati Aharoni和Devon Kearns基于Debian重新实现了BackTrack,新的产品命名为Kali,从此Kali成为BackTrack的后继者。

通常情况下,服务器端操作系统(Windows, Linux)不会安装GUI界面,只有一个内核加Shell,再加少量命令行。

二:Linux系统安装

这里以安装CentOS7为例,具体安装过程可参考以下链接:

三:使用XShell远程连接Linux

SSH协议介绍

SSH(Secure Shell)是安全外壳协议,是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。它通过在网络中创建安全隧道来实现SSH客户端和服务器之间的连接。SSH将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为所有操作系统的标准配置。

XShell使用

贴一篇参考文章: https://blog.csdn.net/weixin_47230291/article/details/126905158

在连接之前最好先配置一下要连接的Linux主机的IP。

Linux配置IP参考:https://blog.csdn.net/u010521062/article/details/114067036

进入XShell后点击新建,进行配置,就连接成功了。

SSH与SCP命令

  • SSH命令
    • Windows及Linux都自带了针对SSH远程连接的命令。如果电脑上没有安装XShell等工具,可以直接用系统自带的服务进行远程连接。
      • Windows连接:ssh -l 用户名 IPssh root@192.168.2.112,然后输入密码。
      • Linux连接:ssh root@192.168.2.112
  • SCP命令
    • 从Windows上传文件到Linux:scp F:\Photo\ico\1.ico root@192.168.2.112:/opt
    • 从Linux下载文件到Windows:C:\Users\Denny>scp root@192.168.112.225:/opt/test.html E:\

移动端SSH客户端工具

  • JuiceSSH
  • Termius

四:Linux系统操作

文件系统解读

在Linux下运行df -h命令,可以查看目前Linux中存在的硬盘分区情况及每个分区的磁盘使用情况。例如:

1
2
3
4
5
6
7
8
9
10
[root@mycentos mysql]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.5M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 39G 1.9G 37G 5% /
/dev/sda5 19G 33M 19G 1% /home
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 182M 0 182M 0% /run/user/0
  • filesystem:文件系统
  • size:分区大小
  • used:已使用空间
  • avail:剩余空间
  • use%:使用率百分比
  • mounted on:挂载到哪个目录上

对上述挂载目录的简单说明:

  • /dev:所有Linux系统使用的外部设备都以文件的形式存在这个目录中。
  • /dev/shm:存在于内存中,用于优化系统性能。该分区的大小通常是系统内存的一半大小,用于存储临时数据,速度比硬盘快。
  • /run:存放运行时数据,属于内核级文件。
  • /sys/fs/cgroup:存放关于运行过程中CPU、内存等资源的数据,属于内核级文件。
  • /:根目录,用于存储操作系统文件和其他用户数据。
  • /boot:存放内核和引导过程所需的文件。
  • /home:普通用户的根目录,类似Windows下的C:\Users目录。
  • /run/user/0:保存用户ID为0(通常是root用户)在运行过程中产生的数据。

Linux目录说明

根目录是整个系统最重要的目录,所有目录都由根目录衍生而来。根目录与开机、还原、系统修复有关,因此FHS(Filesystem Hierarchy Standard)要求根目录保持较小,应用程序安装的软件应避免与根目录放在同一个分区。

根据FHS标准,根目录下应包含以下子目录:

目录 应放置文件内容
/bin 存放单用户维护模式下可用的指令,供root和普通用户使用,如cat、chmod、chown、date、mv、mkdir、cp、bash等常用命令
/boot 存放开机所需的文件,包括Linux内核文件(如vmlinuz)和开机菜单及设置文件。若使用grub作为开机管理程序,则存在/boot/grub/目录
/dev 所有设备和周边硬件都以文件形式存在此目录中,如/dev/null、/dev/zero、/dev/tty、/dev/lp、/dev/hd、/dev/sd*等
/etc 存放系统主要配置文件,如用户账号密码文件、服务启动文件等。一般用户可查阅但只有root有修改权限。FHS建议不放置可执行文件于此目录。重要文件包括/etc/inittab、/etc/init.d/、/etc/modprobe.conf、/etc/X11/、/etc/fstab、/etc/sysconfig/等。重要目录有/etc/init.d/(所有服务的启动脚本)、/etc/xinetd.d/(super daemon管理服务设置文件)、/etc/X11/(X Window设置文件)
/home 系统默认的用户家目录。新增用户时,家目录默认在此创建。用~表示当前用户家目录,~guest表示用户名为guest的家目录
/lib 存放开机及/bin或/sbin目录下指令所需的函数库和内核模块。/lib/modules/存放内核相关模块(驱动程序)
/media 可移动设备(如软盘、光盘、DVD)的挂载点,常见挂载点如/media/floppy、/media/cdrom
/mnt 用于临时挂载额外设备,现代Linux中通常用于挂载可移动设备
/opt 第三方软件的安装目录。如KDE桌面管理系统或用户自行安装的软件可放在此目录
/root 系统管理员root的家目录,与根目录同分区,用于单用户维护模式下root用户操作
/sbin 存放系统设置指令,如fdisk、fsck、ifconfig、init、mkfs等,供root用户使用
/srv 网络服务启动后所需数据的存放目录,如WWW、FTP服务的数据
/tmp 供用户和程序临时存储文件的目录,任何用户均可访问,需定期清理。FHS建议开机时删除/tmp下的数据
/lost+found ext2/ext3文件系统格式下特有的目录,用于存放文件系统错误时的遗失片段
/proc 虚拟文件系统,存放内存中的数据,如系统核心、进程信息、硬件状态及网络状态。不占硬盘空间,常用文件如/proc/cpuinfo、/proc/dma、/proc/interrupts、/proc/ioports、/proc/net/*、/proc/meminfo
/sys 与/proc类似,也是虚拟文件系统,记录核心相关的信息,如已加载的核心模块和硬件装置信息。同样不占硬盘容量

通常,可以使用/opt/home目录,这两个目录由用户自由处理,不存在敏感文件,也可以将程序安装在/opt/目录下,默认情况下,程序安装路径会在/usr/bin/var目录下。

Linux的启动级别

Linux共有七个启动级别(0-6),使用init命令切换启动级别。语法为:init 启动级别号/etc/inittab文件用于设置默认启动级别。

启动级别说明:

级别号 级别名称 说明
0 停机模式 系统默认运行级别不能设置为0,否则无法正常启动,机器处于关机状态
1 单用户模式 具有root权限,用于系统维护,禁止远程登录,无网络功能,类似Windows的安全模式
2 多用户模式 无NFS和网络支持
3 完整多用户文本模式 有NFS和网络支持,登录后进入命令行界面,是企业中服务器通用的启动模式
4 未使用 保留,一般不用,特殊情况下可做其他用途,如笔记本电脑电池快没电时切换至此模式进行设置
5 图形化模式 登录后进入图形GUI界面,是Linux系统带GUI的默认启动模式
6 重启模式 默认运行级别不能设置为6,否则系统会无限重启,无法正常启动。运行init 6会使机器重启

Linux的关机与重启

命令实例 作用
reboot 重启
shutdown -r now 现在立刻重启
shutdown -r 11:30 等到11:30进行重启
shutdown -r +1 等一分钟后重启
halt 关机
shutdown -h now 现在立刻关闭系统
shutdown -h 11:30 等到11:30关闭系统
init 0 关机
init 6 重启

Linux常见命令使用

  • top命令:类似于Windows的任务管理器,可以查看CPU和内存使用情况,以及每个进程的资源消耗、进程ID等信息。按qCtrl+c退出。

  • ls命令:列出目录内容,可查看文件权限、目录信息等。

    1
    2
    3
    4
    5
    6
    7
    ls -a 列出目录所有文件,包含隐藏文件
    ls -A 列出除.及..的其它文件
    ls -r 反序排列
    ls -t 以文件修改时间排序
    ls -S 以文件大小排序
    ls -h 以易读大小显示
    ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
  • cd命令:切换当前目录至指定目录。

    1
    2
    3
    4
    cd / 切换到根目录
    cd /home 切换到home目录
    cd - 切换到上一次工作路径
    cd !$ 把上个命令的参数作为cd参数使用

    注:~代表当前登录用户的主目录。

  • pwd命令:查看当前工作目录路径。

    1
    2
    pwd 查看当前路径
    pwd -P 查看软链接的实际路径
  • mkdir命令:创建文件夹。

    1
    2
    3
    mkdir [选项] 目录名
    -m 对新建目录设置存取权限
    -p 可以创建多级目录,若路径中某些目录不存在,则自动创建
  • rm命令:删除文件或目录。

    1
    2
    3
    4
    rm [选项] 文件名
    -i 删除前逐一询问确认
    -f 即使文件为只读属性,也直接删除,无需确认
    -r 将目录及子目录中的文件一并删除
  • mv命令:移动文件或重命名文件。

    1
    2
    3
    4
    5
    6
    mv [选项] 源文件 目标文件
    -b 删除目标文件前创建备份
    -i 覆盖前询问
    -f 直接覆盖
    -n 不覆盖已有文件
    -u 仅在源文件较新或目标文件不存在时移动

    命令格式及运行结果:

    |命令格式|运行结果|
    |—-|—-|
    |mv source_file dest_file|将源文件重命名为目标文件|
    |mv source_file dest_directory|将文件移动到目标目录|
    |mv source_directory dest_directory|若目标目录存在,将源目录移动到目标目录中;若目标目录不存在,则将源目录重命名为目标目录|
    |mv source_directory dest_file|出错|

    示例:

    1
    2
    3
    mv aaa bbb 将文件aaa重命名为bbb
    mv info/ logs 将info目录移动到logs目录中(若logs不存在,则将info重命名为logs)
    mv /usr/runoob/* . 将/usr/runoob下的所有文件和目录移到当前目录
  • cp命令:复制文件或目录。

    1
    2
    3
    4
    cp [选项] 源文件 目标文件或目录
    -i 提示覆盖
    -r 复制目录及内容
    -a 保留文件时间属性

    示例:

    1
    2
    cp -ai a.txt test 复制a.txt到test目录下,保持原文件时间,若存在则提示覆盖
    cp -s a.txt link_a.txt 为a.txt创建符号链接link_a.txt
  • cat命令:连接文件并打印到标准输出设备。

    1
    2
    3
    4
    5
    6
    7
    8
    cat [选项] 文件名
    -n 显示行号
    -b 仅对非空白行显示行号
    -s 将连续多个空行压缩为一行
    -v 显示非打印字符
    -E 在行尾显示$
    -T 显示Tab为^I
    -A 等同于-vET

    示例:

    1
    2
    3
    cat -n textfile1 > textfile2 将textfile1的内容加上行号输出到textfile2
    cat -b textfile1 textfile2 >> textfile3 将textfile1和textfile2的内容加上行号(忽略空白行)追加到textfile3
    cat /dev/null > /etc/test.txt 清空/etc/test.txt文件内容
  • more命令:分页显示文件内容。

    常用参数:

    1
    2
    3
    4
    -n 定义屏幕大小为n行
    +/pattern 从每个文件显示前搜索该字符串,并从该字符串前两行开始显示
    -d 显示提示信息,禁用响铃
    -s 将连续多个空行显示为一行

    常用操作命令:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Enter 向下移动一行
    Ctrl+F 向下滚动一屏
    空格键 向下滚动一屏
    Ctrl+B 返回上一屏
    = 输出当前行的行号
    :f 输出文件名和当前行号
    V 调用vi编辑器
    !命令 调用Shell执行命令
    q 退出more

    示例:

    1
    2
    more +3 text.txt 显示文件中从第3行起的内容
    ls -l | more -5 通过管道使每次显示5行
  • less命令:与more类似,但可向前向后浏览。

    常用参数:

    1
    2
    3
    4
    -i 忽略搜索时的大小写
    -N 显示每行行号
    -o <文件名> 将less输出保存到指定文件
    -s 显示连续空行为一行

    搜索用户名常用命令:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /字符串 向下搜索
    ?字符串 向上搜索
    n 重复前一个搜索
    N 反向重复前一个搜索
    x 向后翻一页
    d 向后翻半页
    h 显示帮助界面
    Q 退出less
    u 向前滚动半页
    y 向前滚动一行
    空格键 向下滚动一行
    回车键 向下滚动一页

    示例:

    1
    2
    ps -aux | less -N 分页显示进程信息,并显示行号
    less 1.log 2.log 查看多个文件,使用n查看下一个,p查看前一个
  • head命令:显示文件开头内容,默认前10行。

    常用参数:

    1
    -n <行数> 指定显示的行数

    示例:

    1
    2
    3
    head 1.log -n 20 显示1.log文件的前20行
    head -c 20 log2014.log 显示1.log文件的前20字节
    head -n -10 t.log 显示t.log文件除最后10行外的内容
  • tail命令:显示文件末尾内容,默认最后10行,常用于查看日志。

    常用参数:

    1
    2
    -f 循环读取,用于动态查看日志更新
    -n <行数> 指定显示的行数

    示例:

    1
    2
    3
    tail -f ping.log 循环读取ping.log文件的更新
    ping 127.0.0.1 > ping.log & 将ping命令的输出重定向到ping.log文件并在后台运行
    tail -f 文本文件 表示通过流的方式实时查看最新的文件内容
  • whichwhereislocatefind命令:查找文件。

    • which:查找可执行文件的位置。
    • whereis:查找文件的位置,包括二进制文件、源代码文件、帮助文件等。
    • locate:基于数据库快速查找文件,数据库由updatedb更新。
    • find:在文件系统中查找文件,并可执行相关操作。

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    which ls 查找ls命令的可执行文件位置
    which which 查找which命令的可执行文件位置(可能不存在,因为which是内置命令)
    which cd 查找cd命令的位置(通常显示不存在,因为cd是shell内置命令)
    whereis locate 查找locate程序的二进制文件、源代码文件和帮助文件
    whereis -s locate 查找locate的源代码文件
    whereis -m locate 查找locate的帮助文件
    locate pwd 查找文件名中包含pwd的所有文件
    locate /etc/sh 查找/etc目录下以sh开头的文件
    locate -r '^/var.*reason$' 查找/var目录下以reason结尾的文件
    find /opt -perm 777 查找/opt目录下权限为777的文件
    find -size +1000c 查找大于1000字节的文件
    find -name '*.log' -exec rm -f {} \; 查找并删除当前目录及其子目录下所有以.log结尾的文件
  • chmod命令:更改文件或目录的访问权限。

    权限表示方法:

    • r:读权限,值为4
    • w:写权限,值为2
    • x:执行权限,值为1
    • -:无权限,值为0

    示例:

    1
    2
    3
    4
    chmod a+x t.log 为所有用户添加执行权限
    chmod u=r t.log 设置文件属主具有读权限
    chmod 751 t.log 设置属主具有读写执行权限,属组具有读执行权限,其他用户具有执行权限
    chmod u+r,g+r,o+r -R text/ 为text目录及其子目录中的所有文件添加读权限
  • tar命令:用于文件的打包和压缩。

    常用参数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    -c 创建新的压缩文件
    -f 指定压缩文件
    -r 追加文件到压缩文件
    -u 追加修改过的文件到压缩文件
    -x 解压文件
    -t 显示压缩文件中的内容
    -z 支持gzip压缩
    -j 支持bzip2压缩
    -v 显示操作过程

    示例:

    1
    2
    3
    4
    tar -cvf log.tar 1.log 2.log 将1.log和2.log打包成log.tar
    tar -zcvf /tmp/etc.tar.gz /etc 将/etc目录打包并使用gzip压缩,保存为/tmp/etc.tar.gz
    tar -ztvf /tmp/etc.tar.gz 查看压缩文件内容
    tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc 排除/home/dmtsai目录,打包压缩/home和/etc目录
  • chown命令:更改文件或目录的所有者和所属组。

    1
    2
    3
    chown [选项] 用户名:组名 文件名
    -c 显示更改信息
    -R 递归处理目录及其内容

    示例:

    1
    2
    3
    chown -c mail:mail log2012.log 更改log2012.log的所有者和组为mail,并显示更改信息
    chown -c :mail t.log 仅更改文件组为mail
    chown -cR mail: test/ 更改test目录及其子目录的所有者和组为mail
  • df命令:显示磁盘空间使用情况。

    1
    2
    3
    4
    5
    6
    7
    df [选项]
    -a 显示所有文件系统
    -h 以易读方式显示
    -i 显示inode信息
    -k 以KB为单位显示
    -l 仅显示本地文件系统
    -T 显示文件系统类型

    示例:

    1
    2
    df -l 显示本地文件系统的磁盘使用情况
    df -haT 以易读方式显示所有文件系统及其类型
  • du命令:查看文件或目录的磁盘使用情况。

    1
    2
    3
    4
    5
    6
    7
    8
    du [选项] 文件或目录
    -a 显示所有文件大小
    -k 以KB为单位显示
    -m 以MB为单位显示
    -g 以GB为单位显示
    -h 以易读方式显示
    -s 仅显示总计
    -c 显示总计

    示例:

    1
    2
    3
    4
    du -h scf/ 查看scf目录及其子目录的大小
    du -ah scf/ 查看scf目录中所有文件的大小
    du -hc test/ scf/ 查看test和scf目录及其子目录的大小,并显示总和
    du -hc --max-depth=1 scf/ 查看scf目录及其一级子目录的大小,并显示总和
  • ln命令:创建链接文件。

    链接类型:

    • 软链接:类似Windows快捷方式,可跨文件系统,可对不存在的文件创建,可对目录创建。
    • 硬链接:以文件副本形式存在,不占额外空间,不允许对目录创建,仅限同一文件系统。

    常用参数:

    1
    2
    -s 创建软链接
    -v 显示详细信息

    示例:

    1
    2
    3
    ln -sv source.log link.log 创建source.log的软链接link.log,并显示详细信息
    ln -v source.log link1.log 创建source.log的硬链接link1.log,并显示详细信息
    ln -sv /opt/soft/test/test3 /opt/soft/test/test5 创建目录的软链接
  • date命令:显示或设置系统日期和时间。

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    date +%Y%m%d --date="+1 day" 显示明天的日期
    date -d "nov 22" 显示今年11月22日是星期几
    date -d '2 weeks' 显示两周后的日期
    date -d 'next monday' 显示下周一的日期
    date -d next-day +%Y%m%d 或 date -d tomorrow +%Y%m%d 显示明天的日期
    date -d last-day +%Y%m%d 显示昨天的日期
    date -d last-month +%Y%m 显示上个月的月份
    date -d next-month +%Y%m 显示下个月的月份
  • cal命令:显示日历。

    常用参数:

    1
    2
    3
    4
    -3 显示前一月、当前月、后一月的三个月日历
    -m 显示星期一为一周的第一天
    -j 显示当前年中的第几天
    -y 显示整年的日历

    示例:

    1
    2
    3
    cal 9 2012 显示2012年9月的日历
    cal -y 2013 显示2013年全年的日历
    cal -3m 显示三个月的日历,以星期一为一周的第一天
  • grep命令:在文件中搜索指定的字符串。

    常用参数:

    1
    2
    3
    4
    5
    6
    7
    8
    -A n 显示匹配行之后的n行
    -B n 显示匹配行之前的n行
    -C n 显示匹配行前后各n行
    -c 计算匹配行数
    -i 忽略大小写
    -l 仅列出包含匹配行的文件名
    -n 显示行号
    -R 递归搜索目录

    示例:

    1
    2
    3
    4
    grep test *file 查找当前目录中文件名包含file的文件,并显示包含test字符串的行
    grep -r update /etc/acpi 查找/etc/acpi目录及其子目录中包含update字符串的文件
    grep -v test *test* 查找文件名包含test的文件中不包含test字符串的行
    grep -E 'ed|at' test.txt 查找test.txt文件中包含ed或at的行
  • wc命令:统计文件中的行数、单词数和字节数。

    常用参数:

    1
    2
    3
    4
    -c 统计字节数
    -l 统计行数
    -m 统计字符数
    -w 统计单词数

    示例:

    1
    2
    wc text.txt 查看text.txt文件的行数、单词数和字节数
    cat test.txt | wc -l 查看test.txt文件的行数
  • ps命令:查看当前运行的进程状态。

    Linux进程状态:

    |状态码|状态名称|说明|
    |—-|—-|—-|
    |D|不可中断|进程处于等待状态,如等待IO操作完成,无法被中断|
    |R|运行|进程处于运行队列中,等待CPU时间片或正在运行|
    |S|中断|进程处于休眠状态,等待某个事件发生|
    |T|停止|进程被停止,如通过调试信号或暂停命令|
    |Z|僵死|进程已终止,但父进程尚未回收其资源|

    常用选项:

    1
    2
    3
    4
    5
    -A 显示所有进程
    -a 显示同一终端下的进程
    -u 显示用户相关进程
    -x 显示没有控制终端的进程
    -aux 显示所有包含其他用户使用的进程

    示例:

    1
    2
    3
    4
    ps -ef 显示当前所有进程的详细信息
    ps -A 显示所有进程
    ps -aux | grep apache 查找与apache相关的进程
    ps aux | grep '(cron|syslog)' 查找与cron或syslog相关的进程
  • top命令:实时显示系统中各个进程的资源使用情况。

    常用参数:

    1
    2
    3
    4
    -c 显示完整的进程命令
    -s 保密模式
    -p <进程号> 指定进程显示
    -n <次数> 循环显示次数

    交互命令:

    1
    2
    3
    4
    5
    6
    7
    h 显示帮助信息
    c 切换显示命令名称和完整命令行
    m 按内存使用率排序
    P 按CPU使用率排序
    T 按时间/累计时间排序
    W 将当前设置保存到~/.toprc文件
    o 或 O 改变显示项目的顺序
  • kill命令:向进程发送信号,终止或控制进程。

    常用参数:

    1
    2
    3
    4
    5
    -l 列出所有信号名称
    -a 不限制命令名和进程号的关系
    -p 仅打印进程号而不发送信号
    -s 指定发送的信号
    -u 指定用户

    示例:

    1
    kill -9 $(ps -ef | grep pro1) 查找并强制终止名为pro1的进程
  • free命令:显示系统内存使用情况。

    常用参数:

    1
    2
    3
    4
    5
    6
    -b 以字节显示
    -k 以KB显示
    -m 以MB显示
    -g 以GB显示
    -s <间隔秒数> 持续显示
    -t 显示总和

    示例:

    1
    2
    3
    4
    5
    free 显示内存使用情况
    free -k 以KB显示内存使用情况
    free -m 以MB显示内存使用情况
    free -t 显示内存使用的总和信息
    free -s 10 每10秒显示一次内存使用情况

五:文本编辑器vi的使用

文本文件的创建

在Linux上可以通过以下方式创建文件:

  1. 使用重定向符(>)创建空文件:

    1
    > test.txt
  2. 使用touch命令创建文件:

    1
    touch test2.txt
  3. 使用echo命令创建包含内容的文件:

    1
    echo "111" > test3.txt

    或:

    1
    2
    3
    4
    5
    cat > test6.txt << end
    1
    2
    3
    end
  4. 使用cat命令创建文件:

    1
    2
    3
    4
    cat > test4.txt
    111
    222
    333^C
  5. 使用vi/vim命令创建文件:

    1
    vi test5.txt

关于vi/vim的详细使用方法,参考:https://www.runoob.com/linux/linux-vim.html

vi/vim使用概述

vi/vim是一个功能强大的文本编辑器,主要用于编辑纯文本文件。它具有三种模式:命令模式、输入模式和底线命令模式。

  • 命令模式:用于执行各种编辑命令,如移动光标、删除字符、进入其他模式等。默认情况下,启动vi后即进入命令模式。

    常用命令:

    |命令|说明|
    |—-|—-|
    |i|进入输入模式,在当前光标位置开始输入|
    |x|删除当前光标所在处的字符|
    |:|进入底线命令模式|

  • 输入模式:用于输入文本。在命令模式下按ioa等键可进入输入模式。

    常用操作:

    |按键|功能|
    |—-|—-|
    |字符按键及Shift组合|输入字符|
    |Enter|换行|
    |Backspace|删除光标前一个字符|
    |Del|删除光标后一个字符|
    |方向键|移动光标|
    |Home/End|移动光标到行首/行尾|
    |Page Up/Page Down|上/下翻页|
    |Insert|切换输入/替换模式|
    |ESC|退出输入模式,返回命令模式|

  • 底线命令模式:用于执行更复杂的命令,如保存文件、退出编辑器等。在命令模式下按:进入。

    常用命令:

    |命令|说明|
    |—-|—-|
    |q|退出vi|
    |w|保存文件|
    |wq|保存并退出|
    |q!|强制退出,不保存修改|

vi/vim使用实例

  1. 使用vi创建文件runoob.txt

    1
    vi runoob.txt
  2. i进入输入模式,开始编辑文件内容。

  3. 输入完成后,按ESC返回命令模式。

  4. 输入:wq保存并退出vi。

vi/vim按键说明

命令模式下的光标移动和文本编辑

按键 功能
h或左箭头 光标左移
j或下箭头 光标下移
k或上箭头 光标上移
l或右箭头 光标右移
Ctrl+f 向下移动一页
Ctrl+b 向上移动一页
Ctrl+d 向下移动半页
Ctrl+u 向上移动半页
+ 移动到非空白字符的下一行
- 移动到非空白字符的上一行
0(数字0)或Home 移动到行首
$或End 移动到行尾
H 移动到屏幕第一行
M 移动到屏幕中间行
L 移动到屏幕最后一行
G 移动到文件最后一行
nG(n为数字) 移动到文件第n行
gg 移动到文件第一行
n(数字) 向右移动n个字符
/word 向下搜索word字符串
?word 向上搜索word字符串
n 重复前一个搜索
N 反向重复前一个搜索
:n1,n2s/old/new/g 在n1到n2行之间替换old为new
:1,$s/old/new/g 替换整个文件中的old为new
:1,$s/old/new/gc 替换整个文件中的old为new,并确认
xx 删除光标所在处的字符
nx 删除光标后n个字符
dd 删除光标所在行
ndd 删除光标后n行
d1G 删除从光标到文件第一行的内容
dG 删除从光标到文件最后一行的内容
d$ 删除从光标到行尾的内容
d0 删除从光标到行首的内容
yy 复制光标所在行
nyy 复制光标后n行
y1G 复制从光标所在行到文件第一行的内容
yG 复制从光标所在行到文件最后一行的内容
y0 复制从光标到行首的内容
y$ 复制从光标到行尾的内容
p/P 在光标下/上一行粘贴
J 合并光标所在行与下一行
u 撤销上次操作
Ctrl+r 重做上次操作
.(点) 重复上次编辑命令

进入输入模式的命令

命令 说明
i 在当前光标位置开始输入
I 在当前行的第一个非空白字符处开始输入
a 在当前光标后的下一个字符处开始输入
A 在当前行的末尾开始输入
o 在当前光标行的下一行插入新行并进入输入模式
O 在当前光标行的上一行插入新行并进入输入模式
r/R 替换模式,r替换光标所在处的一个字符,R持续替换直至按ESC退出

底线命令模式的命令

命令 说明
q 退出vi
w 保存文件
wq 保存并退出
q! 强制退出,不保存修改
w filename 将编辑的内容保存为指定的文件名
r filename 读取指定文件的内容并插入到当前光标位置
n1,n2 w filename 将n1到n2行的内容保存到指定文件
! command 执行shell命令
set nu 显示行号
set nonu 取消显示行号

使用vi修改IP地址为静态IP

  1. 查看默认网关:

    1
    ip route

    示例输出:

    1
    2
    default via 192.168.2.1 dev ens33 proto static metric 100 
    192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.112 metric 100

    网关地址为192.168.2.1

  2. 查看动态IP地址及网段信息:

    1
    ip addr

    示例输出:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e2:e2:23 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.112/24 brd 192.168.2.255 scope global noprefixroute ens33
    valid_lft forever preferred_lft forever
    inet6 fe80::c94b:6002:cc54:64ca/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
  3. 使用vi编辑网卡配置文件:

    1
    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    将内容修改为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="static"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="571e6521-373a-4fb4-a76f-e9cb7f85afe9"
    DEVICE="ens33"
    ONBOOT="yes"
    IPADDR="192.168.2.112"
    NETMASK="255.255.255.0"
    GATEWAY="192.168.2.1"
    DNS1="192.168.2.1"
    DNS2="114.114.114.114"
  4. 重启网卡服务使配置生效:

    1
    systemctl restart network

    测试网络连接:

    1
    ping www.baidu.com

六:文件和文件夹的操作

具体命令可参考上文的Linux系统操作部分。以下是几篇详细介绍Linux文件和文件夹操作的文章:

七:用户与用户组权限

用户与用户组权限概述

在Linux中,root用户拥有最高权限,所有文件或文件夹的权限设定对root无效。在生产环境和服务器中,建议使用普通账户并授予必要权限,避免使用root账户以防止安全漏洞导致系统被恶意利用。对于操作系统和应用系统,应遵循零信任原则,始终使用最小权限进行操作。权限不足时再动态授予所需权限。

用户和用户组管理

Linux是一个多用户多任务的分时操作系统,每个使用系统资源的用户都必须有一个账号。用户账号管理包括用户账号的添加、删除和修改,以及用户口令的管理。

添加用户账号

使用useradd命令添加新用户:

1
useradd [选项] 用户名

常用选项:

1
2
3
4
5
6
-c 添加注释性描述
-d 指定用户主目录
-g 指定用户所属的用户组
-G 指定用户所属的附加组
-s 指定用户的登录Shell
-u 指定用户的用户号

示例:

1
2
useradd -d /home/sam -m sam 创建用户sam,主目录为/home/sam
useradd -s /bin/sh -g group -G adm,root gem 创建用户gem,登录Shell为/bin/sh,主组为group,附加组为adm和root

删除用户账号

使用userdel命令删除用户:

1
userdel [选项] 用户名

常用选项:

1
-r 删除用户的主目录

示例:

1
userdel -r sam 删除用户sam及其主目录

修改用户账号

使用usermod命令修改用户账号属性:

1
usermod [选项] 用户名

常用选项与useradd类似,可修改用户的主目录、用户组、Shell等。

示例:

1
usermod -s /bin/ksh -d /home/z -g developer sam 修改用户sam的Shell、主目录和所属组

用户口令管理

使用passwd命令设置或修改用户口令:

1
passwd [选项] 用户名

常用选项:

1
2
3
4
-l 锁定用户账户
-u 解锁用户账户
-d 设置用户无口令
-f 强制用户下次登录时修改口令

示例:

1
2
passwd sam 为用户sam设置口令
passwd -l sam 锁定用户sam的账户

用户组管理

用户组管理包括添加、删除和修改用户组。

添加用户组

使用groupadd命令添加新用户组:

1
groupadd [选项] 用户组名

常用选项:

1
2
-g 指定用户组的GID
-o 允许GID重复

示例:

1
2
groupadd group1 添加用户组group1
groupadd -g 101 group2 添加GID为101的用户组group2

删除用户组

使用groupdel命令删除用户组:

1
groupdel 用户组名

示例:

1
groupdel group1 删除用户组group1

修改用户组属性

使用groupmod命令修改用户组属性:

1
groupmod [选项] 用户组名

常用选项:

1
2
-g 修改用户组的GID
-n 修改用户组名称

示例:

1
2
groupmod -g 102 group2 将用户组group2的GID修改为102
groupmod -n group3 group2 将用户组group2重命名为group3

与用户账号相关的系统文件

/etc/passwd文件

记录系统中每个用户的基本信息,格式为每行一个用户,字段间以冒号分隔:

1
用户名:口令:用户ID:组ID:注释:主目录:登录Shell
  • 用户名:用户的登录名。
  • 口令:早期存放加密后的口令,现代系统通常使用/etc/shadow文件存储口令,此处为x*
  • 用户ID(UID):用户标识号,root为0,普通用户从500开始(不同发行版可能不同)。
  • 组ID(GID):用户所属主组的组标识号。
  • 注释:用户的真实姓名、电话等信息。
  • 主目录:用户登录后的起始目录。
  • 登录Shell:用户登录后使用的Shell程序。

示例:

1
2
3
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

/etc/shadow文件

存储用户的加密口令及其他安全相关的信息,格式为每行一个用户,字段间以冒号分隔:

1
用户名:加密口令:最后修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段

示例:

1
2
root:*:18372:0:99999:7:::
daemon:*:18372:0:99999:7:::

/etc/group文件

记录用户组的信息,格式为每行一个组,字段间以冒号分隔:

1
组名:口令:组ID:组内用户列表

示例:

1
2
root::0:root
bin::2:root,bin

批量添加用户

当需要批量创建大量用户时,可以使用以下步骤:

  1. 编辑一个用户列表文件,格式与/etc/passwd类似,如user.txt

    1
    2
    3
    user001::600:100:user:/home/user001:/bin/bash
    user002::601:100:user:/home/user002:/bin/bash
    user003::602:100:user:/home/user003:/bin/bash
  2. 使用newusers命令导入用户数据:

    1
    newusers < user.txt
  3. 使用vipw或直接编辑/etc/passwd检查用户数据是否正确。

  4. 执行pwunconv命令,将/etc/shadow中的口令信息转换回/etc/passwd

    1
    pwunconv
  5. 编辑密码文件passwd.txt,格式为用户名:密码

    1
    2
    user001:123456
    user002:123456
  6. 使用chpasswd命令设置用户密码:

    1
    chpasswd < passwd.txt
  7. 执行pwconv命令,将口令信息重新转换为shadow格式:

    1
    pwconv

完成后,检查/home目录下是否生成了用户的主目录,并验证用户是否能正常登录。

文件和文件夹权限

Linux系统通过权限机制控制不同用户对文件和文件夹的访问。主要使用chownchgrpchmod命令来管理文件的所有者、所属组和权限。

更改文件所有者和所属组

  • chown:更改文件的所有者和所属组。

    1
    chown [选项] 用户名:组名 文件名

    常用选项:

    1
    -R 递归更改目录及内容的所有者
  • chgrp:更改文件的所属组。

    1
    chgrp [选项] 组名 文件名

    常用选项:

    1
    -R 递归更改目录及内容的所属组

更改文件权限

  • chmod:更改文件的权限。

    权限设置有两种方式:数字模式和符号模式。

    数字模式

    权限对应数值:

    |权限|数值|
    |—-|—-|
    |r(读)|4|
    |w(写)|2|
    |x(执行)|1|

    例如,权限rwxr-xr--对应的数值为754

    使用方法:

    1
    chmod 754 文件名

    符号模式

    格式为[ugoa][+-=][rwx],其中:

    • u:用户(文件所有者)
    • g:组(文件所属组)
    • o:其他用户
    • a:所有用户(ugo的组合)

    示例:

    1
    2
    chmod u=rwx,g=rx,o=r 文件名 设置文件权限为rwxr-xr--
    chmod a-x 文件名 去掉所有用户的执行权限

八:文件查找与归档压缩

Linux文件查找命令find

find命令用于在指定目录下查找文件。基本语法:

1
find path -option [ -print ] [ -exec -ok command ] {} \;

常用选项:

选项 说明
-name 按文件名查找
-type 指定文件类型(d目录,f文件等)
-mtime 按文件修改时间查找
-size 按文件大小查找
-exec 对查找结果执行命令
-ok 与-exec类似,但会提示确认

示例:

1
2
3
4
5
6
find . -name "*.c" 查找当前目录及其子目录下所有.c文件
find . -type f 查找当前目录及其子目录下的所有普通文件
find . -ctime 20 查找当前目录及其子目录下最近20天内创建的文件
find /var/log -type f -mtime +7 -ok rm {} \; 查找并删除/var/log目录下7天前修改的文件(需确认)
find . -perm 644 -exec ls -l {} \; 查找当前目录下权限为644的文件并显示详细信息
find / -type f -size 0 -exec ls -l {} \; 查找系统中所有大小为0的文件

Linuxgrep命令

grep命令用于在文件中搜索指定的字符串。基本语法:

1
grep [选项] 模式 文件

常用选项:

选项 说明
-i 忽略大小写
-r 递归搜索目录
-n 显示行号
-l 仅列出包含匹配行的文件名
-v 反向查找,显示不匹配的行

示例:

1
2
3
grep test *file 查找当前目录中文件名包含file的文件,并显示包含test的行
grep -r update /etc/acpi 查找/etc/acpi目录及其子目录中包含update的文件
grep -v test *test* 查找文件名包含test的文件中不包含test的行

Linuxtar命令

tar命令用于文件的打包和压缩。基本语法:

1
tar [选项] [文件...]

常用选项:

选项 说明
-c 创建新的压缩文件
-x 解压文件
-t 查看压缩文件内容
-z 支持gzip压缩
-j 支持bzip2压缩
-v 显示操作过程
-f 指定压缩文件

示例:

1
2
3
tar -czvf test.tar.gz a.c 压缩a.c文件为test.tar.gz
tar -tzvf test.tar.gz 查看压缩文件内容
tar -xzvf test.tar.gz 解压test.tar.gz文件

九:在Linux中安装应用

使用rpm离线安装

rpm(Red Hat Package Manager)是Red Hat系列Linux发行版的包管理工具,用于安装、卸载和查询软件包。

基本语法:

1
rpm [选项] 包名

常用选项:

选项 说明
-i 安装软件包
-v 显示详细信息
-h 显示进度条
-e 卸载软件包
-q 查询软件包信息

示例:

1
2
rpm -ivh package.rpm 安装软件包
rpm -e package 查询并卸载软件包

基于源代码安装应用

许多Linux软件提供源代码,需要编译后才能使用。安装步骤通常包括:

  1. 下载源码并解压。
  2. 查看INSTALLREADME文件了解安装步骤。
  3. 执行./configure生成Makefile
  4. 执行make编译源码。
  5. 执行make install安装软件。

示例:安装memcached

1
2
3
4
5
6
7
8
9
cd /usr/local/
mkdir memcached
wget http://memcached.org/files/memcached-1.4.29.tar.gz
tar -zxvf memcached-1.4.29.tar.gz
cd memcached-1.4.29
./configure --prefix=/usr/local/memcached/
make clean
make
make install

使用yum进行安装(优先级高)

yum(Yellow dog Updater, Modified)是基于RPM的包管理器,自动处理依赖关系,简化软件安装过程。

基本语法:

1
yum [选项] [命令] [包名...]

常用命令:

命令 说明
yum install 安装软件包
yum update 更新软件包
yum remove 卸载软件包
yum list 列出软件包
yum search 搜索软件包
yum clean 清理缓存

示例:

1
2
3
yum install pam-devel 安装pam-devel软件包
yum remove pam-devel 卸载pam-devel软件包
yum list pam* 列出以pam开头的软件包

国内常用的yum源包括网易(163)、中科大和搜狐等。配置网易yum源的步骤:

  1. 备份默认的CentOS-Base.repo文件:

    1
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  2. 下载对应版本的repo文件:

    1
    2
    3
    CentOS5: wget http://mirrors.163.com/.help/CentOS5-Base-163.repo
    CentOS6: wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
    CentOS7: wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
  3. 将下载的文件重命名为CentOS-Base.repo并移动到/etc/yum.repos.d/目录:

    1
    mv CentOS6-Base-163.repo CentOS-Base.repo
  4. 生成缓存:

    1
    2
    yum clean all
    yum makecache

配置本地Yum仓库的步骤:

  1. 将RHEL6光盘挂载到/media

    1
    mount /dev/cdrom /media/
  2. 配置本地Yum客户端:

    1
    2
    3
    cd /etc/yum.repos.d/
    cp rhel-source.repo rhel6.repo
    vim rhel6.repo

    修改内容如下:

    1
    2
    3
    4
    5
    6
    [rhel-6]
    name=Red Hat Enterprise Linux 6
    baseurl=file:///media/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
  3. 验证Yum配置:

    1
    yum repolist

对于软件安装时提示缺失库的情况,可以使用yum provides查找包含所需库的包:

1
yum provides libstdc++.so.6

根据查询结果安装相应的包:

1
yum install 包名

十:Docker基础命令与应用

查看Docker服务状态

使用systemctl命令查看Docker服务是否开启:

1
systemctl list-unit-files | grep docker

示例输出:

1
2
docker.service                                disabled
docker.socket disabled

disabled表示Docker服务不会随系统启动自动运行。可以使用以下命令设置Docker开机自启:

1
systemctl enable docker

Docker镜像操作

  • 拉取镜像

    默认情况下,docker pull会拉取最新版本的镜像。若需拉取特定版本,可指定TAG标签:

    1
    docker pull mysql:5.6
  • 列出镜像

    使用docker images查看本地已有的镜像:

    1
    docker images

    示例输出:

    1
    2
    3
    REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
    mysql 5.6 dd3b2a5dcb48 13 months ago 303MB
    hello-world latest feb5d9fea6a5 16 months ago 13.3kB
  • 搜索图像搜索

    使用docker search查找公共仓库中的镜像:

    1
    docker search mysql

    示例输出:

    1
    2
    3
    4
    5
    6
    7
    NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    mysql MySQL is a widely used, open-source relation… 13728 [OK]
    mariadb MariaDB Server is a high performing open sou… 5238 [OK]
    phpmyadmin phpMyAdmin - A web interface for MySQL and M… 726 [OK]
    percona Percona Server is a fork of the MySQL relati… 599 [OK]
    databack/mysql-backup Back up mysql databases to... anywhere! 80
    bitnami/mysql Bitnami MySQL Docker Image 80 [OK]
  • 删除镜像

    使用docker rmi删除本地镜像:

    1
    docker rmi hello-world

容器操作

  • 创建容器

    使用docker create创建容器:

    1
    docker create hello-world

    或指定容器名:

    1
    docker create --name hello-docker hello-world
  • 启动容器

    使用docker start启动已创建的容器:

    1
    docker start 容器名

    示例:

    1
    docker start hello-docker
  • 查看容器

    查看所有容器(包括停止的):

    1
    docker container ls -a

    查看正在运行的容器:

    1
    docker ps
  • 停止容器

    使用docker stop停止运行中的容器:

    1
    docker stop 容器名
  • 删除容器

    使用docker rm删除容器:

    1
    docker rm 容器名

创建并启动容器

使用docker run命令创建并立即启动容器:

1
docker run --name 容器名 镜像名

示例:

1
docker run --name 111 hello-world

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

端口映射

将Docker容器的端口映射到宿主机的指定端口:

1
docker run -p 宿主机端口:容器端口 -d 镜像名

示例:

1
docker run -p 2023:80 -d mcc0624/ser:1.8

此命令将容器内的80端口映射到宿主机的2023端口,访问宿主机的2023端口即可访问Docker容器的服务。