historie bash: "ignoredups" a "erasedups" nastavení konflikt se společnou historií napříč relacemi
<p>nejprve to není duplikát existujících vláken na se. přečetl jsem si tato dvě vlákna ( <a href="https://unix.stackexchange.com/questions/1288/better-bash-history">1.</a> , <a href="https://unix.stackexchange.com/questions/6585/where-is-the-setting-that-disallows-duplicate-command-history">2.</a> ) o lepší historii bash, ale žádná z odpovědí nefunguje - - mimochodem, jsem na fedoře 15.</p><p>do souboru <code>.bashrc</code> v uživatelském adresáři (/ home/aahan /) jsem přidal následující a nefunguje to. někdo má tušení?</p><pre><code>histcontrol=ignoredups:erasedups # no duplicate entries histsize=1000 # custom history size histfilesize=100000 # custom history file size shopt -s histappend # append to history, don't overwrite it prompt\_command="history -a; history -c; history -r; $prompt\_command" # save and reload the history after each command finishes </code></pre><p>dobře to je to, co chci s bash historií (priorita):</p><ul> <li>neukládejte duplikáty, vymažte všechny stávající</li> <li>okamžitě sdílejte historii se všemi otevřenými terminály</li> <li>vždy připojte historii, ne ji přepisujte</li> <li>ukládat víceřádkové příkazy jako jeden příkaz (ve výchozím nastavení vypnutý)</li> <li>jaká je výchozí velikost historie a velikost souboru historie?</li> </ul>
<p>to je vlastně opravdu zajímavé chování a přiznávám, že jsem otázku na začátku velmi podcenil. nejprve však fakta:</p><h3>1. co funguje</h3><p>funkci lze dosáhnout několika způsoby, i když každý funguje trochu jinak. všimněte si, že v každém případě, aby historie byla „přenesena“ na jiný terminál (aktualizována), je třeba stisknout <kbd>enter</kbd> v terminálu, kde chce načíst historii.</p><ul> <li> <p>možnost 1:</p> <pre><code>shopt -s histappend histcontrol=ignoredups prompt\_command="history -a; history -n; $prompt\_command" </code></pre> <p>to má dvě nevýhody:</p> <ol> <li>při přihlášení (otevření terminálu) se poslední příkaz ze souboru historie načte dvakrát do vyrovnávací paměti historie aktuálního terminálu;</li> <li>vyrovnávací paměti různých terminálů nezůstávají synchronizovány se souborem historie.</li> </ol> </li> <li> <p>možnost 2:</p> <pre><code>histcontrol=ignoredups prompt\_command="history -a; history -c; history -r; $prompt\_command" </code></pre> <p>(ano, není třeba <code>shopt -s histappend</code> a ano, je to <em>musí být</em> ​​<code>history -c</code> uprostřed <code>prompt\_command</code>) tato verze má také dvě důležité nevýhody :</p> <ol> <li>soubor historie musí být inicializován. musí obsahovat <em>alespoň jeden neprázdný řádek</em> (může být cokoli).</li> <li>příkaz <code>history</code> může poskytnout falešný výstup - viz níže.</li> </ol> </li> </ul><p><strong>[upravit]</strong> <em>"a vítězem je ..."</em></p><ul> <li> <p><strong>možnost 3:</strong></p> <pre><code>histcontrol=ignoredups:erasedups shopt -s histappend prompt\_command="history -n; history -w; history -c; history -r; $prompt\_command" </code></pre> <p>je to tak daleko, jak to jde. je to volba <em>pouze</em>, aby současně fungovaly jak <code>erasedups</code>, tak i společná historie. <strong>toto</strong> je pravděpodobně <em>konečné řešení</em> ke všem vašim problémům, aahane.</p> </li> </ul><hr><h3>2. proč <em>možnost 2</em> nefunguje (nebo: <em>co opravd</em> nefunguje podle očekávání)?</h3><p>jak jsem již zmínil, každé z výše uvedených řešení funguje jinak. ale <strong>nejvíce zavádějící interpretace toho, jak nastavení funguje, vychází z analýzy výstupu příkazu <code>history</code></strong>. v mnoha případech může příkaz poskytnout výstup <strong>false</strong>. proč? protože <strong>provádí se <em>před</em> posloupnost dalších <code>history</code> příkazů obsažených v <code>prompt\_command</code>!</strong> při použití druhé nebo třetí možnosti však lze sledovat změny obsahu <code>.bash\_history</code> (například pomocí <code>watch -n1 "tail -n20 .bash\_history"</code>) a zjistit, jaká je skutečná historie.</p><h3>3. proč <em>možnost</em> je tak komplikovaná?</h3><p>všechno spočívá ve způsobu <code>erasedups</code> funguje. jak uvádí bash manual, <em>"(...) <code>erasedups</code> způsobí, že všechny předchozí řádky odpovídající aktuálnímu řádku budou odstraněny ze seznamu historie, než bude tento řádek uložen"</em>. to je tedy to, co op chtěl <em>(a nejen, jak jsem si dříve myslel, aby se neobjevovaly duplikáty <strong>postupně</strong>)</em>. zde je důvod, proč každý z příkazů <code>history -.</code> musí nebo nemůže být v <code>prompt\_command</code>:</p><ul> <li> <p><code>history -n</code> <strong>musí</strong>, aby tam byl před <code>history -w</code> a přečetl z <code>.bash\_history</code> příkazy uložené z jakéhokoli jiného terminálu,</p> </li> <li> <p><code>history -w</code> <strong>musí</strong> být tam, aby se historie uložila do souboru a vymazala duplikáty,</p> </li> <li> <p><code>history -a</code> <strong>nesmí</strong> být tam umístěny místo <code>history -w</code>, protože to nespouští mazání duplikátů,</p> </li> <li> <p><code>history -c</code> je také <strong>potřeba</strong>, protože zabraňuje přetažení vyrovnávací paměti historie po každém příkazu,</p> </li> <li> <p>a konečně, <code>history -r</code> je <strong>potřeba</strong> k obnovení vyrovnávací paměti historie ze souboru, čímž se nakonec historie sdílí přes terminálové relace.</p> </li> </ul>
Zkus registry procesorů, nebo velmi osvědčeným tématem jsou přerušení. slo by to blokovanim na tom centralnom FW, kedze je to linux, tak by to asi slo pekne naskriptovat, aby sa v danom case zamenil jeden konfiguracny subor s pravidlami za iny konfiguracny subor s pravidlami a restartla sa sluzba.  
  
pripadne by to slo aj tymi lokalnymi obmedzeniami s dobre chranenymi pravami, ale to nie je velmi 'elegantne' riesenie ![](/Client.Images/smileys/3.gif) Vypni mezipamet, tj cache. Nevim ted kde se to nastavuje, snad ve spravci zarizeni. Kdyz mezipamet neni. Tak se zapisuje primo a nehrozi chyba zpozdeneho zapisu. Ale ma to neblahy vliv na vykon, protoze to zdrzuje, musi se pockat az se data na disk zapisou a pak se muze pokracovat v praci. Tak asi mapy nastavení a historie atd. To co chces se resi standardnim UNIXovym prikazem "tail". Pro Windows existuji klony, napr. <http://tailforwin32.sourceforge.net/>V kombinaci s vyse zminenym PowerMenu mas idealni reseni. Sdílená paměť je operační paměť, kterou sdílí (jak název sdílená napovídá) jak operační systém PC, tak grafika, pokud je taková integrovaná v procesoru nebo na základní desce. Pokud použiješ procesor bez integrované grafiky a pokud není integrovaná grafika ani na desce, pak se tě jakýkoliv údaj o sdílené paměti netýká. A jediné, co je z hlediska tebou zamýšlené grafiky podstatné, je, aby na desce byl odpovídající PCI-E slot a aby měl zdroj dostatečný výkon pro napájení té grafiky. no tak zaprve je divny ze se nejde prihlasit na FTP. pokud jste nemenil heslo tak kdo by ho menil ?? Kontaktujte podporu.Dal pokud bude fungovat ftp a stale to nepujde by bylo nejjednodussi vratit obsah hostingu ze zalohy (+db).. Wedos jiste denne zalohuje... a dalsi spravu webu bych doporucil sverit nekomu kdo se v tom lip vyzna... (bez urazky).A taky bych si nikdy nedal web na kterym "stoji byznys" k wedosu - ja s nima zkusenosti nemam, ale jejich povest je predchazi.. <https://www.cpubenchmark.net/> compare.php?cmp[]=872&cmp[]=800 (odkaz spoj) <pre><code>sudo apt update sudo apt install ssh sudo ufw allow 22 # if you have ufw running, but it doesn't hurt to run. </code></pre><p>to je velmi minimum. umožňuje neomezený počet neúspěšných pokusů o heslo na známém portu. přímé přihlášení root je zakázáno (po přihlášení se stále můžete <code>su</code> a <code>sudo</code>). pokud je vaše uživatelské jméno a heslo hádatelné a internet vidí server, někdo <em> se nakonec </em> vnikne.</p><p>nemohu to dostatečně zdůraznit: <strong> <em> je třeba zatvrdit výchozí nastavení. </em> </strong> pro pravděpodobnost, že budou napadeni, ale <a href="https://thepcspy.com/read/making-ssh-secure/">prošel jsem několika návrhy na svém blog</a> . alespoň bych navrhl:</p><ul> <li>přihlášení pomocí klíčů. zakázat přihlášení heslem.</li> <li>přesuňte jej z portu 22. použijte něco šíleného v rozsahu 20000-60000.</li> <li>použijte <code>fail2ban</code> zakazovat lidem, kteří to najdou, a pokusit se to přenést.</li> </ul><p>zabere vám to méně než 10 minut a oni vás vezmou z 1/10000 šance, že se dostanou do pravděpodobnosti tak malé, že na světě není dost papíru, aby mohl napsat její zlomek. vše za předpokladu, že jste opatrní s vaším klíčem, má vlastní přístupové fráze a vy nebudete trubat vaše pověření po celé síti.</p><p>pokud jde o přístup k tomuto serveru ssh z internetu, můžete čelit překážkám v místní síti. pokud je počítač za routerem nat (např. většina domácích sítí) bez přímého příchozího přístupu z internetu, možná budete muset podívat na <a href="https://portforward.com/">přesměrování portů</a> . samozřejmě, pokud nepotřebujete přístup mimo síť, přeskočení tohoto kroku zajistí zabezpečení sítě.</p> Přepni na dedikovanou v biosu.