Answers:
尝试使用创建子shell (...)
:
( command_which_takes_time input > output ) &
例:
~$ ( (sleep 10; date) > /tmp/q ) &
[1] 19521
~$ cat /tmp/q # ENTER
~$ cat /tmp/q # ENTER
(...) #AFTER 10 seconds
~$ cat /tmp/q #ENTER
Wed Jan 11 01:35:55 CET 2012
[1]+ Done ( ( sleep 10; date ) > /tmp/q )
有disown
bash内置命令:
[1] 9180
root@ntb1:~# jobs
[1]+ Running sleep 120 &
root@ntb1:~# disown
root@ntb1:~# jobs
... no jobs, disowned
root@ntb1:~# ps aux | grep sleep | grep -v grep
root 9180 0.0 0.0 4224 284 pts/0 S 17:55 0:00 sleep 120
... but the sleep still runing
root@ntb1:~#
后不认,这项工作是从你的shell否认(所以你甚至可以注销),它仍然会继续运行,直到完成。
请参阅jobs
列出的第一个命令,sleep
但是第二个命令未列出jobs
。但是使用,ps
我们可以看到作业仍在运行。
nohup
。