GNU/Linux >> Znalost Linux >  >> Linux

Musí potrubí zapisovat dočasný soubor?

  1. roury neukládají data na disk. /bin/echo foo | grep bar nevytváří žádné soubory. zkuste strace -f sh -c '/bin/echo foo | grep bar' zobrazit všechna systémová volání provedená shellem při spuštění potrubí. echo je vestavěný shell, takže jsem navrhl /bin/echo aby shell běžel jako spustitelný soubor.

  2. /tmp nemusí být na disku. Může být připojen na tmpfs (tj. zálohovaný virtuální pamětí). Všimněte si, že restartování vyprázdní /tmp v tom případě použijte /var/tmp na cokoli, co tu chcete nechat.

Pokud to, co děláte, je vkládání dat do souboru, pak to nepoužívá roura. Pokud je soubor fifo, nikoli běžný soubor, pak je to pouze pojmenované setkání a neobsahuje data. Chcete-li to zjistit, použijte ls -l.

A povšimněte si, že pokud doufáte, že uživatelům zabráníte v tom, aby viděli, co prochází potrubím v procesech, které vlastní, jste do značné míry SOL, protože strace může kontrolovat vše, co proces dělá, co interaguje s čímkoli mimo proces, kromě čtení/zápisu mmapované sdílené paměti. ltrace je ještě invazivnější. Pokud váš program poběží na systémech, kde má místní uživatel root, nemůžete je vůbec zastavit. Na Unixu může root dělat cokoliv a má pro tento účel výkonné nástroje.


Linux
  1. Účel použití Fifo vs dočasný soubor nebo potrubí?

  2. Zapsat všechny rolování Tmux do souboru?

  3. Má Curl časový limit?

  1. Přesměrování a výstup potrubí?

  2. Skrytí dat v souborových systémech?

  3. Má Python argument argc?

  1. Má Python synchronizaci?

  2. Jak rm funguje? Co dělá rm?

  3. wc -l NEpočítá poslední soubor, pokud nemá znak konce řádku