路漫漫其修远兮
吾将上下而求索

linux后台运行:nohup命令

https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html

我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。

场景:

如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?

我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

nohup 无疑是我们首先想到的办法。顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号

可见,nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename 2>&1"来更改缺省的重定向文件名。

nohup 示例

[root@localhost ~]# nohup ping www.baidu.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@localhost ~]# ps -ef |grep 3059
root      3059   984  0 21:06 pts/3    00:00:00 ping www.baidu.com
root      3067   984  0 21:06 pts/3    00:00:00 grep 3059

未经允许不得转载:江哥架构师笔记 » linux后台运行:nohup命令

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址