GNU/Linux >> Znalost Linux >  >> Linux

Připojte k výstupu procesů pro prohlížení

Myslím, že zde mám jednodušší řešení. Stačí vyhledat adresář, jehož název odpovídá hledanému PID, v pseudo-souborovém systému přístupném pod /proc cesta. Pokud tedy máte spuštěný program, jehož ID je 1199, cd do toho:

$ cd /proc/1199

Poté vyhledejte fd adresář pod

$ cd fd

Toto fd adresář obsahuje objekty deskriptorů souborů, které váš program používá (0:stdin, 1:stdout, 2:stderr) a pouze tail -f ten, který potřebujete – v tomto případě stdout):

$ tail -f 1

Hledal jsem přesně to samé a zjistil jsem, že můžete:

strace -ewrite -p $PID

Není to přesně to, co jste potřebovali, ale je to docela blízko.

Zkoušel jsem výstup přesměrování, ale to mi nefungovalo. Možná proto, že proces zapisoval do soketu, nevím.


Pro mě to fungovalo:

  1. Přihlaste se jako vlastník procesu (i root je odepřeno oprávnění)

    ~$ su - process_owner
    
  2. Přizpůsobte deskriptor souboru, jak je uvedeno v mnoha dalších odpovědích.

    ~$ tail -f /proc/<process-id>/fd/1 # (0: stdin, 1: stdout, 2: stderr)
    

Zde je několik možností. Jedním z nich je přesměrovat výstup příkazu do souboru a poté použít 'tail' k zobrazení nových řádků, které jsou přidány do tohoto souboru v reálném čase.

Další možností je spustit váš program uvnitř „obrazovky“, což je druh textové terminálové aplikace. Relace obrazovky mohou být připojeny a odpojeny, ale jsou nominálně určeny pouze pro použití stejným uživatelem, takže pokud je chcete sdílet mezi uživateli, je to velká bolest v zadku.


Linux
  1. 30 Cvičení procesů Linuxu pro systémové správce

  2. K čemu jsou Inody dobré?

  3. Barvení výstupu ocasu pomocí Sed?

  1. Hledat v adresáři soubory a výsledek výstupu do textového souboru?

  2. 'tail -f' po určitou dobu

  3. ls se zablokuje pro určitý adresář

  1. Jak vytvořit sdílený adresář pro všechny uživatele v Linuxu

  2. Linux cd command tutorial pro začátečníky (8 příkladů)

  3. Výstup kterého příkazu použitého pro vstup na CD?