nohup 启动与nohup &啥区别
时间: 2024-11-29 10:12:04 浏览: 7
`nohup` 和 `&` 的主要区别在于它们如何控制进程的执行方式以及与终端的交互。
1. **nohup启动**[^1]: 使用`nohup`命令启动的程序会在用户退出当前会话时继续运行,而不会因为关闭终端而停止。它允许程序的输出被重定向,但默认情况下不会输出到终端,而是可能写入`nohup.out`文件。例如:
```sh
nohup sh test.sh &
```
2. **nohup与&的区别**: `nohup` 更侧重于让进程在会话结束后继续运行并管理其输出,而 `&` 是用于在后台立即启动程序,即使当前终端被关闭也能保持进程运行。比如:
- 普通后台启动:`test.sh &`
- 结果是终端窗口不会关闭,但若退出会话,进程也会终止。
3. **日志重定向**: 如果在`nohup`后面跟上输出重定向,如`nohup command > log.txt 2>&1`,则会将标准输出和错误输出一起重定向到`log.txt`文件。`&1`通常表示将标准输出和错误合并到与当前终端相同的位置(通常是`STDOUT`),这样即使没有`nohup`,也可以通过`tail -f log.txt`查看日志。
总结来说,`nohup`更注重的是让进程持久运行不受终端影响,而`&`更多的是快速启动到后台。如果希望在会话结束时仍有日志记录,应该首选`nohup`。
相关问题
linux使用nohup sh bin/mqnamesrv &启动mq出现nohup: ignoring input and appending output to ‘nohup.out’如何解决
你可以尝试以下解决办法来解决这个问题:
1. 使用重定向将输出重定向到/dev/null:
```shell
nohup sh bin/mqnamesrv > /dev/null 2>&1 &
```
这将把输出重定向到/dev/null,这样就不会生成nohup.out文件。
2. 使用重定向将输出重定向到其他文件:
```shell
nohup sh bin/mqnamesrv > mylog.log 2>&1 &
```
这将把输出重定向到mylog.log文件,而不是默认的nohup.out文件。
3. 使用nohup命令的-q选项来禁止输出:
```shell
nohup -q sh bin/mqnamesrv &
```
这将禁止输出,不会生成nohup.out文件。
4. 使用nohup命令的-p选项来指定输出文件:
```shell
nohup -p mylog.log sh bin/mqnamesrv &
```
这将把输出重定向到mylog.log文件。
nohup java -jar tools-0.0.1.jar > nohup.out 2>&1 &
这是一个启动Java项目的命令,使用了nohup命令和重定向输出。下面是对该命令的介绍和演示:
1. 介绍:
- nohup:nohup是一个Unix命令,用于在后台运行命令,并且不受终端关闭的影响。
- java -jar:这是运行Java可执行jar文件的命令。
- tools-0.0.1.jar:这是要运行的Java可执行jar文件的文件名。
- > nohup.out:这是将命令的输出重定向到名为nohup.out的文件中。
- 2>&1:这是将标准错误输出(stderr)重定向到标准输出(stdout)的意思。
2. 演示:
```shell
nohup java -jar tools-0.0.1.jar > nohup.out 2>&1 &
```
这个命令将会在后台运行tools-0.0.1.jar,并将标准输出和标准错误输出都重定向到nohup.out文件中。
阅读全文