0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux后台进程管理详解

马哥Linux运维 来源:博客园 2025-04-25 11:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概念

当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。

&方法

使用[shell] &可以使进程在后台运行,但是用户终端退出时,进程结束,也就是当你连接的终端断开时,你后台运行的服务、命令等自动停止
例如:

|  |   |
| --- |---|
||# ping www.baidu.com的返回信息会输出到ping.log日志文件中,最后输出的jobnumber和PID |
|| root@master-01:~# ping www.baidu.com &>> ping.log & |
|| [1]1254658|
|   ||
||# 查看运行进程 |
|| root@master-01:~# jobs |
|| [1]+ Running        ping www.baidu.com &>> ping.log & |
|   |root@master-01:~# ps -aux | grep ping |
|   |root   1254658 0.0 0.0  9048 1344 pts/0  S  19:10  0:00 ping www.baidu.com|
||   |
|   ||
||# 结束job,使用kill %jobid方式杀死job |
|| root@master-01:~# kill %1 |

nohup方法,推荐使用!!!

使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是当前控制台关闭后,作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up / ignoring hangup signals) 即 忽略挂起信号一直在后台执行。

语法:

|   |   |
| --- | --- |
|   | nohup Command[ Arg … ][& ]|

示例:

|  |   |
| --- |---|
||# 后台运行ping 作业,作业会将信息默认输出到当前目前下的nohup.out文件中 |
|| root@master-01:~# nohup ping www.baidu.com & |
|| [1]1266070|
|   |root@master-01:~# nohup: ignoring inputandappending output to 'nohup.out'|
||# 这里要按一下回车 |
||   |
|   ||
||# 查看作业 |
|| root@master-01:~# jobs |
|| [1]+ Running        nohup ping www.baidu.com & |
|   ||
||# 查看nohup.out文件 |
|| root@master-01:~# ll nohup.out |
|| -rw-------1root root1745Apr2119:23nohup.out |
|   ||
||# 杀死作业 |
|| root@master-01:~# kill %1 |
||   |
|   |# 查看作业是否退出|
|| root@master-01:~# jobs |
|| [1]+ Terminated       nohup ping www.baidu.com |
|   |  |

nohup将信息输出到指定文件

语法:

|   |   |
| --- | --- |
|   |nohupcommand>> myout.file 2>&1 & |

解析:

• command>>out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是追加输出到out.file文件中。

• 2>&1 是将标准出错 重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个&, 是让该命令在后台执行。

示例:

|   |   |
| --- | --- |
|   |# ping命令输出到ping.log日志文件中 |
|   | root@master-01:~# nohup ping www.baidu.com >> ping.log 2>&1 & |
|   | [1]1270295|
|   |   |
|   |# 查看ping.log文件 |
|   | root@master-01:~# tail -f ping.log |
|   |64bytes from182.61.200.110(182.61.200.110): icmp_seq=1ttl=48time=6.03ms |
|   |64bytes from182.61.200.110(182.61.200.110): icmp_seq=2ttl=48time=5.99ms |
|   |64bytes from182.61.200.110(182.61.200.110): icmp_seq=3ttl=48time=6.01ms |
|   |64bytes from182.61.200.110(182.61.200.110): icmp_seq=4ttl=48time=6.01ms |
|   |64bytes from182.61.200.110(182.61.200.110): icmp_seq=5ttl=48time=6.00ms |
|   |   |
|   |# 杀掉作业进程 |
|   | root@master-01:~# jobs |
|   | [1]+ Running         nohup ping www.baidu.com >> ping.log2>&1& |
|   | root@master-01:~# kill %1 |
|   | root@master-01:~# jobs |
|   | [1]+ Terminated       nohup ping www.baidu.com >> ping.log2>&1|

前后台进程的切换和控制

CTRL+Z键盘组合键可以使一个正在前台执行的命令放到后台,并且处于暂停状态
bg可以将一个后台运行的命令变成在后台运行,如果后台有多个命令,可以用bg %jobnumber将选中的命令调出运行
fg可以将后台的命令调至前台继续运行,如果后台有多个命令,可以用fg %jobnumber将选中的命令调出

06436922-2028-11f0-9310-92fbcf53809c.png

image

screen方式

Screen是一个全屏窗口管理器,它在多个进程(通常是交互式shell)之间多路传输物理终端。

安装screen

|   |  |
|---| --- |
|   |# centos安装screen |
|   |yuminstall-yscreen|
|  |   |
|   |# 在Ubuntu上安装并使用screen |
|   |sudo apt update -y # 更新包列表 |
|   |sudo aptinstallscreen-y# 安装screen工具 |

使用方式

|   |   |
| --- | --- |
|   |# 创建一个新的窗口 |
|   | screen -Stest|
|   |   |
|   |# 进入窗口后 执行文件 |
|   | python test.py |
|   |   |
|   |# 退出当前窗口 |
|   | ctrl+a+d  (方法1:保留当前窗口) |
|   | screen -d (方法2:保留当前窗口) |
|   |exit   (方法3:退出程序,并关闭窗口) |
|   |   |
|   |# 查看窗口 |
|   | screen -ls|
|   |   |
|   |# 重新连接窗口 |
|   | screen -rid或窗口名称 |

相关快捷键

|   |   |
| --- | --- |
|   | Ctrl+ac :创建窗口 |
|   | Ctrl+aw :窗口列表 |
|   |   |
|   | Ctrl+an :下一个窗口 |
|   | Ctrl+ap:上一个窗口 |
|   |   |
|   | Ctrl+a0-9:在第0个窗口和第9个窗口之间切换 |
|   |   |
|   | Ctrl+aK(大写) :关闭当前窗口,并且切换到下一个窗口 |
|   | (当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态) |
|   |   |
|   | exit :关闭当前窗口,并且切换到下一个窗口 |
|   | (当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态) |
|   |   |
|   | Ctrl+ad :退出当前终端,返回加载screen前的shell命令状态 |

链接:https://www.cnblogs.com/huangSir-devops/p/18839251

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217987
  • Shell
    +关注

    关注

    1

    文章

    373

    浏览量

    25174
  • 进程
    +关注

    关注

    0

    文章

    208

    浏览量

    14478

原文标题:彻底掌握Linux后台进程管理:提升服务器稳定性的实战技巧

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux的内存管理是什么,Linux的内存管理详解

    Linux的内存管理 Linux的内存管理是一个非常复杂的过程,主要分成两个大的部分:内核的内存管理
    的头像 发表于 05-11 17:54 6895次阅读
    <b class='flag-5'>Linux</b>的内存<b class='flag-5'>管理</b>是什么,<b class='flag-5'>Linux</b>的内存<b class='flag-5'>管理</b><b class='flag-5'>详解</b>

    Linux开发_Linux进程编程

    介绍Linux进程概念、进程信号捕获、进程管理相关的命令的使用等知识点。
    的头像 发表于 09-17 15:38 1978次阅读
    <b class='flag-5'>Linux</b>开发_<b class='flag-5'>Linux</b>下<b class='flag-5'>进程</b>编程

    Linux使用Systemd管理进程服务

    今天浩道跟大家分享linux运维中大家很少用到的一个硬核干货,使用 Systemd 管理进程服务。让你体验一下该技巧带来的便捷性!
    发表于 12-12 09:02 822次阅读

    Linux内核进程管理与调度:策略优化与实践分析

    今天给大家上点硬货,关于Linux进程管理和调度是学习和理解Linux的必学知识。为协调多个进程 "同时" 运行,现代操作系统通常使用
    发表于 05-08 09:42 1507次阅读
    <b class='flag-5'>Linux</b>内核<b class='flag-5'>进程</b><b class='flag-5'>管理</b>与调度:策略优化与实践分析

    详解linux进程管理

    进程需要了解 进程,父进程进程组,会话和控制终端的相关概念。进程和父进程:每个
    发表于 08-07 08:28

    Linux进程管理

    Linux进程管理
    发表于 05-20 10:53

    LINUX下的进程管理问题如何解决

    基于LINUX下的进程管理问题
    发表于 05-20 07:58

    linux系统进程存在状态及管理

    linux系统进程存在状态及管理详解
    发表于 05-21 06:28

    Linux进程管理

    Linux进程管理 本章主要介绍进程的概念、状态、构成以及Linux进程的相关知识。 掌握
    发表于 04-28 14:57 0次下载

    Linux守护进程详解

    分享到:标签:进程控制 Linux 守护进程进程 7.3 Linux守护进程 7.3.1 守
    发表于 10-18 14:24 0次下载
    <b class='flag-5'>Linux</b>守护<b class='flag-5'>进程</b><b class='flag-5'>详解</b>

    基于Linux进程管理的详细剖析

    上一篇,我们讲到了Linux内核开发和应用程序开发,今天我们来讲讲Linux重点部分Linux进程管理
    的头像 发表于 01-26 11:24 4123次阅读
    基于<b class='flag-5'>Linux</b><b class='flag-5'>进程</b><b class='flag-5'>管理</b>的详细剖析

    Linux进程管理:什么是进程进程的生命周期

    所有运行在Linux操作系统中的进程都被task_struct结构管理,该结构同时被叫作进程描述。一个进程描述包含一个运行
    的头像 发表于 02-15 14:29 8823次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>进程</b><b class='flag-5'>管理</b>:什么是<b class='flag-5'>进程</b>?<b class='flag-5'>进程</b>的生命周期

    你了解过Linux后台服务进程的开发过程?

    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程
    发表于 05-13 09:21 2047次阅读

    学会Linux进程管理的方法

    Linux 是一种动态系统,能够适应不断变化的计算需求。Linux 计算需求的表现是以进程 的通用抽象为中心的。进程可以是短期的(从命令行执行的一个命令),也可以是长期的(一种网络服务
    发表于 05-16 17:19 967次阅读
    学会<b class='flag-5'>Linux</b><b class='flag-5'>进程</b><b class='flag-5'>管理</b>的方法

    Linux系统进程管理入门指南

    Linux 系统中,进程是正在运行的程序的实例。理解进程管理、查看和控制对于系统管理员和开发者来说非常重要
    的头像 发表于 04-22 14:34 857次阅读
    <b class='flag-5'>Linux</b>系统<b class='flag-5'>进程</b><b class='flag-5'>管理</b>入门指南