RSS slacknews.org

  • drop_caches
    Задаването на стойности на /proc/sys/vm/drop_caches кара ядрото да освободи кешовете, dirty страниците и inodes от паметта. За да освободим кешовете: echo 1 > /proc/sys/vm/drop_caches За да освободим dirty страниците и inodes от паметта: echo 2 > /proc/sys/vm/drop_caches За да освободим кешовете, dirty страниците и inodes от паметта: echo 3 > /proc/ […]
  • Конфигуриране на ядрото: Поддръжка на мрежови протоколи
    Менюто с мрежовите настройки съдържа опции за настройване на мрежовите протоколи. Може да включвате или да изключвате поддръжка на цели протоколи, или да настроите финно ядрото за определена роле, като рутер или пакетен филтър. Packet and Socket Options На много ниско ниво ядрото работи като позволява на дадени приложения да приемат или изпращат порции с дан […]
  • Конфигуриране на ядрото
    За да конфигурирате ядрото, трябва да притежавате сорс кода. В Slackware той може да се инсталира заедно с ядрото. Може би бихте искали да започнете със страндартно ядро и да си го пачнете и конфигурирате по ваше желание. Проверете  http://www.kernel.org/ за последна верися на сорс кода на ядрото. Сорс кода на ядрото обикновено се намира в [...] […]
  • Ограничаване на достъпа до команда в Линукс
    Как да огранича достъпа до /usr/local/bin/start само за определени потребители на системата ? Отговорът на върпроса е, че трбва да използвате стандартните Линукс групи. Стъпка 1: Създайте група за всички оторизирани потребители Създайте групата: #groupadd restrictedapp Добавете потребители в тази група: #usermod -aG {име_на_група} {потребителско_име} #usermo […]
  • Взимане на част от текст с bash
    Можем да вземем само част от даден текст много лесно с Bash. Нека да кажем, че имаме 1234567890 или abcdefghij. Може да го направим така : num="1234567890"; echo ${num:5:7} 5 указва началото, а 7 колко символа да вземе. Possibly Related Posts: drop_caches Конфигуриране на ядрото: Поддръжка на мрежови протоколи Конфигуриране на ядрото Ограничаване н […]
  • Когато rm се оплаква, че не може да трие
    Има ограничение на командата rm, когато се опитате да триете много файлове с *. Например: rm -rf something* Ако има много файлове, които започват с something, rm няма да може да ги изтрие и ще изведе: /bin/rm: Argument list too long. Решението на проблема е да ползвате find, xargs и rm. find . -name 'something*' -print0 | xargs -0 rm [...] […]
  • umask: създаване на нови файлове с определени права
    Замисляли ли сте се, че всеки път като създаваме файлове в Линукс те се създават с определени права ? Нека да пробвам: Lets see this: touch testing ls -l testing -rw-r--r-- 1 test test 0 2008-03-08 01:14 testing Файла не би трбвало да се създаде с права за изпълнение, както виждаме изхода от ls. Нека да дадем права за изпълненеи [...] […]
  • Права за достъп до файлове
    chmod (change mode) е доста често използвана команда за администрация. Обикновено я ползваме, за да направим даден скрипт, написан на bash, python, perl изпълним. За да на правил файл изпълним: chmod +x myscript.sh По подразбиране това ще промени атрибута за всички. Файловите атрибути са 3 вида: u ( user – собственик на файла) g ( групата, в която е потребит […]
  • Къде се намират програмите ми и техните конфигурационни файлове ?
    Когато искаме да намерим пълния път до дадена програма, обиконовенно използваме which. Например, ако искаме да видим къде се намира mplayer, може да направим това: which mplayer Има още една команда, която освен, че ви показва пътя до бинарките, ви показва и пътя до сорс файловете, конфигурационите файлове и man страниците. whereis mplayer Ще върне това: mpl […]
  • Как да покажем споделените библиотеки, от които се нуждае програма ?
    Почти всяка програма в Линукс използва споделени библиотеки, дори тези които са компилирани на ръка със gcc. Може да се окаже, че дадена програма компилирана на дадена дистрибуция може да не работи под друга или по-стара версия на същата, на която е била компилирана. Всичко това може да се дължи на липсващи споделени библиотеки. Можем да [...] […]
  • Slackware news: 4 Октомври 2009
    Има две важни промени днес PHP и Samba. Промените са направени едновременно в -Stable и в -Current. В -Current, обаче има и доста други промени като MySQL, Amarok, QT, Perl, както и GCC 4.4.1. Това е последното от -Current changelog-а: Sun Oct 4 00:17:50 CDT 2009 ap/mysql-5.1.39-i486-1.txz: Upgraded. This bumps the version of the shared libraries to .so.16.0 […]
  • GoblinX 3.0
    Flavio Pereira de Oliveira представи днес последната версия на неговата популярна Slackware-базирана жива дистрибуция, GoblinX, още позната като G:Standard. GoblinX 3.0 имаше пет десктоп мениджъра, но явно Flavio е решил да запази само един KDE. С KDE4, тази дистрибуция включва стабилност и добър външен вид в един ISO имидж. В новата версия на GoblinX 3.0: · […]
  • Slackware по лесния начин
    Дайте на човек Ubuntu, и той ще научи Ubuntu. Дайте на човек SUSE, и той ще научи SUSE. Ако дадете на човек Slackware, той ще научи Linux. Това гласи старата максима, обикновено използвана с насмешка, но все още важеща. Ако някога сте се чудили какво прави Slackware толкова популярен сред Линукс ветераните ви представям малко съвети [...] […]
  • Основи на Линукс автоматизацията
    Тази статия описва начина, по който могат да се изпълняват команди в определено време без да се налага на потребителя да ги въвежда. Програмите отговорни за това в линукс са cron и at. Изпълняване на команди в точно определено време: Ако нямате нужда командата да се изпълнява редовно може да използвате. Например може да ползвате : at midnight След [...] […]
  • Facebook пуска свободен високопроизводителен сървър
    Facebook пуска фреймуорк, Tornado, която е написана на питон и е написана специално за обработване на големи обеми информация едновременно. Торнадо е фокусирана върху скоростта на обработка на данните и едновременното обработването на огромни количества трафик. Технологията се разпространява под Apache 2.0 лиценз. Цялата новина може да научите тук. Possibly […]
  • Linux 2.6.31
    Тази версия на ядрото добавя USB 3.0 поддръжка, еквивалент на FUSE за подаване на звук от OSS към ALSA, някой подобрения в управлението на паметта, добавена е поддръжка за ATI Radeon Modesetting, както и за Intel Wireless Multicomm 3200 Wifi устройства. Добавена е поддръжка и за броячите за производителност, поддръжка за gcov, проверка за не [...] […]
  • Как да конфигурираме Squid да ползва refresh patterns
    Squid може да бъде конфигуриран така че да удовлетворява дори най-взискателните конфигурации. При последните версии могат да се конфигурират поне 250 отделни параметъра. Стандартния конфигурационен файл се намира в /etc/squid.conf и заедно с коментарите достига 4600 реда. Конфигурирането на приложението може да се окаже предизвикателство дори за напреднали а […]
  • Преглед на ext3 и ext4 файловите системи
    Има доста въпроси, които се повдигат при създаването на ext3 файлова система. Административни съображения Доста въпроси изникват, когато трябва да се реши как да бъде разделено мястото на хард диска и как трябва това място да се разпредели между различните партишъни и файлови системи. Някои от въпросите, които може би си задавате са: Как бихте искали да план […]
  • Как да търсим файлове в Линукс
    Как да търсим с ‘locate’ Най-лесния начин да търсим файлове в Линукс е с програмата locate. Когато пуснете за пръв път програмата може да ви изпише съобщение за грешка. Проблема е че е нужна база с всички файлове на на компютъра за да може locate да ви покаже резултат. Съобщението за грешка ще би подкани да [...] […]
  • Как да правим всичко с dd ?
    Синтаксиса на командата е : dd if= of= bs=(обикновено степен на 2, но не по-малко от 512 байта) skip= seek= conv=. Source са входните данни. Target е мястото, където се записва информацията. Ако направите грешка и им размените местата, може да затриете много информация. Примери : Копиране партишън от един хард диск на друг : dd if=/dev/sda2 of=/dev/sdb2 bs=4 […]

Slacknews.org етикети

attributeschangelogcopy fileext4filefile access modesfirefoxgcckdekde4.2.0kdelibskernelkernel configurationlinuxmozillamozilla firefoxopensshproxyreleasesecuresecure brosingsecuritysecurity fixsecurity upgradeslackwareslackware changelogslackware kde 4.2.4slamd64slamd64 12.2socks proxysshtortunnelupgradexdg-utilsконфигурация на ядролинукснова версияпроксисигурностсигурно сърфиранесламдтунелъпгрейдядро

Как да правим всичко с dd ?

септември 6th, 2009

Синтаксиса на командата е :

dd if=<source> of=<target> bs=<byte size>(обикновено степен на 2, но не по-малко от 512 байта) skip= seek= conv=<conversion>.

Source са входните данни. Target е мястото, където се записва информацията. Ако направите грешка и им размените местата, може да затриете много информация.

Примери :

Копиране партишън от един хард диск на друг :

dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=notrunc,noerror

sda2, sdb2 са партишъните. В този случай копираме sda2 върху sdb2. Ако sdb2 не съществува, dd ще започне да пише от началото на диска и ще го създаде. Много е важна последователността на if и of. Може да запишете празен диск върху такъв с информация ако не внимавате.

Създаване на iso image на CD:

dd if=/dev/hdc of=/home/someone/mycd.iso bs=2048 conv=notrunc

CD секторите са дълги 2048 байта и тази команда копира сектор по сектор. Резултата е файл върху хард диска със съдържанието на CD. Може да монтирате копието с “mount -o loop /home/someone/mycd.iso /mnt/mycd”. Файловата система ще вижда файловете и директориите в копието в директорията /mnt/mycd. Може да променяте съдържанието но копието, но няма да можете да го запишете понеже dd не може да пише по CD-та. Ще трябва да използвате друга програма за да записвате.

Копиране на дискета :

dd if=/dev/fd0 of=/home/sam/floppy.image bs=2×80x18b conv=notrunc

или

dd if=/dev/fd0 of=/home/someone/floppy.image conv=notrunc

18b указва 18 сектора по 512 байта, 2x умножава големината на сектора с броя на главите, а 80x указва цилиндрите – общо 1474560 байта. Тази команда чете наведнъж 1474560 байта от /dev/fd0 и после пише 1474560 байта в /home/someoune/floppy.image.

Изписване на “I loveBeer” вертикално.

echo -n “I love Beer” | dd cbs=1 conv=unblock 2> /dev/null

Клониране на хард диск:

dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror

В този пример копираме sda върху sdb. Важно не да объркате двата диска. noerror указва да се продължи копирането дори да има грешка. Обикновено dd спира при грешка.

За да видим виртуалната памет

dd if=/proc/kcore | hexdump -C | less

показва по един екран на терминала

За да видим какви файлови системи имаме

dd if=/proc/filesystems | hexdump -C | less

Заредени модули

dd if=/proc/kallsyms | hexdump -C | less

Таблицата с прекъсванията

dd if=/proc/interrupts | hexdump -C | less

Колко секунди е работила машината

dd if=/proc/uptime | hexdump -C | less

Партишъни и техните големини в kb

dd if=/proc/partitions | hexdump -C | less

Статистики за паметта

dd if=/proc/meminfo | hexdump -C | less

За да направим файл с 100 произволни байта

dd if=/dev/urandom of=/home/someone/myrandom bs=1 count=100

Записване на произволна информация върху файл преди да го изтрием

първо правил ls -l , за да видим колко е голям файла. В този случай е 3769

ls -l afile
-rw——- … 3769 Nov 2 13:41 <filename>

dd if=/dev/urandom of=afile bs=3769 count=1 conv=notrunc

Това ще запише произволни символи върху файла.

Копиране на партишън във файл. Не копирайте партишън върху себе си.

dd if=/dev/sdb2 of=/home/someone/partition.image bs=4096 conv=notrunc,noerror

Възстановяване на партишън от файл:

dd if=/home/someone/partition.image of=/dev/sdb2 bs=4096 conv=notrunc,noerror

Конвертиране на символите във файл от малки в големи:

dd if=filename of=filename conv=ucase

Копиране на рам паметта във файл:

dd if=/dev/mem of=/home/someone/mem.bin bs=1024

/dev/mem представлява системната памет. Всъщност може да копирате каквото си искате от там с dd.

Ако искате да направите копие на партишън но на друга машина:

Използвайте ssh(secure shell), за да копиранте от отдалечената машина.

ssh 192.168.xx.yy “dd if=/dev/sda ibs=4096 conv=notrunc,noerror” | dd of=/dev/sda obs=4096

Използвайте ssh, за да копирате на отдалечената машина.

dd if=/dev/sda ibs=4096 conv=notrunc,noerror | (ssh 192.168.xx.yy dd of=/dev/sda obs=4096)

Операнди

Тези операнди се поддържат:

if=file

Указва входните данни. Ако не е указано взима стандартния вход stdin.

of=file

Указва изходящите данни. Ако не е указано взима стандартния изход stdout. Ако не е указано conv=notrunc, съдържанието на изходящия файл ще бъде изтрито преди да започне операцията.

ibs=n

Указва големината в на блокът на входните данни в байтове. Ако не е указано е 512.

obs=n

Указва големината в на блокът на изходните данни в байтове. Ако не е указано е 512.

bs=n

Указва едновременно големината на блокът на входните и изходните данни да е n байта.

cbs=n

Определя големината на блока за преобразуване в байтове. По подразбиране е 0. Ако cbs= е опропуснато или има стойност 0, използването на block или unblock има незнаен ефект.

files=n

Копира и съединява n входни файла преди да приключи. Има смисъл само като се записва върху магнитна лента или подобни устройства.

skip=n

Пропуска n блока от началото на входния файл преди да започне копирането.

iseek=n

Пропуска n блока от началото на входния файл преди да започне копирането. Използва се, когато горната опция е много бавна.

oseek=n

Пропуска n блока от началото на изходния файл преди да започне копирането.

seek=n

Пропуска n блока от началото на изходния файл преди да започне копирането.

count=n

Копира само n блока.

conv=value[,value. . . ]

Където value са разделени със запетая символи от този лист:

ascii

Конвертира EBCDIC в ASCII.

asciib

Конвертира EBCDIC в ASCII, като използваBSD-съвместими символи.

ebcdic

Конвертира ASCII в EBCDIC. Ако конвертирате ASCII със еднаква дължина без нови редове добавете pipeline с dd conv=unblock преди това.

ebcdicb

Конвертира ASCII в EBCDIC, като използваBSD-съвместими символи. Ако конвертирате ASCII със еднаква дължина без нови редове добавете pipeline с dd conv=unblock преди това.

block

Взима входа като записи, завършващи с нов ред или край на файл (EOF), без значение колко е голям входния блок. Всеки запис се конвертира в запис с определена дължина. Премахват се символите за нов ред. Добавят се SPACE символи към редовете, които са по-къси от големината на блока. Тези редове които имат повече символи отколкото е големината на блока се отрязват, като се разпечатва номера на отрязаните редове.

unblock

Конвертира записите с еднаква дължина в записи с променлива дължина.

lcase

Променя символите за големи букви, определени от LC_CTYPE в малки букви.

ucase

Променя символите за малки букви, определени от LC_CTYPE в големи букви.

swab

Разменя всяка двойка входни байтове. Ако входните байтове са нечетен брой, се пропуска последния ред.

noerror

Не спира при грешка. Когато има грешка при копирането, се изкарва съобщените за грешка, последвано от настоящия брои на блоковете на входния и на изходния файл. Ако е указано sync липсващите данни се заменят с нулеви байтове, иначе входния блок ще се пропусне при записаването.

notrunc

Не изтрива съдържанието на изходния файл преди да започне да копира. Запазва съдържанието на данните, които са не са записани от dd процеса, който извършва операцията. (See also the preceding of=file operand.)

sync

Прави всеки входен блок с големината на ibs= buffer, като при нужда добавя нулеви байтове.
Ако са използвани пове4е от един conv= операнд, се използва последната двойка operand=value.
За bs=, cbs=, ibs=, и obs= операндите, приложението трябва да предостави големината в байтове от вида:

положителен десетичен символ
положителен десетичен символ последван от k, указващ умножение с 1024
положителен десетичен символ последван отM,указващ умножение с 1024*1024
положителен десетичен символ последван отb,указващ умножение с 512
два или повече положителни десетични символа (с или без k или b) разделени от x, указваще произведението на символите.

Possibly Related Posts:


  • Share/Bookmark

Filed under: Статии | No Comments »

Копиране на директории в линукс

февруари 8th, 2009

Понякога трябва да копираме всички файлове от една директория в друга, като копираме всички връзки, права на файловете и т.н. По принцип тази задача може да се изпълни по няколко начина.

Като начало имаме cp командата. Ако и добавим -r опцията тя ще копира всички файлове рекурсивно. Но това не гарантира, че всичко ще бъде копирано. Понякога cp има проблеми с връзките. В такъв случай може да ползваме командата tar по този начин :

cd /home/newfiles

tar cf – . | (cd ./archive; tar xvf -)

Какво точно правят тези два реда? Първия сменя директорията на /home/newfiles. Втория копира всички файлове, като използва tar. Новите файлове се намират  в /home/newfiles/archive.  По този начин запазваме правата и копираме всични връзки също.

Possibly Related Posts:


  • Share/Bookmark

Filed under: Статии | No Comments »