Bash
nohup
、&
和重定向之間的順序?
nohup
一起使用時,&
和重定向之間的正確順序是什麼?為什麼其他命令不正確?
例如,
$ nohup firefox& &> /dev/null $ nohup firefox &> /dev/null &
而且我不知道如何使用重定向更改 nohup 和
&
.另一個例子,
$ nohup sleep 1000 & &>/dev/null
不會重定向到
/dev/null
,但仍會重定向到./nohup.out
。
我將從手冊頁中的SHELL GRAMMAR
bash
部分開始:簡單命令
一個 簡單的命令是一系列可選的變數賦值,後跟空格分隔的單詞和重定向,並由控制運算符終止。
因此,重定向(
&>/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