[linux]nohup &

229 阅读2分钟

nohup 和 & 在 Linux 或 Unix 系统中都是用于在后台运行命令的工具,但它们各自的作用和使用场景有所不同。 nohup

nohup命令

nohup(No Hang UP 的缩写)命令用于在用户注销(logout)或者终端关闭后继续运行相应的进程。它会忽略所有的挂断(HUP)信号。

nohup 命令会自动把标准输出和标准错误重定向到一个名为 nohup.out 的文件中,除非另外指定了输出文件。

基本用法:

bash

nohup command &

这里,command 是你想要在后台运行的命令。& 符号是将命令置于后台执行的意思,与 nohup 结合使用时,确保即使终端关闭,命令也会继续运行。

&命令

& 符号用于将命令置于后台执行。

当你在命令行中输入一个命令并按下回车键来执行的时候,该命令通常会在[前台]执行,这意味着你需要等待它完成才能输入下一个命令。通过在命令的末尾添加 &,你可以让该命令在后台执行,从而立即返回到命令行提示符,无需等待命令完成。

基本用法:

bash

command &

这里,command 是你想要在后台运行的命令。

注意事项

单独使用 & 可以让命令在后台运行,但如果终端关闭,该后台进程可能会因为接收到 HUP 信号而终止。

使用 nohup 命令可以避免因为终端关闭而导致的进程终止,但它通常与 & 一起使用,以确保命令既能在后台运行,又能在终端关闭后继续执行。

如果需要指定 nohup 命令的输出文件,可以使用重定向操作符 > 或 >>, 例如:nohup command > output.log 2>&1 &

这里 2>&1 表示将[标准错误]也重定向到[标准输出](即 output.log 文件)。

总结

nohup 和 & ,这2 个命令结合使用. nohup,从字面上理解就是 no hup , 不要挂断,在终端关闭的时候, 该任务还执行.

&的作用是在后台执行,而不是在前台执行.

所有,这2 个命令, 各自有各自的作用.

如果只使用 nohup, 虽然可以在不挂断的情况下,依然执行任务, 但是任务还是在前台执行,你只能等当前的任务执行完之后,才能执行下一个认为,非常不方便.

如果只使用& ,虽然可以让任务在后台执行. 但是, 如果终端被关闭了, 那么这个在后台执行的任务, 也就关闭了.

所以, Nohup 和 & , 这2 个命令要结合使用.