让进程在后台运行

执行一个比较耗时的命令,由于网络不稳定导致回话断开,命令别中断

如果让一个命令在后台稳定运行?

原理:

用户注销或网络断开时,终端会收到 hup(hangup)信号,从而关闭所有子进程。

解决办法

1、让进程忽略 HUP 信号

2、让进程运行在新的会话里

方法1:

nohup 的用途就是让提交的命令忽略 hangup 信号

nohup command &>log.txt &  #此时 ppid 为 1 (init进程)

方法2:

screen : screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端

#建立一个处于断开模式下的会话(并指定其会话名)
screen -dmS session name

#来列出所有会话
用screen -list

#重新连接指定会话
screen -r session name

#断开会话
CTRL-a d

在screen中 exit 则中断该screen

此时 bash 是 screen 的子进程,而 screen 是 init(PID为1)的子进程。那么当 ssh 断开连接时,HUP 信号自然不会影响到 screen 下面的子进程了

参考 :https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

注意:该文中其他方式在脚本有输出的时候并未测试通过!

时间: 2024-10-11 00:20:30

让进程在后台运行的相关文章

Linux入门之Linux环境下如何让进程在后台运行

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持32位和64位硬件.Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统. 一. nohup / setsid / & 使用场景:如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢? 我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让

用PHP实现守护进程任务后台运行与多线程(php-resque使用说明)

消息队列处理后台任务带来的问题 项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操作,显然会有更好的用户体验. 为了实现类似的需求,Web项目中一般的实现方法是使用消息队列(Message Queue),比如MemcacheQ,RabbitMQ等等,都是很著名的产品. 消息队列说白了就是一个最简单的先进先出队列,队列的一个成员就是一段文本.正是因为消息队列实在太简单了,当拿着消息

Linux 技巧:让进程在后台运行的可靠方法

原文链接:http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作? 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理

【简单的linux命令】1.解压、查看进程和后台运行

1.将tar.gz的压缩文件解压到指定目录 #将kfcenter.tar.gz解压到当前目录下的kfcenter文件中 tar -zxvf kfcenter.tar.gz -C ./kfcenter 2.查看当前运行的java进程 #查看当前正在运行的进程,并从其中筛选出跟java命令相关的 ps aux|ps java 3.后台运行 #将kfcenter.war运行起来,并且一直在后台运行 nohup java -jar kfcenter.war &

linux 进程前台后台运行

如果当前程序已经在运行,使用ctrl + z暂停程序并放置后台(注意程序未终止)然后在bash里面输入jobs -l 找到刚才程序的jobs号:jobs从1开始排序...比如当前程序的jobs号为1,然后输入bg %1:然后程序就在后台运行了. 要想把程序从后台挪回前台,命令为fg %1.

Linux:让进程在后台运行

学习之余我最大的乐趣是找一部不错的电影慢慢品味,这也是我缓解压力的最好方式之一,由于我常去的字幕组网站需要签到才可以下载字幕,像这种娱乐网站谁有时间天天记得去签到呢,but作为一个准程序猿应该有更好的办法.果然我在github上逛了逛,便发现的一个不错的签到脚本,看来很多人都着和我一样的刚需呀,这里附上地址. 一动手很多问题便接踵而至,我打算把这个脚本运行在我的腾讯云服务器上面,并且定一个时间,让它每天在固定的时间run.可是我用的ssh 登录的远程Linux 服务器,如果直接按照那脚步的API

linux中mongodb在后台运行进程

# 方法1:(推荐)# --fork 选项将会通知 mongod 在后台运行/path/to/MongoDB_Dir/bin/mongod --logpath /path/to/file.log --logappend --fork # 方法2:# 将输出重定向到 file.log 文件# & 将该进程置于后台运行/path/to/MongoDB_Dir/bin/mongod >> /path/to/file.log & # 还可以这样运行(不记录日志)# 因为所有重定向到位桶

Linux 进程后台运行

Linux 进程后台运行 1.进程在当前终端后台运行.(关闭终端后进程自动退出) sh test.sh & 注:运行进程后跟 "&" 2.进程长期后台运行不受终端关闭影响. nohup sh test.sh & 注:使用nohup 命令配合 & 实现. Linux 后台进程管理命令 ctrl+z把前台的进程放入后台,并stop. #查看后台进程. 命令:job -s #控制台后台睡眠500秒."&"后台执行. 命令:sleep

linux命令后台运行

1.在下达的命令后面加上&,就可以使该命令在后台进行工作,这样做最大的好处就是不怕被ctrl+c这个中断指令所中断. 2. 那大家可能又要问了,在后台执行的程序怎么使它恢复到前台来运行呢?很简单,只用执行fg这个命令,就可以了. 3.可能有些同学又要问了,我现在已经在前台运行的命令,我能把它放到后台去运行么?当然可以了,只要执行ctrl+z就可以做到了.是不是很赞啊! 4.说到这里可能有些同学又要问了,如果我有多个进程在后台运行,那如何恢复到前台来执行呢?这时候就要用到jobs这个命令了,通过j