首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使程序在Linux后台运行

如何使程序在Linux后台运行

作者头像
阿凡亮
发布于 2020-04-14 07:01:49
发布于 2020-04-14 07:01:49
9.8K00
代码可运行
举报
文章被收录于专栏:生物信息学生物信息学
运行总次数:0
代码可运行

经常在Linux上面运行程序都有这样的体验:

  1. 某个程序运行的时候,会产生大量的log(提示)信息,但实际上我们只想让它跑一下而已,log暂时不需要或者后面才有需要。
  2. 同时run多个相同或者不同程序的时候,占了好多的命令行界面,作为一个强迫症患者,就想要一个清爽的界面!
  3. 电脑不小心休眠了或者关机了,又或者wifi断开了,没网了,导致运行老久的程序直接中断了,又得重头开始!

◆ ◆ ◆ ◆ ◆

先来解决第一个问题,如何放到后台

很简单,就是在所有命令后面都加个空格和 “&” 符号就可以了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./test &

这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./test > out.txt 2>&1 &

2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的out.txt文件中,从此终端彻底清静了。

如果程序已经在运行了,其实也是有办法加入后台的,只需使用快捷键 ctrl-z 就能立马放到后台中了,不过这种方法其实是暂停了程序的运行,所以想要让程序继续运行还得输入 “fg” 命令让程序返回前台来。

那现在程序在后台运行了,我们怎么找到它呢?很简单,有两种方法:

1. jobs命令

jobs命令可以查看当前有多少在后台运行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jobs -l

此命令可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

2. ps命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ps -ef | grep test

用grep查询ps -ef的结果,就可以显示所有正在运行的任务中含有test关键词的程序具体信息了。

◆ ◆ ◆ ◆ ◆

nohup命令来避免程序中断

在命令的末尾加个&符号后,程序可以在后台运行,但是一旦当前终端关闭(即退出当前帐户),该程序就会停止运行。那假如说我们想要退出当前终端,但又想让程序在后台运行,该如何处理呢?

实际上,这种需求在十分很常见,比如想远程到服务器编译软件或者需要长时间的运行一个程序,但网络不稳定,一旦掉线就中止了,很浪费时间。

在这种情况下,我们就可以使用nohup命令。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup ./test &

如果仅仅如此使用nohup命令的话,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup ./test > out.txt 2>&1 &

这样一来,多管齐下,既使用了nohup命令,也使用了&符号,同时把标准输出/错误重定向到指定文件中。

PS:

还有一种也很常见的避免中断的方法,就是使用screen命令,它能够在一个真实终端下运行伪终端,我们可以在这个伪终端里面为所欲为,再也不用担心网络中断会对我们的进程造成影响,也不用给每个命令前都加上“nohup”。

但是screen的缺点是开很多screen进程的时候,会生成多个伪终端,比较占用系统资源,另外批量生成screen的同时并在screen里面运行程序有些困难,不如nohup + &批量处理的方便。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生物信息学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux 后台运行python .sh等程序,以及查看和关闭后台运行程序操作
直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。
学到老
2019/03/05
12.2K0
linux 后台运行进程:& , nohup
当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。
DevOps在路上
2023/05/16
5.7K0
linux 后台运行进程:& , nohup
linux命令后台运行
1. command & : 后台运行,你关掉终端会停止运行 2. nohup command & : 后台运行,你关掉终端也会继续运行
RainMark
2019/09/10
10.9K0
如何在后台运行Linux命令?
通常情况下,在 Linux 终端中运行命令时,我们必须等前一命令执行完成后,在输入并执行后一条命令,称之为在前台或前台进程中运行命令,进程在前台运行时,将占用您的外壳,并且您也可以使用输入设备与其终端进行交互。
杰哥的IT之旅
2020/06/18
4.6K0
Centos后台运行python程序
nohup python -u test.py > test.log 2>&1 &
JQ实验室
2022/02/10
1.7K0
Linux进阶命令-nohup&screen
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2024/11/01
3610
Linux进阶命令-nohup&screen
Linux 进程后台运行的几种方式(screen)
本文介绍了Linux进程后台运行的几种方式,包括nohup、setsid、screen等工具的使用方法,以及这些工具在系统管理、运维方面的应用。同时还介绍了如何通过screen工具创建、管理、恢复会话,以及如何使用nohup、setsid等命令在后台运行进程。
惨绿少年
2017/12/27
4.3K0
Linux nohup 用法
---- 最近在写一个监控服务程序,通过交叉监控来监控我们的线上服务。比如我有两台服务器分别为A和B,在A上部署监控程序来监控服务器B,在B上部署监控程序来部署A.由于监控服务要严格按照我们自定制的业务需求来监控,所有监控服务需要自己实现并部署在后台一直运行。所以我就选择了比较简单的nohup命令,比较轻量也很容易部署。 nohup 当用户logout、网络中断和断开连接时,中断会接收到HUP(hangup)信号从而关闭其所有运行的子进程。所以我们解决该问题有两种方式: 让进程忽略HUP signal。 让
吕海峰
2018/04/03
5.3K0
Linux nohup 用法
玩转服务器—从前台到后台,让你的任务无忧运行
在生信分析的过程中,往往一个步骤会非常耗时,如果任务只是放在前台运行,那么不仅妨碍我们继续操作,还会因为网络波动造成任务意外中断,因此对于服务器的使用,我们还必须了解一下如何把任务提交到后台运行。在上一期我们介绍了并行提交任务(玩转服务器—提交并行任务),其中提到了一嘴,把任务放到后台,那么今天让我们来看看还有哪几种常见的实现方法:
生信菜鸟团
2025/01/08
3090
玩转服务器—从前台到后台,让你的任务无忧运行
Linux后台运行程序最实用的两种方式
  Linux如何在后台跑程序?是刚接触Linux的同学都会遇到的问题。大家使用Linux操作系统时,或许都遇到过以下类似场景。
陈哈哈
2021/10/13
3.7K0
想让进程后台运行,试试Linux的nohup命令,3分钟学会。
nohup 的作用可以将程序以忽略挂起信号(SIGHUP)的方式运行。常见的用法是和& 命令一同使用,将命令放置到后台运行,即使终端挂掉,进程会忽略挂起信号,继续运行。鸟哥Linux私房菜完整版
程序员白楠楠
2021/01/29
1.2K0
如何在后台运行Linux命令
通常情况下,当你在终端运行一个命令,在你开始输入另外一个命令之前,你必须等待当前命令运行结束。这被称为在前台运行命令,或者前台进程。当一个进程在前台运行时,它占用了你的 shell,并且你可以通过输入设备和它进行交互。
雪梦科技
2020/05/11
8.5K0
如何在后台运行Linux命令
让linux程序在后台运行
最近要用php进程发奖励,因为要精确到秒执行,linux系统的定时用不了,于是写了个死循环,usleep是必须的,否则系统cpu占用很高的系统cpu。
用户3094376
2018/09/12
5.6K0
这些进程的后台可靠运行命令你都知道了吗
当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。
zenRRan
2018/07/25
8880
这些进程的后台可靠运行命令你都知道了吗
Linux 让进程在后台可靠运行的几种方法
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口、网络断开连接的干扰呢?
小小工匠
2021/08/16
1.2K0
Linux后台运行jar程序
在Linux系统中,有时候我们需要将Java程序以后台进程的方式运行,以便在关闭终端或退出登录时仍然保持程序的运行状态。本文将介绍如何在Linux中后台运行一个Java的jar程序。
大盘鸡拌面
2024/02/19
2.2K0
Linux - 请允许我静静地后台运行
枕边书
2018/01/04
1.9K0
Linux - 请允许我静静地后台运行
Linux nohup和&的使用说明,"2>1&"含义解释
Linux中nohup和&配合使用说明,以及使用时2>1& 的解释,还有Linux进程查询等命令
俺也想起舞
2019/07/24
13.5K0
Linux下几种运行后台任务的方法
今天就给大家介绍 linux 中几种后台任务的执行方法避免上述问题。1. 问题的引入程序员最不能容忍的是在使用终端的时候往往因为网络,关闭屏幕,执行 CT 今天就给大家介绍 linux 中几种后台任务的执行方法避免上述问题。 1. 问题的引入 程序员最不能容忍的是在使用终端的时候往往因为网络,关闭屏幕,执行 CTRL+C 等原因造成 ssh 断开造成正在运行程序退出,使得我们的工作功亏一篑。 其背后的主要原因在于上述的相关操作,shell 默认会发送中断信号给该终端 session 关联的进程,从而导致进
入门笔记
2022/06/03
3.4K0
使程序在Linux下后台运行
我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用putty远程连接到日本Linux服务器。所以使程序在后台跑有以下三个好处:
SingYi
2022/07/14
5.1K0
相关推荐
Linux 后台运行python .sh等程序,以及查看和关闭后台运行程序操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验