Вы можете сделать это с помощью команды nohup
. Вот пример.
$ cat Foo.java
public class Foo {
public static void main(String[] args) throws InterruptedException
{
for(int i = 0 ; i < 1000 ; i++)
{
System.out.println(i);
Thread.sleep(1000);
}
}
}
$ javac Foo.java
$ nohup java Foo > foo.txt &
[3] 29542
$ cat foo.txt
0
1
2
3
4
5
$ exit
<< перезапуск оболочки >>
$ cat foo.txt
0
1
...
29
30
Причина, по которой это не работает с screen
, заключается в том, что screen
не интерпретирует ваши аргументы, как оболочка. Если бы вы сделали это с screen
, это сработало бы:
screen /bin/bash -c 'java Foo > foo.txt'