nohup和at now的区别

3

看起来nohupat now之间没有区别,但也许还是有些微妙的差别吗?

3个回答

5

区别在于now运行可以响应HUP信号的命令,而nohup运行免疫于HUP信号的命令。


2

Ed Heal说得没错。但另一个区别是,通过nohup运行的程序仍然有一个控制终端,而通过at now运行的程序没有。

除此之外,使用nohup将某个程序放入后台可以立即运行,而at now只是将程序排队等待下一次运行atrun(8)。在BSD unix(FreeBSD/OpenBSD)中,使用atrun启动了at作业,该作业由(或OSX中的launchd)定期启动。在Linux中,at作业由它自己的守护进程atd运行,默认情况下每60秒启动一次。

其他版本的unix可能有不同的策略,但在大多数情况下,你会发现使用at now启动的作业不如使用nohup启动的作业立即执行。


你对环境变量的理解是错误的。请查看http://linux.die.net/man/1/at(您可以通过查看“at”创建的脚本(在“/var/spool/at”中)来测试此功能)。但是,关于控制终端的注释值得一赞。 - Ed Heal
嗯,你对环境的了解是正确的。不过我不确定你使用的平台是什么——在FreeBSD上,作业存放在/var/at/job/中。谢谢,我已经相应地更新了我的答案。 - ghoti
你好。祝你周末愉快。另外需要知道的是,你可以进行检查。 - Ed Heal
这些差异可能会带来什么后果,例如免疫SIGHUP和拥有控制终端? - Olivier Gérardin

-1

nohup 命令告诉系统在您退出后继续运行。 at 命令用于在将来的某个时间执行一个或多个命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接