SORU
27 ŞUBAT 2009, Cuma


STDERR / bundan SONRA bir süreç STDOUT'başlamış oldu yönlendirme, Komut satırını kullanarak?

Kabuk içinde yeniden yönlendirme, ^ yapabilirsin . < vb., ama nasıl bir program başladıktan SONRA?

Nasıl bu soruyu sormak için geldim buraya: bir program benim terminalin arka planda çalışan sinir bozucu yazı çıkışı tutar. Başka bir kabuk metin önlemek için açmak zorundayım çok önemli bir süreç< Mümkün olmak istiyorum . aynı kabuk içinde çalışmaya devam edebilirim yani null veya başka bir yönlendirme dev/.

CEVAP
27 ŞUBAT 2009, Cuma


Ve tty (yani aynı zamanda arka plan bazı süreçleri sonlandırabilirsiniz kayıt ve bilgi işlem) yeniden açmayı kısa tek bir seçenek bıraktı:

  • söz konusu işlem için gdb kullanarak takın ve çalıştırın:
    • p dup2(open ("dev", 0)boş/, 1/)
    • p dup2 () açık (dev, 2", 0)null//")
    • ayır
    • çıkın

örneğin:

$ tail -f /var/log/lastlog &
[1] 5636

$ ls -l /proc/5636/fd
total 0
lrwx------ 1 myuser myuser 64 Feb 27 07:36 0 -> /dev/pts/0
lrwx------ 1 myuser myuser 64 Feb 27 07:36 1 -> /dev/pts/0
lrwx------ 1 myuser myuser 64 Feb 27 07:36 2 -> /dev/pts/0
lr-x------ 1 myuser myuser 64 Feb 27 07:36 3 -> /var/log/lastlog

$ gdb -p 5636
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3 : GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Attaching to process 5636
Reading symbols from /usr/bin/tail...(no debugging symbols found)...done.
Reading symbols from /lib/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/libpthread.so.0...(no debugging symbols found)...done.
[Thread debugging using libthread_db enabled]
[New Thread 0x7f3c8f5a66e0 (LWP 5636)]
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /lib/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2

(no debugging symbols found)
0x00007f3c8eec7b50 in nanosleep () from /lib/libc.so.6

(gdb) p dup2(open("/dev/null",0),1)
[Switching to Thread 0x7f3c8f5a66e0 (LWP 5636)]
$1 = 1

(gdb) p dup2(open("/dev/null",0),2)
$2 = 2

(gdb) detach
Detaching from program: /usr/bin/tail, process 5636

(gdb) quit

$ ls -l /proc/5636/fd
total 0
lrwx------ 1 myuser myuser 64 Feb 27 07:36 0 -> /dev/pts/0
lrwx------ 1 myuser myuser 64 Feb 27 07:36 1 -> /dev/null
lrwx------ 1 myuser myuser 64 Feb 27 07:36 2 -> /dev/null
lr-x------ 1 myuser myuser 64 Feb 27 07:36 3 -> /var/log/lastlog
lr-x------ 1 myuser myuser 64 Feb 27 07:36 4 -> /dev/null
lr-x------ 1 myuser myuser 64 Feb 27 07:36 5 -> /dev/null

Ayrıca düşünebilirsiniz:

  • screen; ekranı kullanarak sağlar arasında yeni bir SSH/telnet/etc, oturum açmak zorunda kalmadan geçiş yapabilirsiniz birkaç sanal Bunlarla
  • nohup; Bu, herhangi bir arka plan işlemleri kaybetmeden oturumunuzu kapatıp için izin kullanarak... süreci.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Flohoo

    Flohoo

    12 EYLÜL 2009
  • spyib

    spyib

    9 Ocak 2007
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006