2012-02-27 25 views
7

Basit bir sorun olabilir, ancak CentOS 5.4 komut satırını uzaktan çalıştırıyorum. Basit bir Java dosyasının çıkışını yönlendirmek istiyorum, bir metin dosyasına konsolda yüz bin rakam yazdırmak için döngü diyelim. Sorun şu ki, , 'screen' komutunu kullanmak için uzaktaki bilgisayarla oturumumu kaybedersem bile arka planda çalıştırabilmek için 'screen' komutunu kullanabilir ve bu komut istenen dosyaya yazmaz."screen" komutuyla çıkış yönlendirmesi

yöntemini de screen java MyClass > log.txt numaralı yöntemde denedim ancak dosyaya yazmıyor. Bu neden oluyor ve herhangi bir çözüm var mı?

Teşekkürler!

+2

Neden 'nohup' yerine kullanılmasın? – mpontillo

+0

Eğer bunu yaparsam başka komutları çalıştırabilir miyim? – javaCity

+2

bu size kalmış. Eğer arka planda çalıştırırsanız, o zaman evet. – mpontillo

cevap

15

Bunu, nohup komutuyla yapabilirsiniz. İşte bir örnek.

$ 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 

< < relaunch kabuk >>

$ cat foo.txt 
0 
1 
... 
29 
30 

kabuk yaptığı gibi screen argümanlarınızı yorumlamak değil çünkü bu screen çalışmaz nedenidir. Eğer screen ile bunu olsaydı, işe yarardı:

screen /bin/bash -c 'java Foo > foo.txt' 
+4

teşekkürler. screen/bin/bash -c 'java Foo> foo.txt' 'bana yeni! – javaCity

1

sample_script.sh

#!/bin/bash 
#start screen in detached mode with session name 'default_session' 
screen -dmS "default_session" 
#redirect output to abc.log 
screen -S default_session -X stuff "script -f /tmp/abc.log\n" 
#execute your command 
screen -S default_session -X stuff "your command goes here...\n"