Дистрибутив для новичка
Дистрибутив ubuntu https://ubuntu.com/download/desktop Порядок соответствует изучению Linux для новичков https://www.youtube.com/watch?v=fAHpGshMCgQ&list=PLg5SS_4L6LYuE4z-3BgLYGkZrs-cF4Tep&index=1 - Видео
0. Знакомство с терминалом
Клавиша TAB на клавиатуре наш главный помощник! man - помощь man man - помощь по man man -k man - ищем где в помощи слово man man ls - вывести помощь по ls man -a crontab - Последовательно отображает все разделы справочника man, в которых упоминается crontab man -k crontab - Эквивалент команды apropos --- 1 Выполняемые программы или команды для командной оболочки 2 Обращение к операционной системе (функции, предоставляемые ядром) 3 Обращение к библиотеке (внутренние функции программных библиотек) 4 Специальные файлы (обычно можно найти в /dev) 5 Форматы файлов и условные обозначения типа /etc/passwd 6 Игры 7 Прочее (включая макро пакеты и условные обозначения), например man(7), groff(7) 8 Команды по администрированию системы (обычно только для root) 9 Программы ядра [нетипичные] --- man 5 crontab - Отображает части раздела 5 справочника man, в которых упоминается crontab info - помощь uptime - сколько работает система lscpu - информация о cpu whatis - показать что делает команда whereis - показывает где файл which ls - вывести полный путь до файла ls locate - показывает где файл ls - показать что в этой директории ls -la -R / - показать все на компьютере Ctrl + Z - заморозить выполнение процесса Ctlrl + C - прервать выполнения fg - продолжить выполнения процесса после использования ctrl+z bg - продолжить выполнения процесса после использования ctrl+z jobs - посмотреть задания в bg ps - показать процессы
1. Перемещение по каталогам / по файловой системе
Работа с каталогами: . - текущий каталог .. - каталог на уровень выше ~ - домашний каталог pwd - показать текущею директорию cd - смена директорий cd / - перейти в корень cd ~ - сменить текущий каталог на домашний cd - без параметров также сменит текущий каталог на домашний cd .. - перейти на каталог выше cd ../.. - перейти на два каталога выше ls - вывести листинг содержимого текущей директории ls - показать содержимое каталога ls -al - покажет все файлы, ссылки, размер, скрытые файлы ls -F - листинг текущей директории с добавлением к именам символов, обозначающих тип объекта ls -l - листинг текущей директории с подробностями по каждому объекту ( права доступа, владелец, группа, дата, размер ) ls -a - кроме обычных объектов, вывести в листинге, скрытые файлы и директории, текущего каталога ls /tmp | pr -T5 -W$COLUMNS - листинг директории /tmp в 5 колонок ls *[0-9]* - вывести в листинг файлов и директорий текущего каталога, содержащие в имени цифровые символы ls -lSr - показать файлы с сортировкой по размеру
2. Чтение файлов \ Создание директорий \ Создание файлов
cat name_file.txt - вывод файла name_file.txt на экран cat - напечатает содержимое указанного файла на терминал. more name_file.txt - открыть файл namme_file.txt для просмотра less name_file.txt - открыть файл name_file.txt для просмотра touch - если файл/директория существует то будет изменено время создания - если файла нет, то он будет создан touch name_file1.txt - создать файл с именем name_file1.txt touch -t 0712250000 fileditest - поменять дату файла fileditest touch lol{1,2,3}.txt - создать пустые файлы lol1.txt lol2.txt lol3.txt mkdir dir3 - создать директорию mkdir -p dir1/dir2/dir3 - создать директорию dir3 если dir1 и dir2 не существовало, будут созданы cp file1.txt file2.txt - скопировать file1.txt в file2.txt cp -R dir1 dir2 - скопировать cp file1 file2 - копирование файла в файл cp file1 file2 dir - скопировать файлы в директорию cp (x*~x[3-5]) newdir - скопировать все файлы вида x* кроме x3 по x5 cp *(^m0) newdir - скопировать файлы модифицированные не сегодня rmdir dir4 - удалить пустую директорию rm file2.txt - удалить файл file2.txt rm -rf dri3 - удалить директорию со всеми файлами mv file111.txt file222.txt - переместить и переименовать файл \ каталог split -b 1M filemy - разбить filemy на части размером 1 Мб с помощью опции -b split -n 3 filemy - разрезание filemy на три части df — утилита, которая показывает свободное место на дисках df -h — отображает слайсы, и свободное\занятое место df -i — показывает количество занятых инодов
3. Линки
жесткие ссылки - это различные имена одного и того же файла. при удалении всех ссылок удаляется сам файл мягкие ссылки или симлинки не имеют собственных прав и указывают на владельца удаляются ссылки с помощью команды rm создаются ссылки с помощью команды ln ln /что /на_что - без параметра s создастся жесткая ссылка. жесткие ссылки ограничены одной файловой системой ln -s /что "название линка" - нужно быть в той папке куда нужно сделать линк (мягкая ссылка) ln -s /var/usr/re ~/re - создаст симлинк на файл /var/usr/re и поместит его в домашний каталог ln -s /2/e/txt /name - создаст симлинк ln -s /путь/что /куда/как_назвать_симлинк - последний параметр отвечает за название симлинка
4. Команды find
find / -name '*.html' - искать файлы закачивающиеся на .html find / -user vasya - поиск файлов принадлежащие пользователю vasya find / -name filedir - найти все директории и файлы принадлежащие пользователю vasya. Поиск будет производиться, начиная с корневой директории (/) find /etc -type d | sort - ищет все каталоги, находящиеся в /etc/ и вывод сортируется по имени find /usr/bin -type f -atime +20 - найти директории и файлы с именем filedir. Поиск будет производиться, начиная с корневой директории (/) find /usr/bin -type f -mtime -10 - найти все файлы в директории /usr/bin, время последнего обращения к которым более 20 дней find /var/backup/www -name "*.tar.gz" -mtime +30 |xargs /bin/rm -f {}; - найти все файлы старше 30 дней и удалить find /var/backup/www -name "*.tar.gz" -mtime +30 -delete - найти все файлы старше 30 дней и удалить find / -xdev -name \*.rpm - найти все файлы в директории /usr/bin, которые были созданы или модифицированы в течении последних 10 дней find . -maxdepth 1 -name *.jpg -print -exec convert - искать директории и файлы, имена которых оканчиваются на ".rpm", но игнорируя съёмные накопители, cdrom, usb и т.п. find /path/to/dir -name \*.c - Найти в текущей директории все файлы с расширением jpg и выполнить для каждого команду convert ( Imagemagick ) find / -name *.rpm -exec chmod 755 '{}' \; - найти все директории и файлы, имена которых оканчиваются на ".с". Поиск будет производиться, начиная с директории /path/to/dir
5. Команды wc
wc - подсчёт в файле строк, слов и символов wc - выводит количество строк, слов и символов в указанном файле или во входном потоке (из пайпа). Введите man wc чтобы узнать, как настроить вывод программы. wc -l filename - посчитать количество строк в файле cat my.txt | wc -l так мы узнаем сколько там всего строк (если нужно) cat file.txt | wc -l - посчитать число строк cat file.txt | wc -w - посчитать число слов grep 192.198.1.1 /var/log/httpd/access-log | wc -l - отображает количество записей конкретного IP-адреса в файле журнала Apache wc /var/log/dmesg - отображает счетчики для одного файла wc /var/log/*.log - отображает отдельные значения для каждого файла и общие для всех файлов netstat -na | grep ":порт\ " | wc -l - подсчет количества коннектов на определенный порт netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l - подсчет числа «полуоткрытых» TCP-соединений dpkg -l| wc -l - показать количество установленных пакетов sysctl -a | wc -l - показать количество строк
6. Команды sort
sort file - вывести отсортированное содержимое файла sort -n file - вывести отсортированное содержимое файла по номерам sort file1 file2 - вывести отсортированное содержимое двух файлов sort file1 file2 | uniq - вывести отсортированное содержимое двух файлов исключая повторные значения sort file1 file2 | uniq -u -вывести уникальные значения из отсортированного содержимого двух файлов sort file1 file2 | uniq -d - вывести только повторяющиеся значения из отсортированного содержимого двух файлов sort - выведет содержимое файла, указанного в командной строке, в алфавитном порядке Естественно, sort также может принимать ввод из пайпа. Наберите man sort чтобы ознакомиться с опциями команды, которые управляют вариантами сортировки. du -ks * | sort -n -r - Сортировать по размеру (kbytes) du -s /usr/share/* | sort -n - показать размер всех каталогов внутри каталога /usr/share/ и отсортировать по размеру (размер в Кб) ps auwx | sort -r -k 4.4 - Следующая команда сортирует процессы по уровню использования памяти. Параметр к используется для указания поля, используемого для сортировки. Запись 4,4 показывает, что именно четвертое поле (и только оно) является ключевым. lsmod | sort -k 2,2n - команда отображает загруженные модули ядра в порядке увеличения их размера. Параметр n указывает команде sort на необходимость интерпретировать второе поле как номер, а не как строку. cat /etc/passwd | cut -d ":" -f 1,3,6 | sort >> /home/pi/p.txt - вытащить из файла /etc/passwd содержимое столбиков 1,3,6 , выполнить сортировку и записать результат в файл /home/pi/p.txt
7. Команды cut
cut - показать содержимое вырезав символы cut - используется для извлечения из входного файла или потока, полей разделенных указанным символом. (попробуйте echo 'abc def ghi jkl' | cut -d ' ' -f2,2 ) echo 'abc def ghi jkl' | cut -d ' ' -f2,2 cut -c 1,4,7 name.txt - показать содержимое вырезав символы cut - показать содержимое вырезав символы cut -c 1,4,7 name.txt - показать содержимое вырезав символы cut -d ">" -f 3 filename.txt - прочитает файл, найдет делитель d, на экран показывает третий столбик cat /etc/passwd | cut -f 1,3,6 -d ':' - показать содержимое 1,3,6 столбика вырезав 2,4,5 разделенные символом ':' cat /etc/passwd | cut -d ":" -f 1,3,6 >> /home/pi/p.txt - записать содержимое столбиков 1,3,6 в файл /home/pi/p.txt cat /etc/passwd | cut -d ":" -f 1,3,6 | sort >> /home/pi/p.txt - вытащить из файла /etc/passwd содержимое столбиков 1,3,6 , выполнить сортировку и записать результат в файл /home/pi/p.txt
8. Регулярные выражения
точка . - любой один символ ? - любой один символ * - любое кол-во символов а* - a, ab, abc и aecjejich ^ - начало строки $ - конец строки ^а - Любое «а», находящееся в начале строки *а$ - Любое «а», находящееся в конце строки а.с - Трехсимвольные строки, начинающиеся с «а» и заканчивающиеся на «с» [] - диапазон [^a] - прикол в таких скобках с "^" все что угодно только не "a" [^0-9] [^[:alnun:]] [bcf]at - bat, cat или fat [a-d]at - aat, bat, cat, dat, но не Aat, Bat и т. д. [A-D]at - Aat, Bat, Cat и Dat, но не aat, bat и т. д. 1[3-5]7 - 137,147 и 157 [0-9] [[:digit:]] \d \D [a-z] [A-Z] [a-zA-Z0-9] [[:alnun:]] \w \W [[:space:]] \s \S [A-Z] - большие буквы [0-9] - цифры [a-z] - мелкие буквы [A-Za-z] www\.[a-z]*\.com d{n,m} - квантификатор {} - последовательность touch {6,7,8}.txt - последовательно создаст файлы 6.txt, 7.txt, 8.txt grep -E '[0-9]{1,3}' \tHello - Символ табуляции, предшествующий слову hello \[tT][xX][Tt] - .txt, .TXT, .TxT или другие сочетания на основе изменения регистра \n - новая строка \r - символ возврата Мата символ * Некоторые мета символы сами по себе не соответствуют ничему, но изменяют значение предыдущего символа. Один из таких символов, это * (звездочка), который используется для сопоставления нулевому или большему числу повторений предшествующего символа. Заметьте, это значит, что * имеет другое значение в регулярках, нежели в глоббинге. Вот несколько примеров, и обратите особое внимание на те случаи где сопоставление регулярных выражений отличается от glob-подстановок: ab*c совпадает с «abbbbc», но не с «abqc» (в случае glob-подстановки, обе строчки будут удовлетворять шаблону. Вы уже поняли почему?) ab*c совпадает с «abc», но не с «abbqbbc» (опять же, при glob-подстановке, шаблон сопоставим с обоими строчками) ab*c совпадает с «ac», но не с «cba» (в случае глоббинга, ни «ac», ни «cba» не удовлетворяют шаблону) b[cq]*e совпадает с «bqe» и с «be» (glob-подстановке удовлетворяет «bqe», но не «be») b[cq]*e совпадает с «bccqqe», но не с «bccc» (при глоббинге шаблон точно так же совпадет с первым, но не со вторым) b[cq]*e совпадает с «bqqcce», но не с «cqe» (так же и при glob-подстановке) b[cq]*e удовлетворяет «bbbeee» (но не в случае глоббинга) .* сопоставим с любой строкой (glob-подстановке удовлетворяют только строки начинающиеся с ".") foo.* совпадет с любой подстрокой начинающийся с «foo» (в случае glob-подстановки этот шаблон будет совпадать со строками, начинающимися с четырех символов «foo.») Итак, повторим для закрепления: строчка «ac» подходит под регулярное выражение «ab*c» потому, что звездочка также позволяет повторение предшествующего выражения (b) ноль раз. И опять, ценно отметить для себя, что мета символ * в регулярках интерпретируется совершенно иначе, нежели символ * в glob-подстановках. Начало и конец строки Последние мета символы, что мы детально рассмотрим, это ^ и $, которые используются для сопоставления началу и концу строки, соответственно. Воспользовавшись ^ в начале вашего regex, вы «прикрепите» ваш шаблон к началу строки. В следующем примере, мы используем регулярное выражение ^#, которое удовлетворяет любой строке начинающийся с символа #: $ grep ^# /etc/fstab # /etc/fstab: static file system information. Полно строчные регулярки ^ и $ можно комбинировать, для сопоставлений со всей строкой целиком. Например, нижеследующая регулярка будет соответствовать строкам начинающимся с символа #, а заканчивающимся символом ".", при произвольном количестве символов между ними: $ grep '^#.*\.$' /etc/fstab # /etc/fstab: static file system information. В примере выше мы заключили наше регулярное выражение в одиночные кавычки, чтобы предотвратить интерпретирование символа $ командной оболочкой. Без одиночных кавычек $ исчез бы из нашей регулярки еще даже до того, как grep мог его увидеть.
8.1 grep
!!! Используйте grep -E тогда можно будет использовать нормально регулярные выражения grep "что" "Где" - искать что в файле grep -i "что" "Где" - искать что во всех файла и каталогах игнорируя регистр grep -E "что" "Где" - искать что в файле, использовать нормально регулярные выражения grep -Er "что" * - искать что во всех файлах и каталогах grep -Eri "что" "Где" - искать что во всех файла и каталогах игнорируя регистр grep -Eriv "что" "Где" - показать все файлы где нет что grep -E "[192]+\.[0-9]+\.[0-9]+\.[0-9]" ifconfig | grep -E "[192]+\.[0-9]+\.[0-9]+\.[0-9]" ip a s | grep -E "inet [192]+\.[168]" ip a s | grep -E "[192]+\.[0-9]+\.[0-9]+\.[0-9]" ifconfig | grep -E "[192]+\.[0-9]+\.[0-9]+\.[0-9]" ip a s | grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" ifconfig | grep -E "(^|[[:space:]])[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}($|[[:space:]])" grep -E "[A-Za-z\.]@[A-Za-z]" x.txt grep -i linux ./* - искать linux во всех файла и каталогах игнорируя регистр grep -i linux * - искать linux во всех файла и каталогах игнорируя регистр grep francois myfile.txt - показывает строки, содержащие слово francois из файла myfile.txt grep 404 /var/log/httpd/access_log - показывает строки, содержащие число 404 из /var/log/httpd/access_log grep -Rl Virtual Host /etc/httpd/conf* - показывает строки Virtual Host grep -v 200 /var/log/httpd/access_log* - отображает строки, не содержащие число 200 grep [0-9] /var/log/messages - отобрать и вывести строки содержащие цифровые символы из файла /var/log/messages grep ^Aug /var/log/messages - отобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages grep Aug /var/log/messages - отобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages grep Aug -R /var/log/* - отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже dmesg | less - показать все устройства переправив вывод в less dmesg | grep -i pci - команда выводит список всех устройств PCI dmesg | grep -i isa - команда выводит список всех устройств ISA dmesg | grep -i memory - показать память dmesg | grep -i scsi - команда выводит список всех устройств scsi dmesg | grep -i usb - команда выводит список всех устройств usb dmesg | grep -i tty - консоль\терминал\ввод dmesg | grep -i cpu - процессор ps auwx | grep init - показывает строки init из выхода ps ps auwx | grep "\[*\]" - показывает команды, заключенные в скобки dmesg | grep "[ ]ata\|^ata" - показывает информацию об устройстве ядра ata getsebool -a | grep ssh - показать правила ssh getsebool -a | grep httpd - показать правила httpd tcpdump -i eth0 -s 0 -A port 80 | grep GET - (-s 0 весь пакет, -A для ASCII) tcpdump |grep -v ssh - поиск пакетов исключая пакеты ssh ls -l /dev | grep -E 'sd|hd' - показать все где есть символ sd или hd
9. Пере направление ввода и вывода \ stdout \ stdin \ stderr \ Pipe
Пере направление потока ввода/вывода Pipe, пайпы, пере направление конвейер - (пайп) - (shift)+(обратная косая черта) = | | - пайп пере направление вывода ; - пайп пере направление вывода () - скобки служат для группирования команд & - говорит о том что команда выполнится в фоне ls /etc | grep abc - смотрим содержимое каталога etc, перенаправляем вывод в grep и получаем файлы в которых есть символ abc cd /etc ; cat passwd - перейти в etc и выполнить cat passwd (sleep 30; echo tttt)& - все что в скобки отправляем в фоновый режим и через 30 сек выводим tttt ps > myfile перенаправит вывод в myfile.txt ( уничтожит текущие содержание файла) ps | less перенаправит вывод в просмотрщик(пейджер) less ps >> myfil.txt если файл есть то допишет в конец файла < - взять входные данные из следующего фала fromdos < from.txt > unix.txt - из fromdos возьмет данные из from.txt и запишет в unix.txt :> filename.txt - дятел, создать пустой файл filename.txt > filename.txt - создать пустой файл filename.txt echo 123 > file.txt - записать 123 в файл file.txt (важно файл будет перезаписан и будет 123) file.txt < echo 123 - записать 123 в файл file.txt (важно файл будет перезаписан и будет 123) echo 222 >> file.txt - дописать в конец файла file.txt 222 file.txt << echo 222 -дописать в конец файла file.txt 222 2> - stderr - ошибки, информация 1> - stdout - вывод (экран) 0> - stdin - ввод (клавиатура) &> - stderr and stdout - ошибки и вывод echo $? Пример с ping: ------------- ip=1.1.1.1 ping -c1 -w1 $ip >/dev/null 2>&1 && echo OK ------------- grep user /etc/* 2> /dev/null - ищем слово user в каталоге /etc/ , поток ошибок перенаправляем в /dev/null grep user /etc/* > good.txt 2> bad.txt - ищем слово user в каталоге /etc/ , поток без ошибок запишем good.txt, поток ошибок перенаправляем в bad.txt grep user /etc/* > good.txt 2> bad.txt - ищем слово user в каталоге /etc/ , поток без ошибок запишем good.txt, поток ошибок перенаправляем в bad.txt grep user /etc/* &> result.txt - ищем слово user в каталоге /etc/ , поток вывода и ошибок запишем result.txt ls -laR / > good.txt 2> bad.txt - показываем содержимое каталога / , поток без ошибок запишем good.txt, поток ошибок перенаправляем в bad.txt ls -laR / &> result.txt - показываем содержимое каталога / , поток вывода и ошибок запишем result.txt
10. Архивирование \ Сжатие
tar cf куда_ИМЯ_будущего_архива.tar что_архивируем tar cvf name.tar myfolder c - create v - verbose - показывать что делает tar f - file ( параметр f всегда должен быть последним ) tar tf my.tar - проверить архив t - test f- file tar xvf my.tar - распаковать содержимое в текущем каталоге x - extract v - vrbose f - file gzip / bzip2 / xz - команды для компрессии файла gzip my.tar - запаковать файл my.tar (файл уменьшится, добавится расширение gz) gzip -9 file1 - поместить файл file1 в архив gzip с максимальной степенью сжатия gunzip my.tar.gz - распаковать файл my.tar.gz bzip2 my.tar - запаковать файл my.tar (файл уменьшится, добавится расширение bz2) bunzip2 my.tar.bz2 - распаковать файл my.tar.bz2 xz my.tar - запаковать файл my.tar (файл уменьшится, добавится расширение xz) unxz my.tar.xz - распаковать файл my.tar.xz tar cvzf mygzip.tar.gz folder1 - создать архив каталога folder1 использовать сжатие gzip tar cvzf mygzip.gz folder1 - создать архив каталога folder1 использовать сжатие gzip хорошим тоном считается писать расширение так tar.gz c - create v - verbose z - сжатие gz f - file (имя файла) tar cvjf myfile.tar.bz2 folder1 - создать архив каталога folder1 использовать сжатие bz2 tar cjf myfile.tar.bz2 folder1 - создать архив каталога folder1 использовать сжатие bz2 c - create v - verbose j - сжатие bz2 f - file (имя файла) tar cvJf myfile.tar.bz2 folder1 - создать архив каталога folder1 использовать сжатие xz tar cJf myfile.tar.bz2 folder1 - создать архив каталога folder1 использовать сжатие xz c - create v - verbose J - сжатие xz f - file (имя файла) tar cvzpf /home/Backup-etc`date +%y_%m_%d`.tgz /etc 2>/home/error.log - создание архива каталога с временной меткой tar -cvf archive.tar file1 file2 dir1 - создать tar архив archive.tar, упаковав в него файлы file1, file2 и директорию dir1 tar -cvf archive.tar file - упаковать в tar-архив archive.tar, файл file tar -cvzf archive.tar.gz dir1 - создать tar архив и сжать его с помощью программы gzip tar -cvjf archive.tar.bz2 dir1 - создать архив и сжать его с помощью bzip2 ( ключ -j работает не во всех *nix системах ) tar -tf archive.tar - вывести содержимое tar архива tar tfv viruses-2010-05-18.tar.bz2 1>zxcvirus.txt - просмотр архива и запись в файл описания tar -xvzf archive.tar.gz - разжать tar архив gz и распаковать его tar -xvjf archive.tar.bz2 - разжать архив bz и распаковать его ( ключ -j работает не во всех *nix системах ) tar -xvf archive.tar - распаковать tar архив в текущей директории ( в принципе указывать метод сжатия не обязательно, tar сам разберется) tar -xvf archive.tar -C /tmp - распаковать архив в /tmp rar rar a file1.rar file1 file2 dir1 - создать rar архив file1.rar, архивировать файлы: file1, file2 и директорию: dir1 rar a file1.rar test_file - упаковать в rar архив file1.rar файл test_file rar x file.rar - разархивировать rar архив file.rar unrar x file1.rar - распаковать rar-архив zip zip file1.zip file1 - создать сжатый zip-архив zip -r file1.zip file1 file2 dir1 - запаковать в архив несколько файлов и/или директорий unzip file1.zip - разжать и распаковать zip-архив
11. Процессы \ память \ логи
top / htop У утилиты top есть параметры, которые облегают жизнь, их мы набираем в top’e когда он запущен: u — и имя пользователя, например u mysql покажет процессы запущенные от пользователя mysql o — используем для сортировки, возможные параметры — pri, size, res, cpu, time, threads m — переключение между режимами отображения нагрузки и ввода-вывода k — завершить процесс, ввод pid процесса r — изменить приоритет процесса, вводим pid процесса n — отображать статистику по определённому процесс a — показывает абсолютные запущенных процессов top -n 3 - запускает top на 3 сек SHIFT+P - отфильтровать по потреблению процессора SHIFT+M -отфильтровать по потреблению памяти q - выход free - показать количество памяти в байтах free -h - показать количество памяти для людей ps - процессы у текущего пользователя u - user a - all x - execute ps -u user - показать процессы у пользователя ps -aux - самая популярная команда /var/log - в этом каталог сохраняются все логи dmesg - лог ядра linux, хранится в оперативной памяти
lsof
lsof - показывает информацию от откртых сокетах, файлах и сетевых соединениях. lsof -i -n - показывает открытые интернет-соединения lsof -i -n |grep ESTABLISHED - показывает открытые, и установленные сетевые соединения lsof -i -n | grep -i established lsof -i -n | grep -i list
11.2 Маленький бенчмарк
wget -qO- bench.sh | bash
12. Варианты редактирования файлов
https://b14esh.com/category/nix/vim vi - мощный редактор vim - мощный редактор --------------------- :e **/filename.c редактировать файл (с поиском по имени) :w [fname] записать изменения :wa сохранить изменения во всех файлах :q выйти из редактора :q! выйти из редактора, не сохраняя изменения hjkl перемещение в разные стороны i режим вставки I добавление в начало строки a режим добавления A добавление в конец строки o добавить строку сразу за текущей O добавить строку перед текущей R писать поверх имеющегося текста u, :u[ndo] отмена предыдущего действия (undo) CTR-R, :red[o] отмена отмены предыдущего действия (redo) dd вырезать (удалить) строку cc удалить и начать редактирование yy копировать строку p вставить из буфера обменаd удалить n+1 строку y скопировать n+1 строку ESC перейти в режим просмотра DEL удалить следующий символ : перейти на строку #n % перейти к парной скобке :color выбор цветовой схемы. цветовые схемы: /usr/local/share/vim/vim72/colors/*.vim :pwd текущий каталог :cd [path] перейти в другой каталог :!команда выполнить команду - man, git, и так далее стрелочками вверх и вниз можно авто дополнять команды и искать по истории / поиск, кнопка n далее : перейти на строку #n v + hjkl выделение текста SHIFT + v выделить строку CTRL + v выделение прямоугольника y копировать d удалить p вставить u к нижнему регистру Shift+U к верхнему регистру 172,200d удалить с 172 строки по 200 1,10d удалить с 1 строки по 10 --------------------- pico - простой редактор nano - простой редактор ^ - имеется ввиду Control Ctrl+W - поиск Ctrl+K - вырезать строку Cctrl+U - вставить строку Ctrl+X - выход
13. типы аккаунтов и виды файлов (ubuntu)
standart - обычный пользователь administrator - имеет привилегии sudo root - встроенная учетная запись /home - каталог пользователей /home/vasya - каталог пользователя vasya /root - каталог пользователя root /etc/passwd - файл с параметрами настроек пользователей /etc/group - файл групп /etc/shadow - файл с паролямиlinux пароликак взаимодействуют три файла — passwd, groups и shadow. Файл passwd каждого пользователя содержит строку, построенную по следующему образцу: # Строка в /etc/passwd user_name:x:1000:1000:user_info user_name:/home/user_name:/bin/bash Здесь user_name — это логин; 1000 — идентификационный номер пользователя; 1000 — идентификационный номер основной группы; user_info — полное имя (для электронной переписки, новостей и т. д.); /home/user_name — домашний каталог пользователя; /bin/bash — используемая им оболочка. Идентификатор группы — это уникальный номер, важный для управления правами доступа к файлам. Соответствующая строка в /etc/shadow с информацией о пароле выглядит следующим образом: # Строка в /etc/shadow user_name:$6$9dk0$...:13479:0:99999:7::: имя_пользователя:зашифрованный_пароль:дата_создания_пароля:кол-во_дней_для_смены_пароля:когда_нужно_сменить_пароль:через_сколько_дней_сменить_пароль:когда_пароль_будет_просрочен: Последовательность символов после user_name: — это зашифрованный пароль. Если не задать эту последовательность, то в систему можно будет входить, не указывая пароль. Если определить вместо нее символ * или !, то вход в систему будет запрещен. Номер GID из /etc/passwd должен соответствовать группе из /etc/group. Во многих дистрибутивах каждому обычному пользователю соответствует одноименная группа: # Строка в /etc/group user_name:x:1000: sudo:x:27:user1,user2,user3 whoami - посмотреть под какой учетной записью зашли su username - сменить пользователя id - покажет ID групп в которых состоит текущий пользователь id username - покажет ID групп в которых состоит username last - последний логин в систему, кто? who - кто сейчас логин в систему w - кто сейчас логин в систему и кто сейчас что делает
14. Пользователи и группы
sudo useradd -m user1 - создать пользователя, создать для него директорию (-m) sudo passwd user1 - установить пароль для пользователя /etc/skel/ - специальный каталог в котором лежат файлы для новых пользователей. Отсюда они копируются в каталог нового пользователя. sudo touch /etc/skel/xxx.txt - например вот так создали файл xxx.txt теперь он будет появляться у всех новых пользователей sudo userdel user1 - удалить пользователя sudo userdel -r user1 - удалить пользователя вместе с каталогом sudo groupadd prog - создать группу prog sudo groupdel prog - удалить группу prog sudo usermod -aG prog user3 - добавить пользователя user3 в группу prog sudo deluser user3 prog - удалить пользователя user3 из группу prog !!! adduser - команда добавления пользователей !!! почему то ей не пользуются
15. Права доступа и владения файлами
ls -l - покажет какие права на файл/каталог и кто владелец ls -lah - покажет какие права на файл/каталог и кто владелец ls -a - покажет какие права на файл/каталог и кто владелец ls -lh - просмотр полномочий на файлы и директории в текущей директории Основные команды для смены владельца: sudo chown user2 filename.txt - сменить владельца для файла filename.txt на user2 sudo chown -R user1 directory1 - назначить рекурсивно владельцем директории directory1 пользователя user1 sudo chgrp group1 file1 - сменить группу-владельца файла file1 на group1 sudo chgrp Также chown может сменить и владельца и группу: !!! разделителем может быть и . и : и еще что то там ... chown user1:group1 file1 - сменить владельца и группу владельца файла file1 sudo chown pi.pi x.txt - сменить владельца и группу на pi для файла x.txt В файловой системе хранится информация о владельце для. каждого файла и каталога. ls -l /usr/bin/wc - покажет ls кто является владельцем файла права на файл его группу размер. list chown user:group /var/www - смена владельца каталога www (вместо : можно использовать . точку ) (change owner) Права доступа хранятся в четырех восьмеричных цифрах, каждая из которых определяет различные права доступа. Специальная информация uid gid stiky-бит,Пользователь,Группа,Остальные ls -l - файл rw- для user чтение+запись r-- для группы user чтение r-- для остальных пользователей чтение 1 кол-во копий файла(линки) user1 пользователь user1 группа 231M размер файла May месяц создания 1 15:21 время test_21398 имя файла ls -l drwxrwxrwx 2 pi pi 4.0K May 1 11:36 folder1 lrwxrwxrwx 1 pi pi 5 May 3 11:08 myl21 -> x.txt -rw-r--r-- 1 user1 user1 231M May 1 15:21 test_21398 Типы файлов (-)файл (d)каталог (c)идентификатор (l)символьные ссылки (b)блочные устройства (p)именованные каналы (s)сокеты Численное представление: Значение | Права | Права 0 | Ничего не разрешено | --- 1 | Нельзя читать и писать, разрешено исполнять | --x 2 | Нельзя читать и исполнять, разрешено писать | -w- 3 | Нельзя читать, разрешено писать и исполнять | -wx 4 | Разрешено читать, нельзя писать и исполнять | r-- 5 | Разрешено читать и исполнять, нельзя писать | r-x 6 | Разрешено читать и писать, нельзя исполнять | rw- 7 | Разрешено все | rwx Опция | Буква| Значение (кто) | u | Пользователь (User) (кто) | g | Группа (Group) (кто) | o | Другие (Other) (кто) | a | Все (All, ``world'') (действие)| + | Добавление прав (действие)| - | Удаление прав (действие)| = | Явная установка прав (права) | r | Чтение (Read) (права) | w | Запись (Write) (права) | x | Выполнение (Execute) (права) | t |Sticky бит (права) | s | SUID или SGID chmod 777 test - изменит права на файл chmod ugo+rwx test можно так: ---------------------------- 1 = t стикибит stiky-бит 4 = s установка id пользователя 2 = S установка id группы 4 = r чтение 2 = w запись 1 = x выполнение ---------------------------- чтение + запись + выполнение 1+2+4=7 rwx chmod 700 test - пользователю дать права на все ( можно так chmod u+rwx test) ---------------------------- чтение и выполнение 4+1=5 r-x chmod 500 test - пользователю дать права на чтение и выполнение ---------------------------- чтение r-- chmod 400 test пользователю дать права на чтение ---------------------------- выполнение --x chmod 1 test пользователю дать права на выполнение ---------------------------- все права для всех rwxrwxrwx chmod 777 test ---------------------------- chmod + rwx test u - владелец user g - группа group o - остальные owner a - все выше перечисленные ---------------------------- chmod 0700 - drwx------ - Владелец может читать, записывать файлы в данный каталог, а также переходить в него. Все остальные пользователи не имеют к нему доступа chmod 0711 - drwx--x--x - Владелец обладает теми же правами. Все остальные могут открывать каталог, но не могут просматривать или изменять файлы в нем chmod go+r - drwxr--r-- chmod 0777 - drwxrwxrwx - Полный доступ chmod a=rwx - drwxrwxrwx - Полный доступ chmod 0000 - Доступ полностью закрыт chmod a-rwx - Доступ полностью закрыт chmod ббб - Открывает права на чтение и изменение файла chmod go-rw - Не позволяет никому, кроме самого владельца, просматривать, вносить изменения или удалять файл chmod 644 - Только владелец может вносить изменения в файл или удалять его, но все могут его просматривать chmod go-rwx directory1 - отобрать у группы и всех остальных все полномочия на директорию directory1. chown user1 file1 - назначить владельцем файла file1 пользователя user1 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 umask umask 0022 - обратная команда chmod 0022 значение по умолчанию umask 0066 - Создает каталоги с правами доступа drwx--x--x и файлы с правами доступа -rw------- umask 0077 - Создает каталоги с правами доступа drwx------ и файлы с правами доступа -rw------- umask 0022 - Создает каталоги с правами доступа drwxr-xr-x и файлы с правами доступа -rw-r--r-- umask 0777 - Создает каталоги с правами доступа d--------- и файлы с правами доступа ---------- ДОП: find / -perm -u+s - найти, начиная от корня, все файлы с выставленным SUID lsattr lsattr /etc/host* - отображает атрибуты /etc/host* lsattr -aR /tmp/ | less - рекурсивно отображает все атрибуты каталога /tmp Дефисы соответствуют 13 атрибутам ext2/ext3, которые могут быть установлены. Ни один из них не является отображаемым по умолчанию: а (только добавление), с (сжатый), d (без дампа), I (постоянный), j (регистрация данных), s (безопасное удаление), t (запрет слияния в конце файла), и (не удаляемый), А (без обновления atime), D (синхронные обновления каталогов), S (синхронные обновления) и Т (верхушка дерева каталогов). chattr +i whatever.iso - с помощью команды chattr вы можете изменять эти атрибуты Стикибит t Есть смысл устанавливать на каталоги. Позволяет только владельцу удалять файлы из каталога. sudo chmod o+t myfolder - добавить стикибит sudo chmod o-t myfolder - удалить стикибит sudo chmod 1777 myfolder - добавить стикибит sudo chmod 0777 myfolder - удалить стикибит
16. Сетевые команды
ifconfig - информация о сетевых устройствах ifconfig -a - покажет все сетевые интерфейсы (неактивные в том числе) ip addr show - информация о сетевых устройствах route - информация о маршрутах sudo route - информация о маршрутах ip route show - информация о маршрутах ping ya.ru - тестирование доступности хоста ya.ru ( ctrl+c прервать) ping -c 4 ya.ru google.com - тестирование доступности хоста ya.ru traceroute ya.ru - покажет через какой маршрут идет пакет до ya.ru host www.microsoft.com - покажет ip DNS и т.д. dig www.microsoft.com - покажет ip DNS и т.д. netstat — показывает активные сетевые соединения. netstat -tpnl - показать tcp port listen namber(номера портов) netstat -w 1 — количество пакетов в настоящее время. netstat -ibt — вывод сетевых интерфейсов с разбивкой по IP адресам, отображает объём трафика, количество ошибок, коллизий netstat -rn — отображает таблицу маршрутизации netstat -a - перечислить все порты netstat -at - перечислить все TCP порты netstat -au - перечислить все UDP порты netstat -l - перечислить все прослушиваемые порты (состоянии LISTEN) netstat -lt - перечислить прослушиваемые TCP порты (состоянии LISTEN) netstat -lu - перечислить прослушиваемые UDP порты (состоянии LISTEN) netstat -lx - перечислить прослушиваемые UNIX сокеты (состоянии LISTEN) netstat -s - показать статистику всех портов netstat -st - показать статистику только TCP портов netstat -su - оказать статистику только UDP портов netstat -p - отображение PID и имени процесса в выводе netstat netstat -an - ключ n отключает разрешение имён в выводе netstat -c - вывод информации netstat непрерывно (как top,htop) netstat -r - таблица маршрутизация ядра netstat -ap | grep ssh - соответствие портов и процессов (ssh) netstat -an | grep ':80' - соответствие портов и процессов (порт 80) netstat -i - показать список сетевых интерфейсов netstat -lnptux -l все открытые порты (LISTEN) -t по протоколу TCP -u по протоколу UDP -x по протоколу UNIX Socket -n без резолва IP/имён -p но с названиями процессов и PID-ами ss - информация о соединениях ss -s - общая информация о соединениях ss -l - информация об ожидающих соединений сокетах ss -lp - информация об ожидающих соединений сокетах, а также именах процессов, их использующих ss -at - информация обо всех задействованных TCP сокетах ss -au - информация обо всех задействованных UDP сокетах ss -o state established '( dport = :smtp or sport = :smtp )' - информация обо всех установленных SMTP-соединениях ss -o state established '( dport = :http or sport = :http )' - информация обо всех установленных HTTP-соединениях ss -x src /tmp/.X11-unix/* - локальные процессы, подключённые к X-серверу ss -tulpan - показать все ifconfig - проверка состояния сетевых интерфейсов ifconfig -a - покажет все сетевые интерфейсы (неактивные в том числе) ifconfig eth0 down - отключить сетевой интерфейс eth0 (команда устарела) ifocnfig eth0 up - включить сетевой интерфейс eth0 (команда устарела) ifdown eth0 - отключить сетевой интерфейс ifup eth0 - включить сетевой интерфейс ip - управление сетевыми интерфейсами (замена ifconfig) ip help - помощь по команде ip ip addr help - помощь ip route help - помощь ip tunnel help - помощь ip addr show - получение информации о всех сетевых интерфейсах ip a - получение информации о всех сетевых интерфейсах ip addr show eth0 - отобразит информацию о eth0 sudo apt install open-ssh - установка ssh sudo ewf allow 22 - разрешить порт 22 ssh name_user@name-server - подключится к серверу name-server ipcalc -bmn 192.168.1.100/27 - расчет маски под сети хост-компьютерам с помощью CIDR IP- адреса dhclient eth0 - включить DHCP на сетевом интерфейсе eth0 ethtool eth0 - вывод статистики по сетевому интерфейсу eth0 hostname - вывести имя компьютера host http://www.example.com - преобразовать домен http://www.example.org в ip-адрес и наоборот ifconfig eth0 - вывести настройки сетевой карты eth0 ifconfig eth0 promisc -переключить интерфейс eth0 в promiscuous-режим для сбора ( сниффинг ) сетевых пакетов ifup eth0 - включить сетевой интерфейс eth0 ifdown eth0 - отключить сетевой интерфейс eth0 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 - назначить IP адрес и маску сетевому интерфейсу eth0 ip link show - вывести статус связи всех сетевых интерфейсов iwconfig eth1 - вывести конфигурацию беспроводного сетевого интерфейса eth1 iwlist scan - сканирование и поиск беспроводных сетей и точек доступа mii-tool eth0 - вывести состояние связи сетевого интерфейса eth0 nslookup http://www.example.com - ресольвить ( преобразовать/разрешить ) доменное имя http://www.example.org в ip-адрес и наоборот route -n - показать локальную таблицы маршрутизации (маршруты) 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 add -net 0/0 gw IP_Gateway - назначить ip-адрес шлюза по умолчанию ( default gateway ) route del 0/0 gw IP_gateway - удалить ip-адрес шлюза по умолчанию ( default gateway ) netstat -tup - выводит листинг всех установленных соединений по протоколам TCP и UDP без разрешения имён в ip-адреса а так-же PID'ы и имена процессов, обслуживающих данные соединения netstat -tupl - вывод списка соединений по протоколам TCP и UDP без разрешения имён в ip-адреса а так-же и PID'ы и имена процессов, ожидающих соединений на сетевых портах netstat -rn - вывести таблицу маршрутизации, аналог команды route -n echo "1" > /proc/sys/net/ipv4/ip_forward - разрешить форвардинг ( пересылку ) пакетов tcpdump tcp port 80 - отлавливать и выводить весь трафик на TCP-порт 80 (обычно - HTTP) whois http://www.example.com -вывести информацию о доменном имени из базы данных whois (аналог команды host) ifconfig / route / forward / быстрая настройка сети ifconfig eth0 inet 192.168.3.13/24 route add default gw 192.168.3.13 echo nameserver 192.168.3.1 > /etc/resolv.conf
16.1 iptables
PACKET IN --->---PREROUTING---[ маршрутизация ]--->----FORWARD---->---POSTROUTING--->--- PACKET OUT - mangle | - mangle - mangle - nat (dst) | - filter - nat (src) | | | | INPUT OUTPUT - mangle - mangle - filter - nat (dst) | - filter | | `---->----[ приложение ]---->----' # 0 ##### 1 ######## 2 # 3 ###### 4 ##### #0 Опция -t задает таблицу. Если опция упущена, то по умолчанию предполагается использование таблицы filter. Если предполагается использование другой таблицы, то это требуется указать явно. #1 Mangle - обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр. Nat - эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях. Filter - здесь производится фильтрация трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили. #2 Далее, непосредственно за именем таблицы, должна стоять команда. Если спецификатора таблицы нет, то команда всегда должна стоять первой. Команда определяет действие iptables, например: вставить правило, или добавить правило в конец цепочки, или удалить правило и т.п. Список команд: -A имя-цепочки правило (добавить правило в конец цепочки; ключ --set-counters позволяет установить счётчики пакетов и байтов) -I имя-цепочки номер правило (вставить правило в цепочку перед правилом с указанным номером, нумерация с 1; ключ --set-counters позволяет установить счётчики пакетов и байтов) -R имя-цепочки номер правило (заменить; ключ --set-counters позволяет установить счётчики пакетов и байтов) -D имя-цепочки номер (удалить правило с указанным номером, нумерация с 1) -D имя-цепочки правило (удалить правило по текстуальному совпадению) -C имя-цепочки пакет (тестировать прохождение пакета; исходящий адрес, адрес назначения, протокол, интерфейс, порты задаются соответствующими ключами) -L [имя-цепочки] (показать список правил; дополнительные ключи: -v (вывести дополнительную информацию, в частности, счётчики) --exact (показывать счётчики без округления до KB, MB и т.д.) --numeric (показывать адреса и номера портов в виде чисел) --line-numbers (выводить номера правил) -F имя-цепочки (удалить все правила из цепочки) -Z имя-цепочки (обнулить счетчики) -N имя-цепочки (создать цепочку) -X имя-цепочки (удалить пустую цепочку, на которую нет ссылок) -P имя-цепочки действие (изменить действие по умолчанию: ACCEPT, DROP, QUEUE, RETURN) -E старое-имя-цепочки новое-имя-цепочки (переименовать цепочку) #3 Раздел шаблон задает критерии проверки, по которым определяется подпадает ли пакет под действие этого правила или нет. Здесь можно указать самые разные критерии - IP-адрес источника пакета или сети, сетевой интерфейс. IP-адрес места назначения, порт, протокол и т.д. Остальные параметры для фильтации можно посмотреть в справке по утилите iptables(man iptables) #4 И наконец действие указывает, какое действие должно быть выполнено при условии выполнения критериев в правиле. Здесь можно заставить ядро передать пакет в другую цепочку правил, "сбросить" пакет, выдать на источник сообщение об ошибке и т.п. Список некоторых действий: ACCEPT - пропустить пакет; просмотр таблицы завершается DROP - выбросить молча; просмотр завершается не только для текущей цепочки, но и для других таблиц REJECT - выбросить, известив отправителя (--reject-with тип-извещения) iptables -L - вывести список правил iptables -S - вывести список правил iptables -L -n -v - вывести список правил (-n не резолвить IP) (-v Отображение подробной информации) iptables -L -n -v --line-numbers - просмотр правил с номером строки iptables -L INPUT -n -v - просмотра INPUT iptables -L OUTPUT -n -v --line-numbers - просмотра OUTPUT iptables -L INPUT -n --line-numbers - просмотр правил с номером строки в INPUT iptables -L OUTPUT -n --line-numbers - просмотр правил с номером строки в OUTPUT iptables -L OUTPUT -n --line-numbers | less - просмотр правил с номером строки в OUTPUT перенаправив вывод в less iptables -L OUTPUT -n --line-numbers | grep 8.8.8.8 - просмотр правил с номером строки в OUTPUT грепаем 8.8.8.8 iptables -F INPUT - очистка таблицы filter iptables -F OUTPUT - очистка таблицы filter iptables -F FORWARD - очистка таблицы filter iptables -F - Удаление всех правил (flushing) open firewall: iptables -F iptables -X iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p tcp -m tcp --tcp-fl ags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT # Небольшая защита от DoS iptables -A INPUT -p all -m state --state RELATED,ESTABLISHED -j ACCEPT # Разрешаем уже установленные соединения iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT # Разрешаем 22 порт iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT # Разрешаем 80 порт iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT # Разрешаем некоторые ICMP-сообщения iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 11 -j ACCEPT # Разрешаем некоторые ICMP-сообщения iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 12 -j ACCEPT # Разрешаем некоторые ICMP-сообщения iptables -t nat -A PREROUTING -p tcp --dport 3389 -i eth0 -j DNAT --to 192.168.0.100 # Проброс RDP на сервер терминалов iptables -A FORWARD -i eth0 -d 192.168.0.100 -p tcp --dport 3389 -j ACCEPT # Проброс RDP на сервер терминалов iptables -P INPUT DROP forward: iptables -t nat -A POSTROUTING -o eth1_internet -j SNAT --to-source eth2_local echo "1" > /proc/sys/net/ipv4/ip_forward service iptables stop - Остановка service iptables start - Запуск service iptables restart - Перезагрузка service iptables save - Сохранить правила брандмауэра (CentOS / RHEL / Fedora Linux) iptables-save - Сохранить правила iptables-save > /root/my.active.firewall.rules - Сохранить правила (в других дистрибутивах)
17. Скачивание файлов wget
wget -r -l 10 -k http://example.org/ Скопировать весь сайт целиком wget --user=login --password=password ftp://ftp.example.org/some_file.iso - использование имени пользователя и пароля на FTP/HTTP wget --continue --recursive --level=1 http://www.vereskmed.ru/music/album_1/ - Ну вот для примера простая команда для скачивания всего первого альбома wget ftp://login:password@ftp.example.org/some_file.iso - использование имени пользователя и пароля на FTP/HTTP wget ftp://myftpserver/имя.abc wget -c ftp://myftpserver/имя.abc wget -t 20 --retry-connrefused http://mydownloadserver/имя.iso wget -p -k -E -H http://mysite.com/site.html wget -r -l 4 -p -E -k http://mysite.com
18. Установка и удаление программ APT (Debian, Ubuntu)
whereis - поможет в поиске установленных программ, пакетов whereis ssh - найти файлы ssh /etc/apt/sources.list - тут список репозиториев apt-get install --reinstall proga - переустановка программы apt-get remove --purge proga - удаление месте с конфигурациями apt-get check - проверяет состояние зависимостей в системе. apt-get -f install - Попытка привести систему в замкнутый, логичный вид apt-get dist-upgrade - модернизировать систему apt-get update - поиск обновлений apt-get autoclean - удаляет не полностью загруженные или еще не установленные пакеты apt-get clean - удаляет из папки /var/cache/apt/archives все кэшированные пакеты для освобождения места на диске apt-cache show пакет - показывает сводку на указанный пакет apt-cache search <ключевое слово> - выполняет поиск по ключевому слову в базе данных программных пакетов (нечувствителен к регистру). apt-cache stats - выводит статистику по всем установленным пакетам apt-cache depends - выводит взаимозависимости программного пакета (установленного или нет) apt-cache pkgnames - выводит список всех установленных пакетов apt-key adv --keyserver mame_server --recv-keys 12345678 - команда запросит ключ 12345678 с сервера ключей apt-key list - отображает ключи gpg, известные APT apt-config -V - выводит информацию о версиях установленных приложений APT add-apt-repository идентификатор_РРА - добавления репозитория add-apt-repository ppa:tualatrix/ppa - добавления репозитория aptitude install rar unrar p7zip-full - установка rar unrar 7zip aptitude update - обновления индексов репозиториев aptitude safe-upgrade - установки всех доступных обновлений Очистка кэшированных пакетов ---------------------------- apt-get clean find /var/cache/apt/ -name \*.deb ---------------------------- apt-get remove mpt-status убираем ошибку на виртуалке связанную с raid gpg --- gpg --keyserver wwwkeys.us.pgp.net --recv-keys ключ gpg --armor --export ключ | apt-key add - apt-get update --- dpkg ---- dpkg -l - получить список установленных пакетов dpkg -l namepacket - выводит информацию о заданном DEB файле dpkg -L namepacket - покажет все файлы пакета dpkg -i namepacket - установить пакет (-i install) dpkg -r -P namepaket - удалить пакет (-r remove -P purge) dpkg -с <файл DEB> - отображает файлы, установленные с помощью заданного DEB-файла (файл DEB должен быть указан в таком виде: путь к файлу/имя файла) dpkg -p namepacket - отображает информацию о заданном программном пакете dkpg -S namepacket - Показывает пакеты, в которых был найден файл с заданным именем. Результатом выполнения команды может быть путь к файлу или просто его имя. dpkg -x file_DEB /folder - Распаковывает файлы, содержащиеся в DEB-файле, в указанную папку. После завершения операция восстановит права доступа к указанной папке. ---- dpkg-reconfigure — программа для перенастройки установленного любого пакета ---------------- dpkg-reconfigure tzdata - изменить временную зону dpkg-reconfigure exim4-config - перенастроить пакет exim4 dpkg-reconfigure locales - настроить локали (язык) dpkg-reconfigure console-data - настройки раскладки клавиатуры dpkg-reconfigure gdm - выбор DM (display manaager) в ubuntu ---------------- cpio — конвертация пакетов rpm в формат cpio (формат cpio работает во всех linux) ---- rpm2cpio name_packet.rpm > name.cpio ----
19. Установка и удаление программ RPM (RedHat, CentOS)
whereis - поможет в поиске установленных программ, пакетов whereis ssh - найти файлы ssh ----------------------------------------- yum update - получить список обновлений yum upgrade - обновить пакеты yum -y install epel-release - добавить репозиторий epel yum provides "*bin/top" - найти пакет, который содержит файл ----------------------------------------- tail /var/log/yum.log - просмотреть лог ----------------------------------------- yum help - отображение команд и опций ----------------------------------------- yum list - список названий пакетов из репозиторий yum list available - список всех доступных пакетов yum list installed - список всех установленных пакетов yum list installed httpd - установлен ли указанный пакет yum list all - список установленных и доступных пакетов yum list kernel - список пакетов, относящихся к ядру ----------------------------------------- yum info httpd - отображение информации о пакете yum deplist httpd - список зависимостей и необходимых пакетов yum provides "*bin/top" - найти пакет, который содержит файл yum search httpd - поиск пакета по имени и описанию ----------------------------------------- yum updateinfo list security - получить информацию о доступных обновлениях безопасности ----------------------------------------- yum grouplist - вывести список групп yum groupinfo "Basic Web Server" - вывести описание и содержимое группы yum groupinstall "Basic Web Server" - установка группы пакетов «Basic Web Server» yum groupremove "Basic Web Server" - удаление группы ----------------------------------------- yum check-update - проверка на доступные обновления ----------------------------------------- yum repolist - список подключенных репозиториев yum repoinfo epel - информация об определенном репозитории yum repo-pkgs epel list - информация о пакетах в указанном репозитории yum repo-pkgs reponame install - установить все пакеты из репозитория yum repo-pkgs reponame remove - удалить пакеты установленные из репозитория ----------------------------------------- yum makecache - создать кэш yum check - проверить локальную базу rpm (поддерживаются параметры dependencies, duplicates, obsoletes, provides) yum history list - просмотр yum истории (вывод списка транзакций) yum history info 9 - просмотр информации определенной транзакции (установленные пакеты, установленные зависимости) ----------------------------------------- yum clean packages - удалить пакеты сохраненные в кэше yum clean all - удалить все пакеты и метаданные ----------------------------------------- yum update - обновить все пакеты yum update-to - обновить до определенной версии ----------------------------------------- yum localinstall httpd.rpm - установить из локальной директории yum install httpd.rpm - установить из локальной директории yum localinstall http://server/repo/httpd.rpm - установить с http ----------------------------------------- yum downgrade - откатиться к предыдущей версии пакета yum reinstall httpd - переустановка пакета (восстановление удаленных файлов) yum autoremove - удаление ненужных более пакетов ----------------------------------------- createrepo - создание локальных репозиториев (createrepo ставится отдельно) yum-cron - установка обновлений по расписанию (yum-cron устанавливается отдельно) ----------------------------------------- yum -y install epel-release - добавление репозитория EPEL ----------------------------------------- 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 | grep httpd - среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени "httpd" 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 - собрать пакет из исходных кодов
20. Bash скрипты переменные \ параметры \ запуск программ
myscript1.sh ------- #!/bin/bash echo "hellow this message this script" echo "Lets, show files this folder" ls echo "ls /etc/" ls /etc/ #echo "run xterm" #xterm & echo "Done" ------- sudo chmod u+x myscript1.sh - для того чтобы выполнить скрипт нужно дать права на исполнение +x !!! bash myscipt.sh - права то нужны, но если натравить bash то он будет выполнен script2.sh ---------- #!/bin/bash mycomputer="SUPERPC" myOS=`uname -a` echo "This script name is $0" echo "privet $1" echo "Hello $2" num1=50 num2=45 summa=$((num1+num2)) echo "$num1 + $num2 = $summa" myhost=`hostname` mygtw="8.8.8.8" ping -c 4 $myhost ping -c 4 $mygtw echo -n "This is done..." echo "Realy done" ---------- `name_comman` - передать команду - ` это скобка возле кнопки тильда ~ $0 - это зарезервированное значение имя самого файла скрипта $1 - это первый параметр $2 - это второй параметр $3...... - далее параметр bash myscript2.sh - права то нужны, но если натравить bash то он будет выполнен sudo chmod u+x myscript2.sh - для того чтобы выполнить скрипт нужно дать права на исполнение +x bash myscript2.sh vasya kolia script3.sh ---------- #!/bin/bash echo "superping $0" echo "Нужно передать параметры!!" echo "Первый параметр что пингуем ping " echo "Второй что traceroute" echo "Третий что host " echo ">>>>>>>>>>>>>>>>Первый пошол $1" ping -c 4 $1 echo ">>>>>>>>>>>>>>>>Воторй пошол $2" traceroute $2 echo ">>>>>>>>>>>>>>>>Третий пошол $3" host $3 echo ">>>>>>>>>>>>>>>>Done" ----------
21. Скрипты bash \ if \ else \ case \ for \ while
myscript4.sh ------------ #!/bin/bash if [ "$1" == "Vasya" ]; then echo "Privet $1" elif [ "$1" == "Trump" ]; then echo "Hello $1" else echo "Zadarova $1" fi x=$2 echo "Starting CASE selection......." case $x in 1) echo "This is one";; [2-9]) echo "Two-Nine";; "Petya") echo "Privet $x";; *) echo "Parammetr Unknown, sorry!" esac ------------ chmod a+x script4.sh ./myscript4.sh ./myscript4.sh Trump ./myscript4.sh Trump 3 ./myscript4.sh Trump 7777 ./myscript4.sh Trump Petya ./myscript4.sh Vasya Petya ./myscript4.sh 333333333 8888888 myscript5.sh ------------ #!/bin/bash read -p "Enter something Vasya, Trump, Petya, * : " y if [ "$y" == "Vasya" ]; then echo "Privet $y" elif [ "$y" == "Trump" ]; then echo "Hello $y" else echo "Zadarova $y" fi echo "Please enter something" echo "1, 2-9, Petya, *" read x echo "Starting CASE selection......." case $x in 1) echo "This is one";; [2-9]) echo "Two-Nine";; "Petya") echo "Privet $x";; *) echo "Parammetr Unknown, sorry!" esac ------------ chmod a+x myscript5.sh myscript6.sh ------------ #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do echo "Current counter is $COUNTER" COUNTER=$(($COUNTER+1)) # let COUNTER=COUNTER+1 # let COUNTER+=1 done for myfile in ls *.txt; do cat $myfile done for x in {1..10}; do echo "X = $x" done for (( i=1; i<=10; i++)); do echo "Nimber I = $i" done ------------ -lt - меньше chmod a+x myscript6.sh myscript7.sh ------------ summa=0 myFunction() { echo "This is text from function" echo "first parameter is: $1" echo "Second parametr is: $2" summa=$(($1+$2)) } myFunction 50 10 echo "Summa = $summa" ------------