有时候我们运行一个程序,耗时比较长,所以在快下班的时候或是网络不稳定的时候就比较抓狂。 今天分享几个我在工作中用到的把程序放在后台运行的方法。

nohup

$ nohup --h
Usage: nohup COMMAND [ARG]...
or: nohup OPTION
Run COMMAND, ignoring hangup signals. --help display this help and exit
--version output version information and exit

当运行一个程序的时候,我们在退出当前账户,或者关闭终端的时候,程序都会收到一个SIGHUP的信号,nohup就是忽略这种信号,让程序不挂起。 nohup使用方法很简单,即:nohup command. 在使用过程中有几个小技巧:

1. 同时使用nohup和&

使用方法:nohup command &

在退出当前账户或是关闭终端的时候程序会收到SIGHUP信号,这个信号会被使用了nohup的程序忽略,但是如果使用了CTRL + C 结束命令,程序会收到SIGINT信号,这个信号还是会让程序终结,如果不想程序被结束,就在结尾加上一个&, 让程序也忽略SIGINT 信号

2. 重定向标准输出和标准错误

使用方法: nohup command > filename 2<&1 &

这里的1,2是文件描述符,0表示stdin标准输入,1表示stdout标准输出,2表示stderr标准错误, 还有一个/dev/null 表示空设备文件。

nohup 默认会把输出输出到nohup.out文件中,如果想重定向输出到别的文件,那么需要在nohup command后加入 > filename, 2<&1,表示把标准错误重定向到标准输出中。

setsid

$ setsid --h

Usage:
setsid [options] <program> [arguments ...] Run a program in a new session. Options:
-c, --ctty set the controlling terminal to the current one
-w, --wait wait program to exit, and use the same return
-h, --help display this help and exit
-V, --version output version information and exit

  

nohup 通过忽略HUP信号使进程避免中途被中断,如果我们的进程不属于接受HUP信号的终端子进程,那么就不会受HUP信号的影响。使用setsid可以帮助我们做到这一点。

使用方法: setsid command 

Linux --- 程序后台运行的几种方法的更多相关文章

  1. linux进程后台运行的几种方法 - nohup/setsid/&

    linux进程后台运行的几种方法 - nohup/setsid/& [转载]   我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务 ...

  2. linux进程后台运行的几种方法

    转载:http://hi.baidu.com/ntuxmzvdpzbnuxq/item/79131b93f606a348f0421562 我 们经常会碰到这样的问题,用 telnet/ssh 登录了远 ...

  3. Linux下使命令不受终端断开的影响,保持在后台运行的几种方法及原理

    摘自https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 记录一下Linux下使命令不受终端断开的影响,保持在后台运行的几个方法及其原理.当用 ...

  4. Linux 程序后台运行

    例子: shadowsocks 程序后台运行: sslocal -c /etc/shadowsocks-libev/config.json > /dev/>& & 参考: ...

  5. Linux如何让进程在后台运行的三种方法详解

    问题分析: 我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程.因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运 ...

  6. Linux 进程后台运行的几种方式(screen)

    Ctrl+z/bg/nohup/setsid/& 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: ./rsy ...

  7. Linux 进程后台运行的几种方式 screen

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80580779 本文出自[赵彦军的博客] screen是Linux窗口管理器,用户可 ...

  8. linux进程——后台运行的方法

    linux进程后台运行的几种方法: 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败. 如何让命 ...

  9. Linux 技巧:让进程在后台可靠运行的几种方法【转】

    我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...

随机推荐

  1. 颜色转换:#hhhfff->UIColor (MHHexColoring)

    MHHexColoring为开发者快速获取想要的十六进制颜色(Hex Color) 查找16进制色码的网站:http://www.color-hex.com // 版权属于原作者 MHHexColor ...

  2. jdk8-collect

    toMap 常用方式 public Map<Long, String> getIdNameMap(List<Account> accounts) { return accoun ...

  3. OpenCV中CvSVM部分函数解读

    CvSVM::predict函数解析:无论是Mat接口还是CvMat接口终于都是通过指针的形式调用的.也就是终于都是调用的下面函数实现的 float CvSVM::predict( const flo ...

  4. 【hdu2222】【poj2945】AC自动机入门题

    HDU2222 传送门 题目分析 裸题:注意构建自动机用的是模式串,思想和kmp很类似. code: #include<iostream> #include<cstdio> # ...

  5. 【t029】Mobile Service

    Time Limit: 3 second Memory Limit: 256 MB [问题描述] 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工), ...

  6. 左右Cwnd::Create()功能出现afxwin1.inl line:21错误的解决方案

    我最近在调试dll时刻,有一种模糊的断言错误,它是由主程序创建MFC 扩张DLL控制出口(从控制继承CWnd分类)时刻,呼叫Create()下列说法错误的功能: watermark/2/text/aH ...

  7. quartz结合多线程处理后台业务

    最近项目中有播放视频的需求,技术选型采用UMS播放器,免费版只能播放FLV格式的视频文件,因此需要对用户上传的视频进行格式转换,转换工具为FormatFactory,功能还是比较强大的.但是面临的一个 ...

  8. git安装使用详解

    Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何 ...

  9. vista/win7系统 红警/CS/星际争霸 局域网连接方法

    昨晚,闲来无事,忽然想起打红警来,于是和宿舍舍友商量一起联机打红警, 可是在win7下不能联机红警,网上很多人都这么说,昨晚我折腾了2小时,终于解决了这个问题. win7系统是可以联机打红警的!!!! ...

  10. 在JScript中使用正则表达式

    作者:朱金灿 来源:http://blog.csdn.net/clever101 不废话了,直接用代码说明吧: main(); function main() { try { // 运用正则表达式进行 ...