Mám například dlouho běžící a podrobný tar cvf /backup/backup.tar
příkaz, který vypíše na obrazovku velké množství textu*. Nechci nutně vidět celý výstup po celou dobu. Chtěl bych zastavit textový výstup, udělat jiné věci, pak se k tomu vrátit a „obnovit“, abych viděl, jak daleko je proces zálohování. Čekal jsem, že se to bude chovat jako
/files/big_file_1
/files/big_file_2
/files/big_file_3
# Ctrl+s
# Do other stuff
# Ctrl+q , notice big jump in progress
/home/user/.bash_history
/home/user/small_file_1
/home/user/small_file_2
/home/user/small_file_3
...
Ctrl+s zastaví výstup na obrazovku (a Ctrl+q obnoví výstup na obrazovku), zatímco Ctrl+z pozastaví proces a vrátím se zpět k výzvě PS1. Moje otázka zní, udržuje Ctrl+s příkaz spuštěný?
Během výše uvedeného tar
příkazu, zvýraznil bych poslední soubor TARred ho nechal několik minut sedět, Ctrl+q, a další soubory se zdály být ve stejném adresáři, nebo alespoň v relativně blízkém adresáři.
*Používám Putty na Windows, takže pokud se chování liší od tohoto standardního terminálu na Linuxu/Unixu, omlouvám se.
Přijatá odpověď:
Moje otázka zní, udržuje Ctrl+s příkaz spuštěný?
Ano, až do bodu, kdy se systémové vyrovnávací paměti zaplní a proces se začne blokovat, aby bylo možné zapisovat na terminál. Takže to nebude fungovat donekonečna. Navíc nebudete moci spouštět nic jiného na stejném terminálu, protože výstup je blokován.
Chcete-li se odpojit od programu a zároveň zachovat možnost vrátit se, máte tyto možnosti:
- Spusťte další terminál na straně (další Putty, další připojení SSH)
- Spusťte
screen
nebotmux
k multiplexování více „oken“ uvnitř stejného terminálu - Přesměrujte výstup do souboru, spusťte příkaz na pozadí a poté nahlédněte do souboru, když budete chtít:
tar cvf ... > /tmp/tar.out &
atail /tmp/tar.out