Bash

nohup& 和重定向之間的順序?

  • March 1, 2016

nohup一起使用時,&和重定向之間的正確順序是什麼?

為什麼其他命令不正確?

例如,

$ nohup firefox& &> /dev/null

$ nohup firefox &> /dev/null  &

而且我不知道如何使用重定向更改 nohup 和&.

另一個例子,

$ nohup sleep 1000 & &>/dev/null

不會重定向到/dev/null,但仍會重定向到./nohup.out

我將從手冊頁中的SHELL GRAMMARbash部分開始:

簡單命令

一個 簡單的命令是一系列可選的變數賦值,後跟空格分隔的單詞和重定向,並由控制運算符終止。

因此,重定向( &>/dev/null) 先行,控制運算符緊隨其後 ( &)。

**編輯:**為了使答案完整,這nohup簡單命令的第一部分。它在 中沒有任何特殊含義bash

正是你的例子(除了/dev/null它只會讓它變得複雜):

jakuje@E6430:/tmp$ rm nohup.out out
jakuje@E6430:/tmp$ nohup sleep 1 & &>out
[1] 10876
nohup: ignoring input and appending output to ‘nohup.out’
[1]+  Done                    nohup sleep 1
jakuje@E6430:/tmp$ cat nohup.out             # empty
jakuje@E6430:/tmp$ cat out                   # empty
jakuje@E6430:/tmp$ rm nohup.out
jakuje@E6430:/tmp$ nohup sleep 1 &>out &
[1] 10882
[1]+  Done                    nohup sleep 1 &> out
jakuje@E6430:/tmp$ cat nohup.out             # no file
cat: nohup.out: No such file or directory
jakuje@E6430:/tmp$ cat out                   # output of nohup
nohup: ignoring input

引用自:https://unix.stackexchange.com/questions/266594