Linux 中的 nohup 与 &

本贴最后更新于 2007 天前,其中的信息可能已经物是人非

之前在解决退出 SSH 后相关 java 程序无法后台运行是这样解决的:

Linux 将 jar 注册为 service

这样做的好处是可以方便的使用 start,stop,status 等命令控制,并且可以加入开机自启等等。

但是有些时候对于某些不重要的脚本,或者其他程序,并不想如此设置。只想当前在后台运行就可以了。

Linux 下使用 nohup

命令末尾的“&”

Unix/Linux 下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行 weblogic 在后台:

./startWebLogic.sh &

但是除 weblogic 这种守护进程外,普通程序如果终端关闭,那么程序也会被关闭。为了能够后台运行,那么我们就可以使用 nohup 这个命令。比如我们有个 startWebLogic.sh 需要在后台运行,那么就使用 nohup:

nohup ./startWebLogic.sh &

提示:

[~]$ appending output to nohup.out

嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去,起到一个记录 log 的作用。

nohup 命令

  • 用途:LINUX 命令用法,不挂断地运行命令。
  • 语法:nohup Command [ Arg ... ] [ & ]
  • 描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。

在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

使用重定向解决 nohup.out 无写权限等问题

场景

有时在使用 nohup 命令时,会遇到 nohup 无写权限等问题:

nohup: ignoring input and appending output to nohup.out'** **nohup: failed to run command /etc/nginx_check.sh': Permission denied

Linux 重定向

0、1 和 2 分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。

在一般使用时,默认的是标准输出,既 1。当我们需要特殊用途时,可以使用其他标号。

例如,将某个程序的错误信息输出到 log 文件中:./program 2>log。

这样标准输出还是在屏幕上,但是错误信息会输出到 log 文件中。

另外,也可以实现 0,1,2 之间的重定向。2>&1:将错误信息重定向到标准输出。

Linux 下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。

这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:

ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

ls >/dev/null 2>&1

注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,

然后将标准错误重定向到标准输出。

由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄。

nohup 的重定向

将 nohup.out 重定向至一个有写入权限的路径,或者直接扔到/dev/null 中。

nohup ./program >/dev/null 2>/dev/null &

或者

nohup ./program >/dev/null 2>&1 &

小结

如果一个命令只使用&来标识,则表示其在当前 Session 中,运行在后台。如果当前 Session 关闭或者当前的 terminal 工具关闭,则其附属的进程将会关闭。

正常运行的后台进程都是需要 nohup 与&,两者并行使用的,方可保证其在后台正常运行。

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...