nohup 与 & 的区别及用法

nohup
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用n o h u p命令。该命令可以在你退出帐户之后继续运行相应的进程。n o h u p就是不挂起的意思( no hang up)。 在Linux/Unix下,只有守护进程在脱离终端后能继续执行,而普通进程在关闭终端时会因收到SIGHUP信号(挂起信号)而退出。因此,为了长时间运行普通进程,需要使用nohup命令。


该命令的一般形式为:

代码:
nohup command &

使用nohup命令提交作业 
如果使用n o h u p命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,nohup.out文件缺 省写在当前目录下,如果在该目录下无写权限,则试图写到$HOME/nohup.out中,如果仍然失败,整个命令执行失败。

另外指定了输出文件:

代码:
nohup command > myout.file 2>&1


在上面的例子中,输出被重定向到m y o u t . f i l e文件中。 
让我们来看一个例子,验证一下在退出帐户后相应的作业是否能够继续运行。我们先提交一个名为p s 1的日志清除进程: 

代码:
$nobup ps1 &


现在退出该s h e l l,再重新登录,然后执行下面的命令: 

代码:
$ps x |grep ps1


我们看到,该脚本还在运行。如果系统不支持ps x命令,使用ps -ef|grep ps1命令。
5.一次提交几个作业 
如果希望一次提交几个命令,最好能够把它们写入到一个s h e l l脚本文件中,并用n o h u p命令来执行它。 
例如,下面的所有命令都用管道符号连接在一起;我们可以把这些命令存入一个文件,并使该文件可执行。 

代码:
cat /home/accounts/qrt_0499 | /apps/bin/trials.awk | sort | lp 
$cat > quarterend 
cat /home/accounts/qtr_0499 | /apps/bin/trials.awk | sort | lp 
<ctrl-D>


现在让它可执行: 

代码:
$ chmod 744 quarterend


我们还将该脚本的所有输出都重定向到一个名为q t r. o u t的文件中。 

代码:

nobup ./quarterend > qtr.out 2>

 

nohup与&的区别:
nohup只是让命令忽略SIGHUP命令而已;&则让命令在后台运行,至于该命令是否能在脱离终端后继续执行则要看进程是否是守护进程,如果不是,则需要nohup来帮忙。

这里是重点。让我在工作上失误


Tips:使用 jobs 查看任务,使用 fg %n 使进程在前台执行。
另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。

后台运行作业的: 
有时我们必须要对大文件进行大量更改,或执行一些复杂的查找,这些工作最好能够在系统负荷较低时执行。 
创建一个定时清理日志文件或完成其他特殊工作的脚本,这样只要提交一次,就可以每天晚上运行,而且无需你干预,只要看看相应的脚本日志就可以了。c r o n和其他工具可以使系统管理任务变得更轻松。

你可能感兴趣的:(nohup)