Linux如何部署服务并设置为开机自启

简介: 系统ctl命令用于管理Linux服务,包括启动、停止、重启和重载配置等操作。journalctl命令可查看特定服务日志。编写服务文件时需定义[Unit]、[Service]和[Install]部分,通过systemctl管理新服务并设置开机自启。
  1. systemct命令系列

    1. 核心管理命令
      1. start
        1. 启动一个服务
      2. stop
        1. 停止一个服务
      3. restart
        1. 重启一个服务
      4. reload
        1. 重新加载配置
      5. status
        1. 查看服务状态
    2. 开机自启管理命令
      1. enable
        1. 设置服务开机自启
      2. disable
        1. 取消服务开机自启
      3. is-enabled
        1. 检查服务是否开机自启
      4. mask
        1. 彻底禁用服务
      5. unmask
        1. 取消禁用
    3. 查看与诊断命令
      1. list-units
        1. 列出所有正在运行的单元
      2. list-unit-files
        1. 列出所有已安装的单元文件及其状态
      3. show
        1. 显示服务的详细属性
      4. cat
        1. 查看服务的单元文件内容
  2. journalctl -u

    1. 查看特定服务的日志
    2. journalctl -u nginx -f
      1. 实时监控Nginx的日志输出,像看直播一样
    3. journalctl -u nginx --since "10 min ago
      1. 只看最近10分钟的日志
  3. 编写服务清单

    1. 所有由我们自定义的服务清单,都应该放在/etx/systemd/system/目录下
    2. 一个典型的.service文件由三个部分组成
      1. [Unit](服务的自我介绍)
        1. Description
          1. 服务的描述,简单易懂
        2. After
          1. 定义启动顺序
          2. After=network.target
            1. 意思是,这个服务硬爱在网络准备好之后再启动
        3. Wants/Requires
          1. 定义依赖关系
            1. Wants
              1. 弱依赖
                1. 它依赖的服务启动失败了,不影响自己启动
            2. Requires
              1. 强依赖
                1. 强依赖无法启动,要启动的服务也启动不了
      2. [Service](服务的核心工作)
        1. Type
          1. 服务的启动类型
            1. simple(默认)
              1. ExecStart后面的命令就是主进程
            2. forking
              1. ExexStart会启动一个进程,这个进程会fork一个子进程作为主进程,然后父进程退出
                1. 传统后台守护进程常用
            3. oneshot
              1. 类似simple,但systemd会等待这个命令执行完毕才认为服务启动成功,适合一次性脚本
        2. User/Group
          1. 指定用哪个用户和组来运行服务,为了安全,一般不使用root
        3. WorkingDirectory
          1. 命令执行前切换到的工作目录
        4. ExecStart
          1. 核心
            1. 定义启动服务的命令
        5. ExecReload
          1. 定义执行systemctl reload时运行的命令
        6. ExexStop
          1. 定义执行systemctl stop时运行的命令(可选)
        7. Restart
          1. 定义什么情况下自动重启服务
            1. no(默认)
              1. 不重启
            2. on-failure
              1. 当服务以非0状态码退出时重启
            3. always
              1. 只要服务退出,不管什么原因,都重启
      3. [Install](服务的户口本)
        1. WantedBy
          1. 定义服务属于哪个“目标集”,对于绝大多数开机自启的网络服务,都写WantedBy=multi-user.target
            1. 表示系统进入“多用户模式”时,这个服务就应该被启动
              1. systemctl enable命令就是靠这个配置来创建软链接的
  4. 示例

    1. 编写服务清单文件

    2. 用systemctl管理新服务

      1. 通知systemd,系统中新增了服务
        1. sudo systemctl daemon-reload
          1. 每次修改或新增.service文件后,必须执行此命令
      2. 启动服务
        1. sudo systemctl start [xxx].service
      3. 检查状态
        1. systemctl status [xxx].service
      4. 验证脚本是否工作
        1. tail -f /tmp/[xxx].log
      5. 设置开机自启
        1. sudo systemctl enable [xxx].service
      6. 停止与禁用
        1. sudo systemctl stop [xxx].service
        2. sudo systemctl disable [xxx].service
  5. 注意

    1. 一般使用命令来设置开机自动启动,而不是使用,service配置文件中
目录
相关文章
|
2月前
|
存储 调度 KVM
深入浅出KVM虚拟化技术原理——Ansible安全基线配置(一)
本文深入解析KVM虚拟化核心机制,涵盖内核如何调度QEMU进程与KVM模块协同工作、CPU虚拟化扩展(VT-x/AMD-V)的硬件加速原理,以及存储池的管理与优势,助你全面掌握KVM底层运行逻辑。
333 11
|
JavaScript 前端开发 Java
内存管理和内存泄露(闭包、作用域链)(三)
内存管理和内存泄露(闭包、作用域链)
172 0
|
2月前
|
JSON 网络安全 数据格式
深入浅出Ansible技术原理——Ansible安全基线配置(一)
本系列深入解析Ansible安全自动化,涵盖其无代理、幂等性、声明式三大设计哲学,剖析基于Python的内核原理与SSH通信机制,并详解Inventory、Roles、Handlers、Vault等核心组件与最佳实践,助你从入门到精通,构建高效、安全、可复用的自动化运维体系。
191 7
|
2月前
|
设计模式 缓存 安全
无锁编程与原子操作:构建极致性能的高并发队列
本文深入探讨无锁编程与原子操作在高并发队列中的应用,通过CAS、环形缓冲、版本化引用等技术,实现高性能、低延迟的线程安全队列,显著提升系统吞吐量,适用于日志、网络通信等高并发场景。
177 10
|
2月前
|
Java Nacos Sentinel
Spring Cloud Alibaba 深度实战:Nacos + Sentinel + Gateway 整合指南
本指南深入整合Spring Cloud Alibaba核心组件:Nacos实现服务注册与配置管理,Sentinel提供流量控制与熔断降级,Gateway构建统一API网关。涵盖环境搭建、动态配置、服务调用与监控,助你打造高可用微服务架构。(238字)
834 10
|
2月前
|
人工智能 自动驾驶 Java
AI时代,拒当“代码缝合师”:用“组合思维”重掌“原材料”的控制权
本文探讨AI时代为何仍需深究技术原理,揭示“拿来主义”背后是大脑“直觉”的省电本能。提出“组合思维”:通过主动思考拆解技术组合逻辑,将“元剧本”喂养直觉,实现从“代码缝合师”到“技术谱曲家”的思维跃迁,真正掌控技术本质。
132 6
|
2月前
|
安全 Ubuntu 应用服务中间件
基于code-server的云端编程环境部署
本文档描述如何在 Ubuntu 主机上部署 code-server(即“网页版 VS Code”),并通过 autossh 将服务反向隧道到跳板机、使用 Nginx 反向代理域名访问、以及使用 certbot 配置 HTTPS。适合在多设备间共享同一开发环境、并解决个人主机动态公网 IP 的访问问题。
672 5
|
2月前
|
人工智能 缓存 编解码
FFmpeg 官方汇编课程:写出快 5 倍的视频处理代码
FFmpeg官方开源汇编教程asm-lessons,手把手教你用SIMD指令优化音视频处理性能。从工具链到实战案例,掌握工业级高性能代码编写,提升程序效率数倍,适合C语言开发者进阶学习。
223 10
|
2月前
|
缓存 NoSQL Java
springboot整合redis五种数据结构API
springboot整合redis五种数据结构API
120 4
|
1月前
|
SQL 移动开发 Oracle
Oracle 数据库查询:多表查询
想把分散在多个表里的数据拼起来看?核心就靠JOIN(连接)和子查询。可以用INNER JOIN找到两边都匹配的记录,或用OUTER JOIN查看单边也存在的数据。一个非常强大的技巧,是把一个查询结果当成临时表来用,能让复杂的统计分析变得清晰。再结合新版本里简洁的分页语法,跨表取数和展示就得心应手了。
180 4