Linux 基础

常用命令

文件管理命令

  • 文件目录

    # 切换目录
    cd /    #切换到根目录      
    cd ~    #切换到主目录      
    cd -    #切换到上次访问的目录 
    cd ..   #返回上一级目录
    
    pwd     #查看当前工作路径(绝对路径)
    
    ls -a   查看该目录下所有文件或目录
    ls -l(简写ll) 以列表形式查看文件或目录
    
    # 创建目录
    mkdir [-选项] 目录名
    选项: -p:递归创建目录。
    示例: mkdir -p /parent/sub 在当前目录创建parent,并创建子目录sub;
    
    # 删除目录或文件
    rm [-rf] 目录名或文件名
    选项: -f:不提示,强制删除文件或目录;
          -i:删除已有文件或目录之前先询问用户;
          -r,-R:递归删除,将指定目录下的所有文件与子目录一并删除;
           -v:显示指令的详细执行过程。
    
    #移动文件夹或重命名文件夹  
    mv 旧目录名 新目录名
    
    # 拷贝
    cp [-选项] 目录名称 目录拷贝的目标位置
    选项: -r:表示递归复制
    
    # 查询文件或目录
    find 目录 参数 文件名称或者目录名
    示例:find  /tmp  -name  'a*'  查找/tmp目录下的所有以a开头的目录或文件。
    
    # 创建文件
    touch xxfile
  • vi/vim 编辑器

    共同的基本操作指令
    
    进入编辑模式:
        i:在当前光标位置之前插入文本。
        a:在当前光标位置之后插入文本。
        o:在当前行下方插入新行并进入编辑模式。
        O:在当前行上方插入新行并进入编辑模式。
    切换到命令模式:
        Esc:退出编辑模式并切换到命令模式。
    保存和退出:
        :w:保存文件。
        :q:退出编辑器。
        :wq:保存文件并退出编辑器。
        :x! 强制保存并退出当前文件。
    移动光标
        h:向左移动一个字符。
        j:向下移动一行。
        k:向上移动一行。
        l:向右移动一个字符。
    删除文本:
        x:删除当前光标下的一个字符。
        dd:删除当前行。
        dw:删除一个单词。
    复制和粘贴文本:
        yy:复制当前行。
        yw:复制一个单词。
        p:在光标位置粘贴复制的文本。
    撤销和重做:
        u:撤销最后的操作。
        Ctrl + r:重做撤销的操作。
    
    vim 特有的增强指令
    搜索和替换:
        /pattern:向下搜索包含指定模式的文本。
        ?pattern:向上搜索包含指定模式的文本。
        :s/old/new/g:替换当前行中的所有匹配项。
    分割窗口:
        :sp:水平分割当前窗口。
        :vsp:垂直分割当前窗口。
        Ctrl + ww:在窗口之间切换。
    编辑多个文件:
        :e filename:打开一个新的文件进行编辑。
        :bn:切换到下一个缓冲区。
        :bp:切换到上一个缓冲区。
    代码补全和自动缩进:
        Ctrl + n:代码补全。
        Tab:自动缩进。
    以上只是 vi 和 vim 编辑器中的一些常用指令,还有许多其他指令和高级功能可以使用。可以使用 vim 中的 :help 命令来查看完整的帮助文档,以获取更多详细信息。

文件查看

  1. cat命令:以文本形式显示文件内容。

    cat filename
  2. less命令:逐页显示文件内容,并支持向上/向下滚动、搜索等功能【输入 q 返回】。

    less filename
  3. head命令:显示文件的前几行,默认为前10行。

    head filename
    head -n 5 filename  # 显示前5行
  4. tail命令:显示文件的后几行,默认为最后10行。

    tail filename
    # 显示后5行,且在文件发生变化时动态地更新显示内容
    tail -fn 20 filename  

检索文件的命令

  1. grep命令:在文件中搜索指定模式的文本,并显示匹配的行。

    grep pattern filename
    grep -r pattern directory  # 递归地在目录下搜索
    
    grep -n -C 10 "keyword" filename
        -n选项显示匹配行的行号。
        -C 10选项显示匹配行的前后10行作为上下文。
        -A n 显示匹配行的后n行作为上下文;
        -B n 显示匹配行的前n行作为上下文;
  2. find命令:按照指定条件查找文件。

    find directory -name filename  # 在目录中按名称查找文件
    find directory -type f  # 查找普通文件
    find directory -type d  # 查找目录
  3. locate命令:通过数据库快速查找文件。

    locate filename
  4. which命令:查找可执行文件的路径。

    which command

软件安装

apt

apt(Advanced Packaging Tool):适用于 Debian、Ubuntu 和其他基于 Debian 的发行版。

  • 安装软件:sudo apt install package_name
  • 删除软件:sudo apt remove package_name
  • 更新软件列表:sudo apt update
  • 更新已安装的软件包:sudo apt upgrade

yum

yum(Yellowdog Updater Modified):适用于 CentOS、Fedora 和 RHEL 等基于 Red Hat 的发行版。

常用的参数讲解:

  1. 常规操作

    • install:安装一个或多个软件包。
    • remove:删除一个或多个软件包。
    • update:更新已安装的软件包。
    • search:搜索软件包。
    • list:列出可用的软件包。
    • info:显示软件包的详细信息。
  2. 软件包管理

    • -y(或 --assumeyes):对所有提示进行自动回答为 “yes”,无需人工确认。
    • clean:清理软件包缓存。
    • check-update:检查可用的软件包更新。
    • upgrade:升级已安装的软件包。
    • downgrade:降级已安装的软件包。
    • reinstall:重新安装已安装的软件包。
  3. 媒体源和存储库

    • repolist:列出所有已配置的存储库。
    • installroot:在指定的目录中执行安装操作。
    • enablerepo:启用指定的存储库。
    • disablerepo:禁用指定的存储库。
    • groupinstall:安装软件包组。
  4. 事务和安装记录

    • history:查看或管理 yum 事务历史记录。
    • resolvedep:解决软件包依赖关系。

一些示例:

# 检索 
yum research lrzsz
# 安装 lrzsz 传输工具
yum install lrzsz 
# 卸载工具
yum remove lrzsz

文件传输命令

  1. scp命令:通过SSH安全地复制文件或目录。

    scp source_file user@host:destination_path  # 复制文件到远程主机
    scp -r source_directory user@host:destination_path  # 复制目录到远程主机
    scp user@host:source_file destination_path  # 从远程主机复制文件到本地
  2. rsync命令:远程和本地文件传输和同步的更高级工具。

    rsync source_file user@host:destination_path  # 复制文件到远程主机
    rsync -r source_directory user@host:destination_path  # 复制目录到远程主机
    rsync user@host:source_file destination_path  # 从远程主机复制文件到本地
  3. lrzsz命令:本地服务和远程服务器间的文件传输

    该工具包系统不是系统默认提供的,需要手动安装 yum install lrzsz

    rz命令 用于将文件从本地计算机上传到远程计算机。
    sz命令 用于将文件从远程计算机下载到本地计算机。
    
    核心参数:
    -b 以二进制格式传输文件
    -e 转义所有控制字符【建议都加上该参数,防止内容被解析为Linux指令】

压缩命令

  • tar 命令【gzip 等命令可以百度】
常见参数:
  -c(create): 创建一个新的归档文件。可以与其他参数组合使用,如 -cvf。
  -x(extract): 从归档文件中提取文件。可以与其他参数组合使用,如 -xvf。
  -v(verbose): 显示详细的输出信息,包括被处理的文件列表。
  -f(file): 指定归档文件的名称。必须作为最后一个选项参数出现,并且紧跟在 -f 后面的是文件名。
  -z(gzip): 使用 gzip 压缩算法对归档文件进行压缩或解压。
  -j(bzip2): 使用 bzip2 压缩算法对归档文件进行压缩或解压。
  -r(append or update): 向现有归档文件中追加文件或更新已存在的文件。
  -t(list): 列出归档文件中包含的文件。
  -u(update): 更新归档文件中较新的文件,如果文件在归档文件中不存在则添加新文件。
  -k(keep): 当解压缩过程中遇到错误时,保留已解压的文件。
  -C(directory): 指定要在其中执行命令的目录。
  --exclude:排除指定的文件或目录。
  --exclude-from:从文件中指定要排除的文件或目录列表。
  --strip-components:在提取时去除路径中指定的组件层数。

使用示例:
  创建一个包含文件的归档文件:
  tar -cvf archive.tar file1 file2 file3
  提取归档文件中的内容:
  tar -xvf archive.tar
  创建并使用 gzip 压缩归档文件:
  tar -cvzf archive.tar.gz file1 file2 file3
  使用 bzip2 压缩归档文件:
  tar -cvjf archive.tar.bz2 file1 file2 file3
  列出归档文件中的所有文件:
  tar -tvf archive.tar
这些是常见的 tar 命令参数,还有其他参数可以使用。你可以使用 man tar 命令来查看 tar 命令的完整手册以获取更多详细信息。
  • zip命令
# 加密
zip -re 加密后的文件名.zip 要加密的文件或目录
-r:递归包括子目录
-e:进行加密

执行命令后,会提示让你输入两次密码。
# 可以使用-P直接加上密码
zip -rP 密码 加密后的文件名.zip 要加密的文件或目录

# 解密
unzip -P 密码 要解密的文件.zip

进程管理命令

ps 查看当前系统进程状态

ps:process status 进程状态

  • 基本语法
    • ps -aux | grep xxx (功能描述:查看系统中所有进程)
    • ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
  • 选项说明
    • a 列出带有终端的所有用户的进程
    • x 列出当前用户的所有进程,包括没有终端的进程
    • u 面向用户友好的显示风格
    • -e 列出所有进程
    • -u 列出某个用户关联的所有进程
    • -f 显示完整格式的进程列表
  • ps:
    • 如果想查看进程的 CPU 占用率和内存占用率,可以使用 aux;
    • 如果想查看进程的父进程 ID 可以使用 ef;
ps -aux

![image-20231229183151958](/upload/assets/03-Linux 基础/image-20231229183151958.png)

  • 列名解释
USER:该进程是由哪个用户产生的
PID:进程的 ID 号
%CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位 KB;
RSS:该进程占用实际物理内存的大小,单位 KB;
TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,
tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、
Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
START:该进程的启动时间
TIME:该进程占用 CPU 的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
ps -ef

![image-20231231091654979](/upload/assets/03-Linux 基础/image-20231231091654979.png)

  • 列名解释
UID:用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,
执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU 时间
CMD:启动进程所用的命令和参数
pstree 查看进程树
  • 可选参数
    • -p 显示进程的 PID
    • -u 显示进程的所属用户

![image-20231231092132743](/upload/assets/03-Linux 基础/image-20231231092132743.png)

![image-20231231092155318](/upload/assets/03-Linux 基础/image-20231231092155318.png)

netstat 网络状态和端口信息

该工具包系统不是系统默认提供的,需要手动安装 yum install net-tools

常用选项:

  • -a:显示所有连接,包括监听中的连接。
  • -t:显示 TCP 连接。
  • -u:显示 UDP 连接。
  • -n:以数字形式显示 IP 地址和端口号,而不是使用名称。
  • -p:显示与连接关联的进程名称/ID。
  • -r:显示路由表信息。
  • -l:显示所有处于监听状态的服务。
  • -s:显示网络统计信息,如数据包、错误等。

日常使用:

  • netstat -anp | grep 进程号 (功能描述:查看指定进程的网络信息)
  • netstat –nlp | grep 端口号 (功能描述:查看网络端口号占用情况)

![image-20231231095541704](/upload/assets/03-Linux 基础/image-20231231095541704.png)

kill 终止进程

  • 语法:
    • kill [选项] 进程号 (功能描述:通过进程号杀死进程);
    • killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用);
  • 核心参数
    • -l--list:列出所有可用的信号名称。
    • -s <信号>--signal=<信号>:指定发送的信号。可以使用信号名称或信号编号。
    • -<信号>:使用 - 号加上信号编号发送信号。
    • -a--all:发送给所有进程,除了进程组或会话首领进程。
    • -i--interactive:交互模式,会询问用户是否要终止每个进程。
    • -p <进程号>--pid=<进程号>:指定要发送信号的进程号。
    • -t <终端>--tty=<终端>:指定要发送信号的终端。
    • -u <用户>--user=<用户>:指定要发送信号的用户。
    • --help:显示 kill 命令的帮助信息。
    • 示例:
      • kill -l:列出所有可用的信号。
      • kill -9 <进程号>:强制终止指定进程。
      • kill -TERM <进程号>:使用 TERM 信号终止指定进程。
kill -l

![image-20231231093356015](/upload/assets/03-Linux 基础/image-20231231093356015.png)

一些常用的信号及其含义和作用:

  • SIGHUP (1):挂起信号,通常用于通知进程重新加载配置文件或重启。
  • SIGINT (2):中断信号,当用户在终端上按下 Ctrl + C 组合键时发送给前台进程,用于终止正在运行的进程。
  • SIGKILL (9):强制终止信号,用于立即终止进程,无法被捕获和处理。
  • SIGTERM (15):终止信号【是默认的信号量】,用于优雅地请求进程终止,允许进程进行清理操作。
  • SIGSTOP (17):停止信号,暂停进程的执行,进程状态变为停止,可通过 SIGCONT 信号恢复执行。
  • SIGCONT (18):继续信号,用于恢复被 SIGSTOPSIGTSTP 暂停的进程。
  • SIGUSR1 (30) 和 SIGUSR2 (31):用户自定义信号,可由进程根据需要自行定义使用。
与ps指令结合使用
  1. 先使用 ps 指令,查询到想要关闭的进程号 PID;
  2. 再使用 kill 指令,关闭进程;

比如说,先查看所有的ssh连接:

![image-20231231094218288](/upload/assets/03-Linux 基础/image-20231231094218288.png)

我们期望把mfc_root 486137 486135 0 09:39 ? 00:00:00 sshd: mfc_root@pts/1 这个进程kill掉,就执行 kill 486137

![image-20231231094423198](/upload/assets/03-Linux 基础/image-20231231094423198.png)

与 netstat指令结合使用

一般的场景是,我们启动某个软件,发现端口被占用,无法启动成功,就可以先查询到原端口的进程,kill掉后,再次启动【前提是原进程的作用,我们很清楚】。

  1. 使用指令 netstat –nlp | grep 端口号 查看网络端口号占用情况;
  2. 使用kill -9 PID命令,把对应的进程kill掉。

内存&磁盘情况查看

  1. 内存(Memory)相关命令:
  • free:显示系统内存使用情况和空闲情况。
  • top:实时查看系统进程和内存占用情况。
  • htop:类似于top,但是更加友好的交互式进程监视器。
  • vmstat:显示系统虚拟内存状态,包括内存、交换空间和IO等。
  1. 硬盘(Disk)相关命令:
  • lsblk:列出块设备信息,包括硬盘和分区等。
  • df:显示文件系统的磁盘空间使用情况。
  • du:计算目录或文件的磁盘使用空间,一些常用的参数:
    • -h:以人类可读的方式显示文件或目录的大小(以 K、M、G 等单位显示)。
    • -s:仅显示总计大小,而不显示详细信息。
    • -c:显示总计大小,并在最后一行显示总计。
    • -a:显示所有文件和子目录的大小。
    • -x:只统计当前文件系统中的文件和目录,忽略其他文件系统的挂载点。
    • --max-depth=<深度>:限制显示输出的最大深度,只显示指定深度的文件和目录。

常用的示例:

  1. 查看内存情况free -h:

    ![image-20231231195352692](/upload/assets/03-Linux 基础/image-20231231195352692.png)

  2. 实时查看系统内存情况 top:

    ![image-20231231195522866](/upload/assets/03-Linux 基础/image-20231231195522866.png)

  3. 查看系统磁盘使用情况 df -h:

    ![image-20231231195610949](/upload/assets/03-Linux 基础/image-20231231195610949.png)

  4. 查看指定目录文件占用的磁盘大小 du -h --max-depth=0 home/:

    ![image-20231231200341772](/upload/assets/03-Linux 基础/image-20231231200341772.png)

目录约定规范

系统目录

Linux系统的文件存储是按照一定的文件系统层次结构来组织的,即所谓的FHS(Filesystem Hierarchy Standard)。

在FHS中,Linux文件系统的根目录为“/”,其中有许多子目录,每个子目录都有指定的用途。例如,以下是一些重要的目录及其用途:

  • /bin:系统的二进制可执行文件
  • /boot:启动Linux所需的核心文件和引导程序
  • /dev:设备文件目录,包括硬件设备和虚拟设备
  • /etc:系统的配置文件存放目录
  • /home:用户主目录所在的位置
  • /lib:系统库文件
  • /media:可移动设备挂载目录,如光盘、U盘等
  • /mnt:文件系统挂载目录
  • /opt:第三方应用程序所安装位置,一般也是二进制程序
  • /proc:内存映射文件系统,用于动态获取系统参数
  • /root:root用户的主目录位置
  • /run:运行时文件系统,存放某些进程执行过程中的信息
  • /sbin:系统管理员使用的二进制程序
  • /srv:存放特定服务数据文件的目录
  • /sys:与硬件设备相关的信息,例如CPU、内存和硬盘等
  • /tmp:临时文件目录
  • /usr:用户程序和文件的目录,包含了大部分的应用程序和文件
  • /var:包含了系统运行中的可变文件,如日志信息、邮件等

软件目录建议

Linux 的软件安装位置是有讲究的,正确的选择安装目录对系统管理以及使用都是有益的,Linux 下我们主要的安装位置有两个,分别是 /opt 目录和/usr/local 目录。

/opt 目录:

  • opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录,是用户级的程序目录,默认是空的。
  • 这里常用于放置额外的大型软件,比如你安装一个 MYSQL数据库就可以放到这个目录下。

/usr 目录:

  • usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的系统级目录,系统的很多应用程序和文件都放在这个目录下。其中 /usr/src 是系统的源码存放目录。
  • 此目录一般由软件包管理器(yum、apt)来管理。

/usr/local 目录:

  • /usr/local 是 /usr 下的一个用户级的程序目录,用户自己安装的软件一般选择安装到这个目录下。其中 /usr/local/src 是用户级的源码存放目录。
  • 此目录一般由用户自己管理。

Linux 下安装路径大部分完全由自己决定,本文只是建议如此,实际安装时还需要考虑其他因素,总的来说,以方便使用和管理来决定安装位置。一般大型软件或者是一些服务程序安装到 /opt 目录下,普通软件一般安装到usr/local目录下。

数据文件,一般情况建议放到 /home 目录下,在企业级服务器中,可能会有单独的data/ 目录。

日常运维

创建普通用户

在 Linux 系统上创建一个普通用户可以通过以下步骤完成:

  1. 使用管理员权限登录到 Linux 系统,打开终端。

  2. 运行以下命令来创建一个新的普通用户:

    sudo useradd -m -s /bin/bash <username>

    在命令中,将 <username> 替换为您想要创建的用户名。

    • -m 选项会为用户创建一个用户目录(主目录)。
    • -s /bin/bash 选项将用户的默认 shell 设置为 Bash。
  3. 设置用户的密码,运行以下命令:

    sudo passwd <username>

    在命令中,将 <username> 替换为您创建的用户名。按照提示输入并确认用户密码。

  4. (可选)将用户添加到特定用户组。如果您希望将新用户添加到特定的用户组中,可以使用以下命令:

    sudo usermod -aG <group> <username>
    
    sudo usermod -aG sudo test
    
    sudo groupadd sudo

    在命令中,将 <group> 替换为您希望添加用户的用户组名称,将 <username> 替换为要添加到该组的用户名。请确保该用户组已经存在。

  5. 您可以使用以下命令验证新用户是否已成功创建:

    id <username>

    <username> 替换为您创建的用户名。该命令将显示用户的详细信息,以确认用户是否已经成功创建。

现在,您已经成功在 Linux 系统上创建了一个普通用户,并可以使用该用户登录和执行操作。

授权管理

要将某个目录下的所有子目录和文件的权限授权给所有人,可以使用 chmod 命令。

以下是将目录下所有子目录和文件的权限授权给所有人的步骤:

  1. 使用 root 用户登录终端或以 root 权限执行以下命令。

  2. 进入要设置权限的目录。例如,要设置名为 example 的目录及其子目录和文件的权限,可以执行以下命令:

    cd /path/to/example

    /path/to/example 替换为您要授权的目录的实际路径。

  3. 使用以下命令将权限设置为对目录中的所有子目录和文件适用:

    chmod -R a+rwX .

    在这里,chmod 命令的 -R 选项将使递归地修改目录、子目录和文件的权限。a 表示所有用户,+rwX 表示添加读取、写入和执行的权限,其中 rw 代表读取和写入权限,而 X 代表仅对目录和已有执行权限的文件添加执行权限。. 表示当前目录。

现在,该目录下的所有子目录和文件的权限都已经授权给所有人。请注意,此操作会将所有子目录和文件的权限都修改为相同的权限。在执行此操作之前,请确保您理解并确认对所有子目录和文件的权限更改是安全和合适的。

systemd启动守护进程

参考:

Systemd 是 Linux 系统工具,用来启动守护进程【“守护进程”(daemon)就是一直在后台运行的进程(daemon)】,已成为大多数发行版的标准配置。

systemd Unit:systemd将它能够管理的系统配置统一称为一个单元,即unit。根据不同的unit类型,systemd可以管理系统中不同的资源和服务。systemd提供的unit类型有下面这些:

单元类型 文件后缀 描述
Service .service 定义了系统服务,包括启动,重启,关闭服务的相关指令
Target .target 定义了一组单元的集合,通常作为单元启动的同步点,某个target启动成功就意味着一组相关的service启动成功
Automount .automount 定义了系统引导时会进行自动挂载的挂载点
Device .device 定义了由systemd管理的硬件设备
Mount .mount 定义了由systemd管理的文件系统挂载点
Path .path 定义了一条用于基于路径激活服务的文件路径。例如,可以基于某一条文件路径的状态(是否存在等)来启动某个服务。
Scope .scope 定义了来自systemd总线接口的信息,通常用来管理额外的系统进程
Slice .slice 定义了资源限额,基于Linux cgroup nodes实现。
Snapshot .snapshot 定义了一次当前的systemd状态,通常在对systemd做修改后回滚使用
Socket .socket 定义了进程间通信使用的socket,往往socket会与service相关联
Swap .swap 定义了系统中的交换空间
Timer .timer 定义了一个定时激活另一个单元的定时器

systemd Unit 中的 service 的 Type 参数用于定义服务的类型,可以是以下几种值:

  1. simple:默认值,表示服务将一直运行直到终止或失败。
  2. forking:表示在服务启动时会派生一个子进程,并且服务的主进程会在子进程启动后立即退出。
  3. oneshot:表示服务只运行一次,直到完成任务后就会退出。
  4. dbus:表示服务通过 D-Bus 进行激活和通信。
  5. notify:表示服务通过向 systemd 发送通知消息来指示其已准备好运行。
  6. idle:类似于 simple 类型,但是在没有活动发生时服务会等待一段时间再终止。

以centos7提供的sshd服务的unit文件文件例:

[root@192 ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

一个Unit文件包括三个部分:[Unit][unit type][Install],其中[unit type]在这里是[Service]

  • [Unit]部分中定义了这个服务的描述信息(Description)帮助文档(Documentation)与其他服务之间的依赖(After & Wants)
  • [Service]部分中定义了这个服务的运行类型(Type)环境变量文件(EnvironmentFile)服务启动命令(ExecStart)服务配置重新加载时执行的命令(ExecReload)服务进程结束的方式(KillMode)服务重启机制(Restart & RestartSec)
  • [Install]部分中定义了这个服务被哪些Unit依赖(WantedBy)

所以,sshd.service这个Unit文件告诉了systemd:这是一个叫做OpenSSH server daemon的服务,怕你们不知道怎么用,提供了两个manual可以给你们看,但是要想启动我这个sshd服务,你得先把network.targetsshd-keygen.service这两个服务启动起来。这两个服务到位之后,俺就会启动sshd服务,服务启动命令是/usr/sbin/sshd -D $OPTIONS。俺除了会启动服务,俺还会自己加载配置,俺也知道服务出错了应该要重启。哦对了,俺不是一个人独自运行,俺还是multi-user.target这个单元的依赖项,没有俺,它还起不来捏!俺厉害不(手动拽)!

防火墙配置

firewall-cmd --state ##查看防火墙状态,是否是running
systemctl start firewalld #启动防火墙
systemctl stop firewalld #关闭防火墙

systemctl status firewalld # 查看状态

systemctl disable firewalld #开机禁用

systemctl enable firewalld #开机启用 

firewall-cmd --get-zones # 列出支持的zone
firewall-cmd --get-active-zones #查看激活的zone是谁

firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no

firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务

firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
firewall-cmd --remove-port=80/tcp --permanent ##永久移除80端口
    参数:--zone    (作用域)
        --add-port=80/tcp   (添加端口,格式:端口/通讯协议)
        --permanent   (永久生效,没有此参数重启后失效)

firewall-cmd --reload #重新载入配置,比如添加规则之后,需要执行此命令

firewall-cmd --zone=public --list-ports ##查看已开放的端口
作者:admin  创建时间:2024-05-15 14:19
最后编辑:admin  更新时间:2024-06-07 13:02