nohup程序后台执行

Linux常用命令,用于不挂断的执行程序。

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。

nohup Command [ Arg ... ] [ & ]

如果不将 nohup 命令的输出重定向,输出将附加到当前目录的nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么Command 参数指定的命令不可调用。
如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

1. nohup

顾名思义,nohup的用途就是让提交的命令忽略所有的hangup信号。

2. setsid
在一个新的会话中运行命令,从而可以避开当前终端发出的HUP信号。
使用方法:setsid COMMAND [ARG]…

3. &
可以结合()产生一个新的子shell并在这个子shell中将任务放置到后台运行,从而不受当前shell终端的HUP信号影响。

通常的使用方式为:

nohup ./filename.sh > filename.log 2>&1 &

三点理由:
1)nohup保障进程不会被hangup信号异常中断;
2)将任务放置到后台运行,不占用当前的终端;
3)将错误输出也打印到log中,默认>只有标准输出,错误输出没有。

4.控制进程
通过以下命令,我们可以对放入到后台的命令进行控制

将查看到的某个后台进程放回到前台:
直接输入:fg {jobid} //这里的{jobid}是通过jobs命令中看到的进程前[]中的数字。

将当前正在前台运行的进程放到后台运行:
先敲下快捷键:ctrl +z //暂停当前正在运行的进程。
再执行:bg

终止当前正在前台运行的进程:
直接敲下快捷键:ctrl +c

查看当前后台进程 jobs –l

5.disown
亡羊补牢,为没有使用nohup与setsid的进程加上忽略HUP信号的功能。
使用方法:
将当前正在前台运行的进程放到后台运行;
然后执行disown -h %{jobid}

用disown -h jobspec 来使某个作业忽略HUP信号。
用disown -ah 来使所有的作业都忽略HUP信号。
用disown -rh 来使正在运行的作业忽略HUP信号。

6.通过screen来实现稳定的后台运行
screen是建立一个新的全屏虚拟会话终端,这个会话只有在手动输入exit的时候才会退出,在这个会话里执行的命令不用担心HUP信号会对我们的进程 造成影响,因此也不用给每个命令前都加上“nohup”或“setsid”了,非常适合我们有规划的执行大量的后台任务,可以非常方便的让我们对这些后台 任务进行管理。

http://www.ibm.com/developerworks/cn/linux/l-cn-screen/

时间: 2024-08-07 06:32:47

nohup程序后台执行的相关文章

linux 如何让程序后台执行

$ (./test.sh &) $ setsid ./test.sh & $ nohup ./test.sh & 具体的转自:http://digdeeply.org/archives/06281192.html 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: Example 1 2 3 4 5 $ ./test.sh & [1] 17208 $ jobs -l [1]+ 17208 Run

Linux nohup 程序后台运行

&方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld_safe --user=mysql & nohup方式: 但是我们很多程序并不象mysqld一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭.为了能够后台运行,我们需要使用nohup这个命令,比如我们有个star

如何让程序在后台执行

示例:查看系统负载的脚本 #!/bin/sh while true do uptime >/tmp/uptime.log sleep 1 done [[email protected] scripts]# tail -f /tmp/uptime.log 21:37:26 up 5:49, 2 users, load average: 0.00, 0.00, 0.00 tail: /tmp/uptime.log: file truncated 21:37:27 up 5:49, 2 users,

所经历的大文件数据导出(后台执行,自动生成)

所经历的大文件数据导出(后台执行,自动生成) http://www.cnblogs.com/fanfan259/p/4710019.html 阅读目录 一.前言 二.生成excel文件 三.让程序在后台执行 四.显示文件生成进度 五.下载文件 六.上线后出现的问题 七.相应的后续优化 八.后记 一.前言 记录一下以前做的后台excel格式导出统计信息的功能,也是最近同事问到了相关东西,一时之间竟忘了具体的细节,因此记录一下: 大家知道,excel导出数据的功能,后台几乎是必须功能,一般都是点击后

在linux后台执行脚本

1. 使用&符号在后台执行命令 你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:. $ ./my-shell-script.sh & 2. 使用nohup在后台执行命令 使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉.要避免这种情况,你可以使用nohup命令,如下所示: $ nohup ./my-shell-script.sh & 3. 使用screen执行命令 通过nohup和&符号在后台执行命令

shell脚本定时后台执行

1. 使用&符号在后台执行命令 你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:. $ ./my-shell-script.sh & 2. 使用nohup在后台执行命令 使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉.要避免这种情况,你可以使用nohup命令,如下所示: $ nohup ./my-shell-script.sh & 3. 使用screen执行命令 通过nohup和&符号在后台执行命令

运行python脚本后台执行

最近搞到了一台服务器,挂一个脚本刷刷河畔在线时间.脚本随便写了两下,能跑到什么时候就随缘了 https://blog.csdn.net/philosophyatmath/article/details/80174687 运行python脚本后台执行 1 脚本后加& python3 run.py >/dev/null 2>&1 & 2 使用nohup在后台执行命令 nohup python3 run.py >/dev/null 2>&1 & 3

Linux系统下程序后台运行nohup,&,screen等

"nohup" 在用户ssh终端断开或者网络端口时,终端没有HUP信号则会关闭所有子进程. nohup则会让进程忽略HUP信号,不受终端断开限制 一般在结尾加上"&"将命令同时放到中断后台运行 nohup标准输出和标准错误输出会被重定向到nohup.out文件中 [[email protected] ~]# nohup ping www.ibm.com & [1] 3059 nohup: appending output to `nohup.out'

Linux后台执行脚本文件,nohup

看运维人员执行nohup命令后,把程序放在后台执行,很高大上,就研究了一下,这个命令. nohup命令及其输出文件 nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令.该命令可以在你退出帐户/关闭终端之后继续运行相应的进程.nohup就是不挂起的意思( n ohang up). 该命令的一般形式为:nohup command & 使用nohup命令提交作业 如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为