
стрижак / Linux конспект курса
.pdfзнакомство с Linux
Смена владельца:
только пользователь root может менять владельца файла только root и владелец могут менять группу файла владельца меняем с помощью команды
chown [-R] user_name /file/name
группу меняем командой
chgrp [-R] group_name/file/name
Смена прав доступа
Для смены прав доступа используется команда chmod [-R] mode file
У этой команды есть два режима - символьный и цифровой
Символьный режим:
u - владелец, g - группа, o - все остальные +/- разрешить/запретить
r - чтение, w - запись, x - выполнение Пример:
chmod ug+w doc1.txt
устанавливает для владельца и группы право на запись в файл doc1.txt
Цифровой режим:
В цифровом режиме права задаются тремя цифрами от0 до 7 первая цифра задает права владельца вторая задает права группы третья – всех остальных
Права задаются суммированием трех чисел: 4 – чтение 2 – запись
3 – выполнение Можно представить как десятичное представление трех позиционного
двоичного числа Пример:
chmod 740 doc2.txt
Задает права rwxr----- или все права для владельца, чтение для группы и нет прав для прочих.
Университетский кластер
знакомство с Linux
Оболочка bash. Настройка, использование, разработка сценариев.
Bash - сокращения командной строки
* – ноль и более произвольных символов ? – ровно один произвольный символ [0-9] – символ из заданного диапазона [abc] – символ из списка
[^abc] – символ НЕ из списка
Bash - сокращения командной строки
Используйте клавишу TAB для завершения ввода:
>xte<tab>
>xterm
>ls doc<tab><tab> doc1.txt doc2.txt doc3.txt
>ls doc1<tab> >ls doc1.txt
Bash – расширения командной строки
Тильда ~ Указатель на домашний каталог текущего пользователя
>cat ~/.bash_profile
Может указывать на домашний каталог любого пользователя
>ls ~student2/archive
Bash – расширения командной строки
Командные расширения: $(command) или `command` подставляет вместо команды результат ее выполнения
>echo "This system's name is $(hostname)" This system's name is server1.example.com
>echo `ls`
doc1.txt doc2.txt doc3.txt
Расширение фигурных скобок {}
>ls doc{1,2,3}.txt doc1.txt doc2.txt doc3.txt
Университетский кластер
знакомство с Linux
Bash – переменные
Переменные в баше не типизированы. Задаются переменные так: variable=value Значение переменной $variable
>HI=”Hello, welcome to hell” >echo $HI
Bash – переменные окружения
Обычные переменные локальны, существуют в контексте текущего шелла Переменные окружения наследуются дочерним шеллом.
Задаются так: export variable=value
Bash – написание скриптов
Шелл скрипт это текстовый файл содержащий последовательность команд для выполнения.
Скрипты предназначены для: автоматизации частых действий написания простых приложений манипуляций с файлами и текстами
Как написать скрипт?
1)с помощью редактора vi ил любого другого создаем текстовый файл
2)первой строкой обязательно должен быть указатель на интерпритатор:
#/bin/bash
3)Не забываем комментировать, комментарии начинаются с символа #
4)После редактирования делаем скрипт выполняемым:
>chmod u+x myscript.sh
5) Запускаем скрипт:
>./myscript.sh
Bash – операторы test и if
test проверяет истинность высказывание и возвращает бинарное значение Два вида синтаксиса:
> test “$a” = “$b” >[ “$a” = “$b” ]
Часто используется для проверки файлов
[ -f /file/name ] [ -d /dir/name ]
Применяется в операторе IF
if [ -x /home/student1/bin/myscript1 ] then
/home/student1/bin/myscript1
else
echo executable file not found
fi
Университетский кластер
знакомство с Linux
Стандартный ввод/вывод и каналы.
Стандартные потоки ввода/вывода
Linux поддерживает три стандартных потока для каждой программы: Стандартный ввод ( STDIN) – по умолчанию клавиатура Стандартный вывод ( STDOUT) – по умолчанию экран терминала Стандартные ошибки ( STDERR) – то же экран терминала
Перенаправление стандартного вывода в файл
STDOUT и STDERR можно перенаправить в файл. Поддерживаются следующие операторы:
> – перенаправляет STDOUT в файл
2> – перенаправляет STDERR в файл &> – перенаправляет оба потока в файл
Содержимое файла будет переписано, но можно использовать >> для дописывания в конец.
Примеры перенаправления потоков
> find /home -name *.txt – найдет все файлы с расширением txt
>find /home -name *.txt > find.out >find /home -name *.txt 2> /dev/null
>find /home -name *.txt > find.out 2> find.err
Перенаправление вывода программе (pipe)
Пайпы (неименованные каналы межпроцессного взаимодействия) позволяют передать вывод одной программы на ввод другой.
command1 | command2
STDOUT первой команды передается на STDIN второй STDERR не передается
Используется для комбинирования функциональности разный утилит command1 | command2 | command3... итд
>ls -l /etc | less
>echo “test email” | mail -s “test” student1@server1.example.com >cat /etc/passwd | lpr
Для разветвления потоков используется команда tee command1 | tee filename | command2
Университетский кластер
знакомство с Linux
Основы работы и печать в редакторах vi и vim.
Vi – стандартный текстовый редактор для всех Unix - систем.
В редакторе есть три режима работы:
Командный режим (по умолчанию): перемещение курсора, копировать/ вставлять, удалять блоки...
Режим вставки: изменение текста.
Режим последней строки: сохранение, выход, контекстный поиск, ит.д. Esc – выход из текущего режима
EscEsc всегда возвращает в командный режим.
Vi – редактирование файлов
Для запуска редактора: vi filename
Если файл существует, он откроется для редактирования Если файл не существует, то он будет создан.
Для начала редактирования файла нажать i(с текущего символа) или a(со следующей позиции)
Для завершения редактирования нажмите Esc(переход в командный режим)
Для перехода к последней строке нажмите :
Vi – режим последней строки
:w – сохранить файл, файл должен быть доступен на запись :wq – сохранить и выйти
:w! – форсированная запись (только для владельца или root) :q! – выход без сохранения.
:<Х> – переход к строке номер Х
/word – контекстный поиск, n следующее вхождение, N – предыдущее.
Vi – командный режим, управление курсором.
При некорректных настройках терминала символы стрелок часто бывают недоступны. В командном режиме есть возможность управлять курсором символьными клавишами:
Перемещение на один символ: h, j, k, l Переход на слово: w, b
Переход на предложение: ), ( Переход на абзац: }, {
В конец текста: G
Университетский кластер
знакомство с Linux
Лабораторная работа 2
2.1 Назначение прав
Вдиректории ~/documents/workbook создайте пустой файл с именем mydoc.txt Всем пользователям выставьте право на чтение файла.
Теперь выставьте права rwxrw-r--
Вдиректории documents создайте директорию test
Уберите право на выполнение для владельца Создайте файл test1 внутри этой директории Получилось? Почему?
удалите директорию test
2.2 Написание скрипта
Всвоем домашнем каталоге создайте директорию bin
Вдиректории создайте и отредактируйте с помощью vi скрипт с именем myscript скрипт при запуске должен выводить имя хоста и дату.
запустите скрипт, проверьте как он работает.
Университетский кластер
знакомство с Linux
Подсказка:
2.1
>cd ~/documents/workbook >touch mydoc.txt
>chmod o+r mydoc.txt >chmod 764 mydoc.txt >cd ../
>mkdir test >chmod a-x test >touch test/test1
touch: creating `test/test1': Permission denied >rmdir test
2.2
>cd >mkdir bin >cd bin
>vi ./myscript
ʻiʼ
#!/bin/bash – указатель на интерпритатор echo Hostname is $HOSTNAME
echo current time is `date` <ESC>
:wq
>chmod a+x myscript >./myscript
Университетский кластер
знакомство с Linux
Изучение и управление процессами.
Что такое процесс?
Процесс это набор инструкций процессора размещенный в памяти У каждого процессора есть:
Цифровой идентификатор процесса PID
UID, GID, SELinux контекст. (обычно наследуются от пользователя, запустившего процесс)
Просмотр списка процессов
Для просмотра списка процессов используется команда ps -a – включает процессы во всех терминалах
– включает процессы не привязанные к терминалам
– указывает владельцев процессов
– вывод в виде дерева
– вывод специфических колонок таблицы
Поиск нужных процессов
ps -axu | grep вхождение pgrep -U user
pgrep -G students pidof bash
Сигналы
Сигналы – одно из фундаментальных средств межпроцессной комуникации Посылаются непосредственно процессу, минуя пользовательский интерфейс Программа назначает действия для каждого сигнала Сигналам идентифицируются по именам и номерам
Сигнал 15 TERM – сигнал по умолчанию, чистое завершение Сигнал 9 KILL – немедленное завершение
Сигнал 1 HUP – перечитать конфиги man 7 signal – подробная документация
Передача сигналов процессу
По PID: kill [sidnal] pid
По имени: killall [signal] command
По параметрам: pkill [signal] param (так же как в pgrep)
Университетский кластер
знакомство с Linux
Инициализация системы и службы.
Последовательность процесса загрузки
POST
MBR
GRUB
Ядро системы
init
inittab rc.sysinit init.d
login
Уровень загрузки
Определяется в файле /etc/inittab
#Default runlevel. The runlevels used by RHS are:
#0 - halt (Do NOT set initdefault to this)
#1 - Single user mode
#2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#3 - Full multiuser mode
#4 - unused
#5 - X11
#6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
Определяет набор загруженных/остановленных сервисов. Можно задать при загрузке.
Скрипты запуска сервисов.
Расположены в /etc/rc.d/init.d/
Служат для запуска, остановки и перезапуска сервисов.
Понимают параметры start stop restart status reload
Запуск сервисов
Обращение к ним идет через папки /etc/rc.d/rcX.d/ где Х – уровень загрузки.
lrwxrwxrwx |
1 root |
root |
13 Feb 17 |
2003 |
K60lpd -> ../init.d/lpd |
lrwxrwxrwx |
1 root |
root |
14 Feb 17 |
2003 |
K74ntpd -> ../init.d/ntpd |
lrwxrwxrwx |
1 root |
root |
13 Feb 17 |
2003 |
K85gpm -> ../init.d/gpm |
lrwxrwxrwx |
1 root |
root |
19 Feb 17 |
2003 |
K95firstboot -> ../init.d/firstboot |
lrwxrwxrwx |
1 root |
root |
15 Feb 17 |
2003 |
S05kudzu -> ../init.d/kudzu |
lrwxrwxrwx |
1 root |
root |
17 Feb 17 |
2003 |
S10network -> ../init.d/network |
lrwxrwxrwx |
1 root |
root |
16 Feb 17 |
2003 |
S12syslog -> ../init.d/syslog |
lrwxrwxrwx |
1 root |
root |
17 Feb 17 |
2003 |
S13portmap -> ../init.d/portmap |
Ссылки начинающиеся с К – остановка сервиса Ссылки начинающиеся с S – запуск сервиса
Число в имени ссылки задает порядок запуска/остановки
Университетский кластер
знакомство с Linux
Управление сервисами
Для управления сервисами можно использовать сами скрипты:
/etc/init.d/httpd start\stop\restart
Существует специальная команда service httpd restart(stop\start...)
Управление сервисами при загрузке chkconfig
Настройка сети. Сетевые клиенты.
Настройка сетевых интерфейсов
Команда ifconfig
Команды ifup/ifdown
Настройки при загрузке
/etc/sysconfig/network-scripts/ifcfg-eth0
Глобальные настройки
/etc/sysconfig/network
Сетевые клиенты - web
Firefox
Другие браузеры Консольные браузеры ( links)
wget
Сетевые клиенты - почта и месенджеры
Evolution
Thunderbird
Консольные почтовые клиенты
Gaim (AIM, MSN, ICQ, Yahoo, Jabber, Gadu-Gadu, SILC, IRC)
OpenSSH – безопасный удаленный шелл
ssh user@hostname – удаленный шелл
ssh user@hostname command– удаленное выполнение команды
scp |
– защищенное копирование по сети |
rsync |
– синхронизация на базе ssh |
OpenSSH – вход без пароля
На клиенте создаем пару ключей (открытый и закрытый)
>ssh-keygen -t rsa1
Пересылаем ключ на машину - сервер
>ssh-copy-id user@server
Университетский кластер