Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>bash sh shell commands}} ====== Часто применяемые команды ====== ===== Работа с историей команд ===== ^ Команда ^ Описание ^ | !! | Запуск последней выполненой команды | | !command | Запуск последней выполненой команды (с указанием выполняемой команды. Пример: !ls) | | !command:p | Просмотр последней выполненой команды (с указанием выполняемой команды. Пример: !ls:p) | | !$ | Запуск последнего слова в предыдущей команде (Аналогично Alt + .) | | !$:p | Просмотр последнего слова в предыдущей команде | | !* | Запуск последней выполненой команды исключая последнее слово (Пример: **find some_file.txt /** вызовется **find some_file.txt**) | | !*:p | Просмотр последней выполненой команды исключая последнее слово (Пример: **find some_file.txt /** выведется **find some_file.txt**) | | | | | | | \\ ===== Системная информация ===== ^Команда ^Описание | |arch |отобразить архитектуру компьютера | |uname -m || |uname -r |отобразить используемую версию ядра | |dmidecode -q |показать аппаратные системные компоненты - (SMBIOS / DMI) | |hdparm -i /dev/hda |вывести характеристики жесткого диска | |hdparm -tT /dev/sda |протестировать производительность чтения данных с жесткого диска | |cat /proc/cpuinfo |отобразить информацию о процессоре | |cat /proc/interrupts |показать прерывания | |cat /proc/meminfo |проверить использование памяти | |cat /proc/swaps |показать файл(ы) подкачки | |cat /proc/version |вывести версию ядра | |cat /proc/net/dev |показать сетевые интерфейсы и статистику по ним | |cat /proc/mounts |отобразить смонтированные файловые системы | |lspci -tv |показать в виде дерева PCI устройства | |lsusb -tv |показать в виде дерева USB устройства | |date |вывести системную дату | |cal 2007 |вывести таблицу-календарь 2007-го года | |date 041217002007.00 |установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды) | |clock -w |сохранить системное время в BIOS | \\ ===== Остановка системы ===== ^Команда ^Описание | |shutdown -h now |Остановить систему | |init 0 || |telinit 0 || |shutdown -h hours:minutes & |запланировать остановку системы на указанное время | |shutdown -c |отменить запланированную по расписанию остановку системы | |shutdown -r now |перегрузить систему | |reboot || |logout |выйти из системы | \\ ===== Файлы и директории ===== ^Команда ^Описание | |cd /home |перейти в директорию '/home' | |cd .. |перейти в директорию уровнем выше | |cd ../.. |перейти в директорию двумя уровнями выше | |cd |перейти в домашнюю директорию | |cd ~user |перейти в домашнюю директорию пользователя user | |cd - |перейти в директорию, в которой находились до перехода в текущую директорию | |pwd |показать текущюю директорию | |ls |отобразить содержимое текущей директории | |ls -F |отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип | |ls -l |показать детализированое представление файлов и директорий в текущей директории | |ls -a |показать скрытые файлы и директории в текущей директории | |ls %%*%%[0-9]%%*%% |показать файлы и директории содержащие в имени цифры | |tree |показать дерево файлов и директорий, начиная от корня (/) | |lstree || |mkdir dir1 |создать директорию с именем 'dir1' | |mkdir dir1 dir2 |создать две директории одновременно | |mkdir -p /tmp/dir1/dir2 |создать дерево директорий | |rm -f file1 |удалить файл с именем 'file1' | |rmdir dir1 |удалить директорию с именем 'dir1' | |rm -rf dir1 |удалить директорию с именем 'dir1' и рекурсивно всё её содержимое | |rm -rf dir1 dir2 |удалить две директории и рекурсивно их содержимое | |mv dir1 new_dir |переименовать или переместить файл или директорию | |cp file1 file2 |сопировать файл file1 в файл file2 | |cp dir/%%*%% . |копировать все файлы директории dir в текущую директорию | |cp -a /tmp/dir1 . |копировать директорию dir1 со всем содержимым в текущую директорию | |cp -a dir1 dir2 |копировать директорию dir1 в директорию dir2 | |ln -s file1 lnk1 |создать символическую ссылку на файл или директорию | |ln file1 lnk1 |создать "жёсткую" (физическую) ссылку на файл или директорию | |touch -t 0712250000 fileditest |модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm) | \\ ===== Поиск файлов ===== ^Команда ^Описание | |find / -name file1 |найти файлы и директории с именем file1. Поиск начать с корня (/) | |find / -user user1 |найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/) | |find /home/user1 -name "%%*%%.bin" |Найти все файлы и директории, имена которых оканчиваются на '. bin'. Поиск начать с '/ home/user1' | |find /usr/bin -type f -atime +100 |найти все файлы в '/usr/bin', время последнего обращения к которым более 100 дней | |find /usr/bin -type f -mtime -10 |найти все файлы в '/usr/bin', созданные или изменённые в течении последних 10 дней | |find / -name %%*%%.rpm -exec chmod 755 '{}' %%\%%; |найти все фалы и директории, имена которых оканчиваются на '.rpm', и изменить права доступа к ним | |find / -xdev -name "%%*%%.rpm" |найти все фалы и директории, имена которых оканчиваются на '.rpm', игнорируя съёмные носители, такие как cdrom, floppy и т.п. | |locate "%%*%%.ps" |найти все файлы, сожержащие в имени '.ps'. Предварительно рекомендуется выполнить команду 'updatedb' | |whereis halt |показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу 'halt' | |which halt |отображает полный путь к файлу 'halt' | \\ ===== Монтирование файловых систем ===== ^Команда ^Описание | |mount /dev/hda2 /mnt/hda2 |монтирует раздел 'hda2' в точку монтирования '/mnt/hda2'. Убедитесь в наличии директории-точки монтирования '/mnt/hda2' | |umount /dev/hda2 |размонтирует раздел 'hda2'. Перед выполнением, покиньте '/mnt/hda2' | |fuser -km /mnt/hda2 |принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем | |umount -n /mnt/hda2 |выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты "только чтение" или недостаточно места на диске | |mount /dev/fd0 /mnt/floppy |монтировать флоппи-диск | |mount /dev/cdrom /mnt/cdrom |монтировать CD или DVD | |mount /dev/hdc /mnt/cdrecorder |монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-) | |mount -o loop file.iso /mnt/cdrom |смонтировать ISO-образ | |mount -t vfat /dev/hda5 /mnt/hda5 |монтировать файловую систему Windows FAT32 | |mount -t smbfs -o username=user,password=pass ''/''''/'' winclient''/'' share ''/'' mnt''/'' share |монтировать сетевую файловую систему Windows (SMB/CIFS) | |mount -o bind /home/user/prg /var/ftp/user |"монтирует" директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в "песочнице" (chroot), когда симлинки сделать невозможно. | \\ ===== Дисковое пространство ===== ^Команда ^Описание | |df -h |отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства //(Прим.переводчика. ключ -h работает не во всех %%*%%nix системах)// | |ls -lSr ''''\|more |выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр | |du -sh dir1 |подсчитывает и выводит размер, занимаемый директорией 'dir1' //(Прим.переводчика. ключ -h работает не во всех %%*%%nix системах)// | |du -skh %%*%% ''''|sort -rn |отображает размер и имена файлов и директорий, с соритровкой по размеру | |rpm -q -a ''-''''-'' qf '{SIZE}t%{NAME}n' ''''|sort -k1,1n |показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.) | |dpkg-query -W -f='${Installed-Size;10}t${Package}n' ''''|sort -k1,1n |показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.) | \\ ===== Пользователи и группы ===== ^Команда ^Описание | |groupadd group_name |создать новую группу с именем group_name | |groupdel group_name |удалить группу group_name | |groupmod -n new_group_name old_group_name |переименовать группу old_group_name в new_group_name | |useradd -c "Nome Cognome" -g admin -d /home/user1 -s /bin/bash user1 |создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell'а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome | |useradd user1 |создать пользователя user1 | |userdel -r user1 |удалить пользователя user1 и его домашний каталог | |usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 |изменить атрибуты пользователя | |passwd |сменить пароль | |passwd user1 |сменить пароль пользователя user1 (только root) | |chage -E 2005-12-31 user1 |установить дату окончания действия учётной записи пользователя user1 | |pwck |проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow | |grpck |проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group | |newgrp [-] group_name |изменяет первичную группу текущего пользователя. Если указать "-", ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd | \\ ===== Выставление/изменение полномочий на файлы ===== ^Команда ^Описание | |ls -lh |просмотр полномочий на файлы и директории в текущей директории | |ls /tmp ''''|pr -T5 -W$COLUMNS |вывести содержимое директории /tmp и разделить вывод на пять колонок | |chmod ugo+rwx directory1 |добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) - всем полные права. Аналогичное можно сделать таким образом "chmod 777 directory1" | |chmod go-rwx directory1 |отобрать у группы и всех остальных все полномочия на директорию directory1. | |chown user1 file1 |назначить владельцем файла file1 пользователя user1 | |chown -R user1 directory1 |назначить рекурсивно владельцем директории directory1 пользователя user1 | |chgrp group1 file1 |сменить группу-владельца файла file1 на group1 | |chown user1:group1 file1 |сменить владельца и группу владельца файла file1 | |find / -perm -u+s |найти, начиная от корня, все файлы с выставленным SUID | |chmod u+s /bin/binary_file |назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла. | |chmod u-s /bin/binary_file |снять SUID-бит с файла /bin/binary_file. | |chmod g+s /home/public |назначить SGID-бит директории /home/public. | |chmod g-s /home/public |снять SGID-бит с директории /home/public. | |chmod o+t /home/public |назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам | |chmod o-t /home/public |снять STIKY-бит с директории /home/public | \\ ===== Специальные атрибуты файлов ===== ^Команда ^Описание | |chattr +a file1 |позволить открывать файл на запись только в режиме добавления | |chattr +c file1 |позволяет ядру автоматически сжимать/разжимать содержимое файла. | |chattr +d file1 |указавет утилите dump игнорировать данный файл во время выполнения backup'а | |chattr +i file1 |делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него. | |chattr +s file1 |позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных. | |chattr +S file1 |указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync | |chattr +u file1 |данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить | |lsattr |показать атрибуты файлов | ^Команда ^Описание | ^Архивирование и сжатие файлов ^^ |bunzip2 file1.bz2 |разжимает файл 'file1.gz' | |gunzip file1.gz |:::| |gzip file1 |сжимает файл 'file1' | |bzip2 file1 |:::| |gzip -9 file1 |сжать файл file1 с максимальным сжатием | |rar a file1.rar test_file |создать rar-архив 'file1.rar' и включить в него файл test_file | |rar a file1.rar file1 file2 dir1 |создать rar-архив 'file1.rar' и включить в него file1, file2 и dir1 | |unrar x file1.rar |распаковать rar-архив | |tar -cvf archive.tar file1 |создать tar-архив archive.tar, содержащий файл file1 | |tar -cvf archive.tar file1 file2 dir1 |создать tar-архив archive.tar, содержащий файл file1, file2 и dir1 | |tar -tf archive.tar |показать содержимое архива | |tar -xvf archive.tar |распаковать архив | |tar -xvf archive.tar -C /tmp |распаковать архив в /tmp | |tar -cvfj archive.tar.bz2 dir1 |создать архив и сжать его с помощью bzip2//(Прим.переводчика. ключ -j работает не во всех %%*%%nix системах)// | |tar -xvfj archive.tar.bz2 |разжать архив и распаковать его//(Прим.переводчика. ключ -j работает не во всех %%*%%nix системах)// | |tar -cvfz archive.tar.gz dir1 |создать архив и сжать его с помощью gzip | |tar -xvfz archive.tar.gz |разжать архив и распаковать его | |zip file1.zip file1 |создать сжатый zip-архив | |zip -r file1.zip file1 file2 dir1 |создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий | |unzip file1.zip |разжать и распаковать zip-архив | \\ ===== RPM пакеты (Fedora, Red Hat и тому подобное) ===== ^Команда ^Описание | |rpm -ivh package.rpm |установить пакет с выводом сообщений и прогресс-бара | |rpm -ivh ''-''''-'' nodeps package.rpm |установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей | |rpm -U package.rpm |обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен | |rpm -F package.rpm |обновить пакет только если он установлен | |rpm -e package_name.rpm |удалить пакет | |rpm -qa |отобразить список всех пакетов, установленных в системе | |rpm -qa ''''|| |rpm -qi package_name |вывести информацию о конкрентном пакете | |rpm -qg "System Environment/Daemons" |отобразить пакеты входящие в группу пакетов | |rpm -ql package_name |вывести список файлов, входящих в пакет | |rpm -qc package_name |вывести список конфигурационных файлов, входящих в пакет | |rpm -q package_name ''-''''-'' whatrequires |вывести список пакетов, необходимых для установки конкретного пакета по зависимостям | |rpm -q package_name ''-''''-'' whatprovides |show capability provided by a rpm package | |rpm -q package_name ''-''''-'' scripts |отобразит скрипты, запускаемые при установке/удалении пакета | |rpm -q package_name ''-''''-'' changelog |вывести историю ревизий пакета | |rpm -qf /etc/httpd/conf/httpd.conf |проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла. | |rpm -qp package.rpm -l |отображает список файлов, входящих в пакет, но ещё не установленных в систему | |rpm ''-''''-'' import /media/cdrom/RPM-GPG-KEY |ипортировать публичный ключ цифровой подписи | |rpm ''-''''-'' checksig package.rpm |проверит подпись пакета | |rpm -qa gpg-pubkey |проверить целостность установленного содержимого пакета | |rpm -V package_name |проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменеия пакета | |rpm -Va |проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью! | |rpm -Vp package.rpm |проверить пакет, который ещё не установлен в систему | |rpm2cpio package.rpm ''''|cpio ''-''''-'' extract ''-''''-'' make-directories %%*%%bin%%*%% |извлечь из пакета файлы содержащие в своём имени bin | |rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm |установить пакет, собранный из исходных кодов | |rpmbuild ''-''''-'' rebuild package_name.src.rpm |собрать пакет из исходных кодов | \\ ===== YUM - средство обновления пакетов(Fedora, RedHat и тому подобное) ===== ^Команда ^Описание | |yum install package_name |закачать и установать пакет | |yum update |обновить все пакеты, установленные в систему | |yum update package_name |обновить пакет | |yum remove package_name |удалить пакет | |yum list |вывести список всех пакетов, установленных в систему | |yum search package_name |найти пакет в репозитории | |yum clean packages |очисть rpm-кэш, удалив закачанные пакеты | |yum clean headers |удалить все заголовки файлов, которые система использует для разрешения зависимостей | |yum clean all |очисть rpm-кэш, удалив закачанные пакеты и заголовки | \\ ===== DEB пакеты (Debian, Ubuntu и тому подобное) ===== ^Команда ^Описание | ^[[system:dpkg|Подробнее...]] ^^ |dpkg -i package.deb |установить / обновить пакет | |dpkg -r package_name |удалить пакет из системы | |dpkg -l |показать все пакеты, установленные в систему | |dpkg -l ''''|| |dpkg -s package_name |отобразить инфрмацию о конкретном пакете | |dpkg -L package_name |вывести список файлов, входящих в пакет, установленный в систему | |dpkg ''-''''-'' contents package.deb |отобразить список файлов, входящих в пакет, который ешё не установлен в систему | |dpkg -S /bin/ping |найти пакет, в который входит указанный файл. | \\ ===== APT - средство управление пакетами (Debian, Ubuntu и тому подобное) ===== ^Команда ^Описание | ^[[system:apt|Подробнее...]] ^^ |apt-get install package_name |установить / обновить пакет | |apt-cdrom install package_name |установить / обновить пакет с cdrom'а | |apt-get update |получить обновлённые списки пакетов | |apt-get upgrade |обновить пакеты, установленные в систему | |apt-get remove package_name |удалить пакет, установленный в систему с сохранением файлов конфигурации | |apt-get purge package_name |удалить пакет, установленный в систему с удалением файлов конфигурации | |apt-get check |проверить целостность зависимостей | |apt-get clean |удалить загруженные архивные файлы пакетов | |apt-get autoclean |удалить старые загруженные архивные файлы пакетов | \\ ===== Просмотр содержимого файлов ===== ^Команда ^Описание | |cat file1 |вывести содержимое файла file1 на стандартное устройсво вывода | |tac file1 |вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.) | |more file1 |постраничный вывод содержимого файла file1 на стандартное устройство вывода | |less file1 |постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п. | |head -2 file1 |вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк | |tail -2 file1 |вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк | |tail -f /var/log/messages |выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста. | \\ ===== Манипуляции с текстом ===== ^Команда ^Описание | |cat file ''''|grep -i "Criteria" > result.txt |общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый | |cat file ''''|grep -i "Criteria" » result.txt |общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан | |grep Aug /var/log/messages |из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug" | |grep ''''^Aug /var/log/messages |из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, начинающиеся на "Aug" | |grep [0-9] /var/log/messages |из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, содержащие цифры | |grep Aug -R /var/log/%%*%% |отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug", во всех файлах, находящихся в директории /var/log и ниже | |sed 's/stringa1/stringa2/g' example.txt |в файле example.txt заменить "string1" на "string2", результат вывести на стандартное устройство вывода. | |sed '''/^$/'' d' example.txt |удалить пустые строки из файла example.txt | |sed '''/ %%*%%#/'' d; ''/^$/'' d' example.txt |удалить пустые строки и комментарии из файла example.txt | |echo 'test' ''''|tr '[:lower:]' '[:upper:]' |преобразовать символы из нижнего регистра в верхний | |sed -e '1d' result.txt |удалить первую строку из файла example.txt | |sed -n '/string1/p' |отобразить только строки содержашие "string1" | |sed -e 's''/'' %%*%%$''/''''/''' example.txt |удалить пустые символы в в конце каждой строки | |sed -e 's''/'' string1''/''''/'' g' example.txt |удалить строку "string1" из текста не изменяя всего остального | |sed -n '1,8p;5q' example.txt |взять из файла с первой по восьмую строки и из них вывести первые пять | |sed -n '5p;5q' example.txt |вывести пятую строку | |sed -e 's/0%%*%%/0/g' example.txt |заменить последовательность из любого количества нулей одним нулём | |cat -n file1 |пронумеровать строки при выводе содержимого файла | |cat example.txt ''''|awk 'NR%2==1' |при выводе содержимого файла, не выводить чётные строки файла | |echo a b c ''''|awk '{print $1}' |вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции | |echo a b c ''''|awk '{print $1,$3}' |вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции | |paste file1 file2 |объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m | |paste -d '+' file1 file2 |объединить содержимое file1 и file2 в виде таблицы с разделителем "+" | |sort file1 file2 |отсортировать содержимое двух файлов | |sort file1 file2 ''''|uniq |отсортировать содержимое двух файлов, не отображая повторов | |sort file1 file2 ''''|uniq -u |отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода) | |sort file1 file2 ''''|uniq -d |отсортировать содержимое двух файлов, отображая только повторяющиеся строки | |comm -1 file1 file2 |сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file1' | |comm -2 file1 file2 |сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file2' | |comm -3 file1 file2 |сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах | \\ ===== Преобразование наборов символов и файловых форматов ===== ^Команда ^Описание | |dos2unix filedos.txt fileunix.txt |конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки) | |unix2dos fileunix.txt filedos.txt |конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки) | |recode ..HTML< page.txt > page.html |конвертировать содержимое тестового файла page.txt в html-файл page.html | |recode -l ''''|more |вывести список доступных форматов | \\ ===== Анализ файловых систем ===== ^Команда ^Описание | |badblocks -v /dev/hda1 |проверить раздел hda1 на наличие bad-блоков | |fsck /dev/hda1 |проверить/восстановить целостность linux-файловой системы раздела hda1 | |fsck.ext2 /dev/hda1 |проверить/восстановить целостность файловой системы ext2 раздела hda1 | |e2fsck /dev/hda1 | |e2fsck -j /dev/hda1 |проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же | |fsck.ext3 /dev/hda1 |проверить/восстановить целостность файловой системы ext3 раздела hda1 | |fsck.vfat /dev/hda1 |проверить/восстановить целостность файловой системы fat раздела hda1 | |fsck.msdos /dev/hda1 |:::| |dosfsck /dev/hda1 |:::| \\ ===== Форматирование файловых систем ===== ^Команда ^Описание | |mkfs /dev/hda1 |создать linux-файловую систему на разделе hda1 | |mke2fs /dev/hda1 |создать файловую систему ext2 на разделе hda1 | |mke2fs -j /dev/hda1 |создать журналирующую файловую систему ext3 на разделе hda1 | |mkfs -t vfat 32 -F /dev/hda1 |создать файловую систему FAT32 на разделе hda1 | |fdformat -n /dev/fd0 |форматирование флоппи-диска без проверки | |mkswap /dev/hda3 |создание swap-пространства на разделе hda3 | \\ ===== swap-пространство ===== ^Команда ^Описание | |mkswap /dev/hda3 |создание swap-пространства на разделе hda3 | |swapon /dev/hda3 |активировать swap-пространство, расположенное на разделе hda3 | |swapon /dev/hda2 /dev/hdb3 |активировать swap-пространства, расположенные на разделах hda2 и hdb3 | \\ ===== Создание резервных копий (backup) ===== ^Команда ^Описание | |dump -0aj -f /tmp/home0.bak /home |создать полную резервную копию директории /home в файл /tmp/home0.bak | |dump -1aj -f /tmp/home0.bak /home |создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak | |restore -if /tmp/home0.bak |восстановить из резервной копии /tmp/home0.bak | |rsync -rogpav ''-''''-'' delete /home /tmp |синхронизировать /tmp с /home | |rsync -rogpav -e ssh ''-''''-'' delete /home ip_address:/tmp |синхронизировать через SSH-туннель | |rsync -az -e ssh ''-''''-'' delete ip_addr:/home/public /home/local |синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием | |rsync -az -e ssh ''-''''-'' delete /home/local ip_addr:/home/public |синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием | |dd bs=1M if=/dev/hda ''''|gzip ''''|ssh user@ip_addr 'dd of=hda.gz' |сделать "слепок" локального диска в файл на удалённом компьютере через ssh-туннель | |tar -Puf backup.tar /home/user |создать инкрементальную резервную копию директории '/home/user' в файл backup.tar с сохранением полномочий | |( cd /tmp/local/ && tar c . ) ''''|ssh -C user@ip_addr 'cd /home/share/ && tar x -p' |копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/ | |( tar c /home ) ''''|ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' |копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home | |tar cf - . ''''|(cd /tmp/backup ; tar xf - ) |копирование одной директории в другую с сохранением полномочий и линков | |find /home/user1 -name '%%*%%.txt' ''''|%%\%% \\ xargs cp -av ''-''''-'' target-directory=/home/backup/ ''-''''-'' parents |поиск в /home/user1 всех файлов, имена которых оканчиваются на '.txt', и копирование их в другую директорию | |find /var/log -name '%%*%%.log' ''''|tar cv ''-''''-'' files-from=- ''''|bzip2 > log.tar.bz2 |поиск в /var/log всех файлов, имена которых оканчиваются на '.log', и создание bzip-архива из них | |dd if=/dev/hda of=/dev/fd0 bs=512 count=1 |создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск | |dd if=/dev/fd0 of=/dev/hda bs=512 count=1 |восстановить MBR с флоппи-диска на /dev/hda | \\ ===== CDROM ===== ^Команда ^Описание | |cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force |clean a rewritable cdrom | |mkisofs /dev/cdrom > cd.iso |create an iso image of cdrom on disk | |mkisofs /dev/cdrom ''''|gzip > cd_iso.gz |create a compressed iso image of cdrom on disk | |mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd |create an iso image of a directory | |cdrecord -v dev=/dev/cdrom cd.iso |burn an ISOimage | |gzip -dc cd_iso.gz ''''|cdrecord dev=/dev/cdrom - |burn a compressed ISOimage | |mount -o loop cd.iso /mnt/iso |mount an ISOimage | |cd-paranoia -B |rip audio tracks from a CD to wav files | |cd-paranoia ''-''''-'' "-3" |rip first three audio tracks from a CD to wav files | |cdrecord ''-''''-'' scanbus |scan bus to identify the channel scsi | \\ ===== Сеть (LAN и WiFi) ===== ^Команда ^Описание | |ifconfig eth0 |показать конфигурацию сетевого интерфейса eth0 | |ifup eth0 |активировать (поднять) интерфейс eth0 | |ifdown eth0 |деактивировать (опустить) интерфейс eth0 | |ifconfig eth0 192.168.1.1 netmask 255.255.255.0 |выставить интерфейсу eth0 ip-адрес и маску подсети | |ifconfig eth0 promisc |перевести интерфейс eth0 в promiscuous-режим для "отлова" пакетов (sniffing) | |ifconfig eth0 -promisc |отключить promiscuous-режим на интерфейсе eth0 | |dhclient eth0 |активировать интерфейс eth0 в dhcp-режиме. | |route -n |вывести локальную таблицу маршрутизации | |netstat -rn |:::| |route add -net 0/0 gw IP_Gateway |задать ip-адрес шлюза по умолчанию (default gateway) | |route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 |добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1 | |route del 0/0 gw IP_gateway |удалить ip-адрес шлюза по умолчанию (default gateway) | |echo "1" > /proc/sys/net/ipv4/ip_forward |разрешить пересылку пакетов (forwarding) | |hostname |отобразить имя компьютера | |host www''.'' yandex''.'' ru |разрешить имя www''.'' yandex''.'' ru хоста в ip-адрес и наоборот | |host 93.158.134.3 |:::| |ip link show |отобразить состояние всех интерфейсов | |mii-tool eth0 |отобразить статус и тип соединения для интерфейса eth0 | |ethtool eth0 |отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения | |netstat -tupn |отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, обеспечивающих эти соединения | |netstat -tupln |отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, слушающих порты | |tcpdump tcp port 80 |отобразить весь трафик на TCP-порт 80 (обычно - HTTP) | |iwlist scan |просканировать эфир на предмет, доступности беспроводных точек доступа | |iwconfig eth1 |показать конфигурацию беспроводного сетевого интерфейса eth1 | ^Microsoft Windows networks(SAMBA) ^^ |nbtscan ip_addr |разрешить netbios-имя //nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.// | |nmblookup -A ip_addr |:::| |smbclient -L ip_addr/hostname |отобразить ресурсы, предоставленные в общий доступ на windows-машине | |smbget -Rr smb:''/''''/'' ip_addr''/'' share |подобно wget может получить файлы с windows-машин через smb-протокол | |mount -t smbfs -o username=user,password=pass ''/''''/'' winclient''/'' share ''/'' mnt''/'' share |смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему | \\ ===== IPTABLES (firewall) ===== ^Команда ^Описание | |iptables -t filter -nL |отобразить все цепочки правил | |iptables -nL |:::| |iptables -t nat -L |отобразить все цепочки правил в NAT-таблице | |iptables -t filter -F |очистить все цепочки правил в filter-таблице | |iptables -F |:::| |iptables -t nat -F |очистить все цепочки правил в NAT-таблице | |iptables -t filter -X |удалить все пользовательские цепочки правил в filter-таблице | |iptables -t filter -A INPUT -p tcp ''-''''-'' dport telnet -j ACCEPT |позволить входящее подключение telnet'ом | |iptables -t filter -A OUTPUT -p tcp ''-''''-'' dport http -j DROP |блокировать исходящие HTTP-соединения | |iptables -t filter -A FORWARD -p tcp ''-''''-'' dport pop3 -j ACCEPT |позволить "прокидывать" (forward) POP3-соединения | |iptables -t filter -A INPUT -j LOG ''-''''-'' log-prefix "DROP INPUT" |включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса "DROP INPUT" | |iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами. | |iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp ''-''''-'' dport 22 %%\%% \\ -j DNAT ''-''''-'' to-destination 10.0.0.2:22 |перенаправление пакетов, адресованных одному хосту, на другой хост | \\ ===== Мониторинг и отладка ===== ^Команда ^Описание | |top |отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных) | |ps -eafw |отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды) | |ps -e -o pid,args ''-''''-'' forest |вывести PID'ы и процессы в виде дерева | |pstree |отобразить дерево процессов | |kill -9 98989 |"убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных) | |kill -KILL 98989 |:::| |kill -TERM 98989 |Корректно завершить процесс с PID 98989 | |kill -1 98989 |заставить процесс с PID 98989 перепрочитать файл конфигурации | |kill -HUP 98989 |:::| |lsof -p 98989 |отобразить список файлов, открытых процессом с PID 98989 | |lsof /home/user1 |отобразить список открытых файлов из директории /home/user1 | |strace -c ls > /dev/null |вывести список системных вызовов, созданных и полученных процессом ls | |strace -f -e open ls > /dev/null |вывести вызовы бибилотек | |watch -n1 'cat /proc/interrupts' |отображать прерывания в режиме реального времени | |last reboot |отобразить историю перезагрузок системы | |last user1 |отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней | |lsmod |вывести загруженные модули ядра | |free -m |показать состояние оперативной памяти в мегабайтах | |smartctl -A /dev/hda |контроль состояния жёсткого диска /dev/hda через SMART | |smartctl -i /dev/hda |проверить доступность SMART на жёстком диске /dev/hda | |tail /var/log/dmesg |вывести десять последних записей из журнала загрузки ядра | |tail /var/log/messages |вывести десять последних записей из системного журнала | \\ ===== Другие полезные команды ===== ^Команда ^Описание | |apropos //…keyword// |выводит список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду | |man ping |вызов руководства по работе с программой, в данном случае, - ping | |whatis //…keyword // |отображает описание действий указанной программы | |mkbootdisk ''-''''-'' device /dev/fd0 `uname -r` |создаёт загрузочный флоппи-диск | |gpg -c file1 |шифрует файл file1 с помощью GNU Privacy Guard | |gpg file1.gpg |дешифрует файл file1 с помощью GNU Privacy Guard | |wget -r www''.'' example''.'' com |загружает рекурсивно содержимое сайта www''.'' example''.'' com | |wget -c www''.'' example''.'' com/file''.'' iso |загрузить файл www''.'' example''.'' com/file''.'' iso с возможностью останова и продолжения в последствии | |echo 'wget -c www''.'' example''.'' com/files''.'' iso' ''''|at 09:00 |начать закачку в указанное время | |ldd /usr/bin/ssh |вывести список библиотек, необходимых для работы ssh | |alias hh='history' |назначить алиас hh команде history | \\ <hidden> * http://www.codemio.com/2016/09/commonly-used-bash-shortcuts.html * http://www.codemio.com/2016/09/useful-linux-commands.html </hidden>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal