Linux 后台运行服务的全攻略:nohup、screen、tmux 和 systemd 的实战指南

news2024/9/20 3:20:48

Linux 后台运行服务的全攻略:nohupscreentmuxsystemd 的实战指南

在服务器运维或后台开发中,保持服务在后台稳定运行是一项非常重要的需求。无论是开发阶段还是生产环境,确保服务在终端关闭后持续运行是保证服务可用性的关键。本文将详细介绍几种常见的后台运行服务的方式,包括它们的使用方法、优缺点以及适用场景,帮助你根据具体需求选择最佳方案。


1. nohup & — 简单快速的后台运行

nohup 是 “no hang up” 的缩写,允许在后台运行命令,并确保进程不会因为终端关闭而中断。通常,nohup& 一起使用,将任务发送到后台。

基本使用:
nohup command &
  • nohup:允许命令在终端关闭后继续运行。
  • command:你希望执行的命令或脚本。
  • &:表示将命令放入后台执行。

nohup 的输出(包括标准输出和错误输出)默认会重定向到 nohup.out 文件中,除非手动指定其他文件。

优点:
  • 简单、直接,命令执行后即可自动在后台运行。
  • 终端关闭后,任务不会中断,适合简单的后台任务。
缺点:
  • 进程启动后无法回到交互式控制台,无法动态监控任务输出。
  • 日志管理较为粗糙,输出只能通过 nohup.out 文件查看。
使用场景:
  • 当你有一些短期任务或不需要监控输出的后台任务时,nohup 是不错的选择。

2. screen — 终端复用与灵活会话管理

screen 是一款经典的终端复用工具,允许你在一个终端会话中运行多个进程,并支持会话分离和恢复功能。即便终端断开,后台服务也会继续运行,适合需要交互管理的长期任务。

基本使用:
  1. 启动新的 screen 会话:

    screen -S my_session
    

    使用 -S 参数可以给会话命名,便于后续管理。

  2. screen 会话中执行命令后,可以按 Ctrl+A,然后按 DCtrl+A+D)来分离会话,进程依然在后台继续运行。

  3. 恢复会话:

    screen -r my_session
    
优点:
  • 支持随时恢复到后台进程,能够继续查看并与进程交互。
  • 多任务管理,允许一个会话中运行多个进程,非常适合并发任务。
  • 可以轻松监控和调试后台运行的服务。
缺点:
  • 使用 screen 时,管理多个会话可能稍显复杂,需要手动查看和恢复会话。
  • 资源占用稍高于简单的 nohup,对于资源有限的环境可能不太合适。
使用场景:
  • 当你有长时间运行的服务,并且需要随时监控或调试时,screen 是非常合适的工具,比如运行服务器进程、定期监控日志等。

3. tmux — 现代化的终端复用神器

tmux 是一个功能强大、现代化的终端复用器,类似于 screen,但其更灵活和高效,尤其在并发管理多个会话和窗口时表现突出。它支持分屏操作、快捷键自定义等功能,非常适合并行处理多个任务。

基本使用:
  1. 启动新的 tmux 会话:

    tmux new -s my_session
    
  2. 分离会话:按 Ctrl+B 然后按 D

  3. 恢复会话:

    tmux attach -t my_session
    
优点:
  • 支持分屏操作,极大提升了多任务处理的效率。
  • 快捷键操作流畅,用户体验优于 screen
  • 资源占用较低,性能表现良好。
缺点:
  • 学习曲线略高,初次使用者需要熟悉操作和快捷键。
使用场景:
  • 适合需要复杂会话管理和多窗口并行操作的开发者,尤其是在调试多个进程时,tmux 的分屏功能非常实用。

4. systemd — 稳健的后台服务管理器

systemd 是现代 Linux 系统中用于管理后台服务的标准工具,适合需要保证持久性和稳定性的服务。使用 systemd,你可以轻松地管理系统服务,并确保它们在系统启动时自动运行,甚至在进程失败时自动重启。

基本使用:

编写一个 .service 文件,并将其放置在 /etc/systemd/system/ 目录下。例如:

[Unit]
Description=My Background Service

[Service]
ExecStart=/path/to/your/command
Restart=always

[Install]
WantedBy=multi-user.target

然后通过以下命令启用和启动服务:

sudo systemctl enable my_service
sudo systemctl start my_service
优点:
  • 能够确保后台服务的持久性,即便是系统重启后,服务仍会自动启动。
  • 支持自动重启、失败处理等高级功能,非常适合生产环境。
缺点:
  • 配置较为复杂,需要编写 .service 文件,适合对系统有一定了解的用户。
使用场景:
  • 当你需要管理关键的后台服务时,尤其是生产环境中的守护进程或长期服务,systemd 是首选。

5. crontab — 定时任务的好帮手

crontab 是 Linux 系统的定时任务调度工具,适合周期性执行脚本或守护任务。你可以通过 crontab 设定任务在特定时间间隔运行,实现后台脚本的自动执行。

基本使用:

编辑 crontab 配置:

crontab -e

并添加以下内容:

* * * * * /path/to/your/script.sh

这会使脚本在每分钟运行一次。

使用场景:
  • 定时运行脚本或后台维护任务,特别适用于需要定期执行的操作,如备份、监控任务等。

6. 如何选择合适的后台运行工具?

  • 如果你只是需要运行一些简单的后台任务,并且不需要动态查看输出,nohup & 是最简单的选择。
  • 当需要与后台进程频繁交互或管理多个任务时,可以考虑使用 screentmuxtmux 的分屏和快捷键功能在调试和开发过程中尤为高效。
  • 在生产环境中,稳定性是重中之重,此时 systemd 是最佳选择,它可以确保服务的持久性,并提供故障恢复功能。
  • 对于周期性任务crontab 提供了简单而高效的调度方式,非常适合自动化运维任务。

总结

在后台运行服务时,选择合适的工具至关重要。从简单的 nohup 到现代化的 tmux,再到稳健的 systemd,每种方式都有其独特的优势和应用场景。希望本文为你在后台服务的管理中提供了清晰的思路,帮助你根据需求选择最佳方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通

WSL2实现linux子系统GPU直通 安装WSL2和Ubuntu 见https://blog.csdn.net/bule_shake/article/details/135992375 问题:wsl --update进度卡住 如果命令wsl --update进度一直为0,可以先运行wsl --shutdown,然后再次升级。 微软商店打不开、…

[2025]基于微信小程序慢性呼吸系统疾病的健康管理(源码+文档+解答)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

CTFshow——萌新隐写(未完待续)

萌新隐写2 首先暴力破解密码,初始密码设为19000000即可 我用的是ziperello 萌新隐写3 萌新隐写4 word打开 - > 打开设置 - > 隐藏文字 - >flag出现 萌新隐写5 中文转unicode 16进制转字符串 base32解码 萌新隐写6 暂时不会。。。。 隐写1 打开就看到头是…

基于微信小程序的健身房管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的健…

深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 这次目标本来要达到60%,但是却非常稳定的达到了40%,​😢​​😢​​😢​​😢​&am…

鹰眼降尘系统怎么样

鹰眼降尘系统是一种高效、智能且环保的粉尘治理解决方案,其表现优秀,朗观视觉小编认为,主要体现在以下几个方面: 智能化程度高:鹰眼降尘系统集成了先进的图像识别技术和机器学习算法,能够自动识别并跟踪粉尘…

2011年全国硕士研究生入学统一考试计算机科学与技术

1. 试卷背景: 试题:2011年全国硕士研究生入学统一考试计算机科学与技术学科联考中的计算机学科专业基础综合试题。难点:该问题的研究难点在于试题涵盖了计算机科学与技术的多个方面,包括数据结构、算法、计算机组成原理、操作系统…

Amber学习---小分子肽段的MD(第一天)

参考资料:1.科学网—AMBER基础教程B0:AMBER分子动力学模拟入门 - 李继存的博文 (sciencenet.cn) 2.Benjamin D. Madej & Ross Walker, An Introduction to Molecular Dynamics Simulations using AMBER 1 使用wsl(windows的子系统linu…

VirtualBox 网络设置

VirtualBox 是一款非常流行的虚拟化软件,在计算机上创建虚拟环境运行不同操作系统和应用程序。网络设置在 VirtualBox 中至关重要,它决定了虚拟机能否连接到互联网或其他计算机,实现数据传输和共享。 在 VirtualBox 中创建虚拟机时&#xff…

Android15之源码分支qpr、dp、beta、r1含义(二百三十二)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

【算法题】64. 最小路径和-力扣(LeetCode)

【算法题】64. 最小路径和-力扣(LeetCode) 1.题目 下方是力扣官方题目的地址 64. 最小路径和 给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 **说明:**每次只能向下或者…

提升Windows 7中谷歌浏览器隐私设置的方法

在数字化时代,保护个人隐私变得尤为重要。本文将详细介绍如何通过调整谷歌浏览器的隐私设置来提高您的隐私保护水平。(本文由https://www.liulanqibuluo.com/站点的作者进行编写,转载时请进行标注。)以下是具体的操作步骤&#xf…

有源滤波器UAF42

有源滤波器模块,在电路板上同时实现了低通,高通,带通 滤波器,可选其一进行输出,并可通过改变滑变阻值,轻松调节其滤波器中心频率,Q值,通带增益等, 也可方便实现Butterwo…

GUI编程16:图片按钮、单选框、多选框

视频链接:18、图片按钮、单选框、多选框_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p18&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.图片按钮代码示例 package com.yundait.lesson05;import javax.swing.*; import java.awt.*; impo…

硬件检测工具 | CPU-Z v2.11.0 官方中文绿色版

CPU-Z是一款广受欢迎的硬件检测工具,主要用于收集电脑处理器的详细信息。这款软件能够提供关于CPU的详细数据,包括处理器名称、编号、代号、进程和缓存等信息。 此外,CPU-Z还能实时监测每个内核的内部频率和内存频率,以及收集主板…

行人动作行为识别系统源码分享

行人动作行为识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

pytorch入门(2)——TensorBoard的使用

TensorBoard 是Google开发的一个机器学习可视化工具。其主要用于记录机器学习过程,例如: 记录损失变化、准确率变化等记录图片变化、语音变化、文本变化等,例如在做GAN时,可以过一段时间记录一张生成的图片绘制模型 TensorBoard…

【JAVA】数据脱敏技术(对称加密算法、非对称加密算法、哈希算法、消息认证码(MAC)算法、密钥交换算法)使用方法

文章目录 数据脱敏的定义和目的数据脱敏的技术分类对称加密算法非对称加密算法哈希算法消息认证码(MAC)算法密钥交换算法 数据脱敏的技术方案实现字符替换哈希算法(例如:SHA-3 算法)消息认证码(MAC)算法(CM…

【Vmware16安装教程】

📖Vmware16安装教程 ✅1.下载✅2.安装 ✅1.下载 官网地址:https://www.vmware.com/ 百度云盘:Vmware16下载 123云盘:Vmware16下载 ✅2.安装 1.双击安装包VMware-workstation-full-16.1.0-LinuxProbe.Com.exe,点击…

对 JavaScript 原型的理解

笔者看了一些有关 JavaScript 原型的文章有感而发,就将所感所悟画了下来如果有理解错误和不足的地方,欢迎各位大佬指出,笔者感激不尽