Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Введение в Linux (110

..pdf
Скачиваний:
8
Добавлен:
15.11.2022
Размер:
514.38 Кб
Скачать

4.emacs – редактор для программистов,

5.mcedit – часть midnight commander.

Современные редакторы (гуи):

1.Gedit,

2.Kedit,

3.Gvim,

4.Kate.

14.VI / VIM

1)Выбор и открытие файла.

vi1.txt – просто открыть,

vi 1.txt ++11 – открыть и перейти на 11 строку,

vi 1.txt 2.txt – открыть два файла подряд (после закрытия одного будет два),

vi-o 1.txt 2.txt – открыть два файла сразу.

2)Режимы.

режим команд (по умолчанию),

режим вставки,

режим выделения (визуальный режим, только VIM).

3) Перемещение (режим команд). h j k l (лево / низ / верх /право),

0 / $ – начало и конец строки, ^ – первый пробельный символ, w / b – слово вперед / назад,

e – конец слова вперед,

W / B – большое слово вперед / назад, C-F / C-B – PgUp / PgDown,

C-E / C-Y – скролл 1 строки вперед / назад, <number> G / G – переход на строку / в конец,

31

gg – переход в начало,

t<char> / f <char> – вперед до первого символа (невкл / вкл), T<char> / F<char> – назад до первого символа (невкл / вкл), % – парная скобка, () – предыдущее / следующее предложение,

{} – предыдущий / следующий абзац, ! – сказать про английский язык и набор текста, + / - – предыдущая / следующая строка,

H / M / L – верх / центр / конец экрана.

4)Изменение.

i / a – переход в режим вставки перед / после курсора, R – переход в режим замены (REPLACE),

r<char> – замена одного символа под курсором, I / A – режим ввода с начала / конца строки,

o / O – режим ввода со следующей / предыдущей строки, x / X – delete / backspace,

d<movement> – удалить нечто (dw – удалить слово, dt4 – удалить до первого символа 4),

c – то же что удалить, но с переходом в режим вставки, dd – удалить строку,

yy – скопировать строку,

p / P – вставить после / перед курсором. Если скопирована строка целиком, то после / перед строкой, где курсор,

J – объединить строки, u – Undo,

C-R – Redo,

. – повтор последней команды,

s – удалить символ и в режим вставки,

32

S – удалить строку и в режим вставки, ~ – invert-case,

Escape – выход из режима вставки / визуального в режим команд,

! перемещение – не в режиме вставки.

5) Поиск.

/<pattern> – вперед, ?<pattern> – назад,

n / N – следующий / предыдущий результат,

# / * – предыдущий / следующий идентификатор,

! Можно использовать как Movement

6)Визуальный режим.

v– выделение,

V – выделение строк,

C-v – выделение прямоугольного блока .

7)Команды.

:– начало команды, :w – сохранить файл,

:e file – редактировать файл,

:q – выход (если не сохранено – не даст), :q! – выход без лишних вопросов, :(area)s/from/to/flags – замена (типа седа), ZZ – выйти и сохранить,

ZQ – выйти и не сохранить, :retab – замена табов на пробелы,

Q – переход в ed-режим, выйти – набрать vi <Enter>,

8)Другие возможности

повторы (число + команда – повторить команду несколько раз),

регистры – используются для хранения текстов (есть спец-регистры)

33

(help reg)

“<register>y,

“<register>p,

“+ / “*,

метки ,

ma – поставить метку,

`a – перейти к метке,

'a – перейти к метке (к первому непустому символу строки),

mA, 'A – глобальные метки между файлами,

макросы,

q<name> <actions...> q – записать макрос,

@name – применить макрос,

@@ – применить последний макрос,

<number> @<name> – применить макрос много раз,

g Z (gUw, guw gcw) – глобальные команды,

буфера – несколько открытых файлов,

табы – несколько табов,

colorscheme – схемы раскраски,

vimrc – файл настроек,

плагины,

nerdcommenter – удобные комментарии,

xml – обработка xml(подсветка, валидация, форматирование, автозакрытие тегов),

MRU – последние редактировавшиеся файлы,

vimdiff – 3-way merge tool,

auto-complete (ctags).

34

15. ЯДРО

Ядро – центр любой ОС, который содержит в себе следующие компоненты:

1.Драйверы устройств.

2.Файловые системы, в том числе виртуальные.

3.Многозадачность (процессы, потоки).

4.Система управления памятью.

5.Сетевые протоколы и прочий ввод-вывод.

6.Планировщик задач.

7.Безопасность.

Различают пространство ядра и пространство пользователя (соответственно kernelspace/userspace). Процессы, выполняемые ядром, имеют больший́ приоритет и работают быстрее. Они не подвергаются дополнительным проверкам (на безопасность и ошибки). Падение пользовательского процесса приводит к завершениюпроцесса, падение ядра– костановке работы ОС.

Есть драйвер NTFS, который из-за политики Microsoft не может писать файлы, только на чтение. Есть драйвер NTFS-3g, который позволяет писать на NTFS, но из-за опасений нестабильности работает в пространстве пользователя.

Ядро – компилируемый бинарный исполняемый файл, может содержать модули ядра, т. е. компоненты, которые динамически подгружаются при необходимости.

Модулями ядра поставляются некоторые драйвера (например, Nvidia). lsmod – список загруженных модулей,

insmod – загрузить модуль, rmmod – выгрузить модуль,

modprobe – более умная утилита для работы с модулями.

Сборка осуществляется из исходников. Достается пакет с исходниками, распаковывается, выполняется конфигурация (make menuconfig), дела-

35

ется сборка и установка (make && make modules && make install && make modules_install).

Исходники ядра есть с патчами (gentoo-sources), адаптированные под данный вариант Linux; есть напрямую от Linux (vanilla-sources).

Не следует бояться собирать ядро.

16. УПРАВЛЕНИЕ ПРОЦЕССАМИ

./process – запуск процесса из текущей директории, Control-C – прерывание процесса,

Control-Z – остановка процесса, [1] stopped ./process

fg – продолжить выполнение в переднем плане, bg – продолжить выполнение в фоне.

./process & – запуск в фоне, [2] 16699

2 – номер задачи (job),

16699 – идентификатор процесса (PID). Идентификатор уникален, количество ограничено (в 32-разрядных – 2^15, в 64-разрядных – по умолчанию до 2^15, но можно увеличить до 2^22)

jobs – список всех задач.

[1]– Running ./process

[2]+ Running ./process2 fg %1

Сигналы – способ межпроцессного взаимодействия,

SIGINT (Interrupt) – прерывание процесса, происходит при нажатии Control-C, SIGSTOP – остановка процесса, происходит при нажатии Control-Z, SIGCONT – продолжить процесс, происходит при вызове fg.

36

Любая программа может обрабатывать сигналы и осуществлять собственную обработку сигнала. Например, вместо прерывания осуществлять плавное правильное завершение процесса.

kill – послать сигнал процессу,

kill <PID> – убивает процесс, по умолчанию посылается SIGTERM (Terminate),

kill %1 – убивает задание (job) номер 1,

killall java – убивает все процессы с именем java,

kill -s SIGKILL <PID> – убивает без лишних вопросов,

SIGHUP – сигнал посылается всем фоновым процессам при выходе, либо обрыве соединения. По умолчанию завершает выполнение процесса. Можно запустить nohup <команда>, и тогда после выхода или обрыва фоновый процесс останется выполняться.

kill -l – список всех доступных сигналов.

У процессов есть иерархия: 0 – это ядро, 1 – это init, главный процесс системы. У каждого процесса есть PPID (Parent PID). Процесс запускается, запускает дочерние, которые могут быть фоновыми. Чтобы дождаться окончания фонового процесса, используется команда wait, которой можно указать пид в качестве параметра.

После завершения дочерний процесс ждет, отдать код завершения родительскому процессу. Если он был не фоновым, то он сразу завершается, если был фоновым, то – после вызова wait из родительского процесса или завершения родительского процесса. Пока родительский процесс не прочитал код возврата – дочерний процесс становится «зомби» (умер, но не погребен). Зомби не занимает ресурсов, кроме пида, его можно убить следующими способами:

1.вызвать wait в родительском процессе,

2.послать SIGCHLD родительскому процессу,

37

3.завершить родительский,

4.ребут.

Пример зомби-процесса.

#include <unistd.h> #include<stdlib.h> #include <stdio.h> int main()

{

int pid;

pid = fork(); if (!pid)

{

exit(0);

}

printf(“look at zombie!”); getchar();

}

«Демон» – процесс, который запускается самой ОС, и работает в фоновом режиме без взаимодействия с пользователем.

«Форк-бомба» – специальная программа, выбирающая все пиды и тем самым не дающая сделать ничего с системой.

Пример на C++

#include <unistd.h> int main()

{

while(1)

fork();

}

38

ps – список своих процессов,

ps -a – список процессов всех пользователей,

ps -x – показывает все, которые без терминала («демоны», гуи), ps u – user-oriented,

ps -l – long BSD format,

ps --forest – дерево процессов,

top – утилита для просмотра самых нагруженных процессов, htop – то же что топ, но только намного красивее.

У каждого процесса есть приоритет (NICENESS), по умолчанию – 20. Чем меньше, тем лучше.

Любой пользователь может понизить приоритет своей задачи. ROOT может понижать и повышать любые приоритеты.

nice -n10 process – запустить процесс с приоритетом на 10 больше текущего (понизить).

renice 10 pid – сменить приоритет во время выполнения процесса.

17.ЗАГРУЗКА СИСТЕМЫ

1.Грузит MBR – маленькая программа.

2.MBR грузит ядро, которое остается в памяти на протяжении работы системы и никогда не выгружается. Ядро пишет на консоль версию.

Вдальнейшем версию можно посмотреть /proc/version.

3.Ядро обнаруживает устройства и пишет на консоль.

4.Ядро запускает /sbin/init (PID = 1). Init запущен пока работает система.

Конфиг init - /etc/inittab.

5.init грузит скрипты (монтирование, запуск приложений), которые на-

ходятся в /etc/init.d, а также в /etc/rcX.d/...

6.init запускает getty, которая выдает приглашение на консоль.

39

Загрузчики.

1.LILO (LinuxLOader). Конфиг лежит в /etc/lilo.conf. Выдает строку приглашения

boot: <TAB> – выбрать ядро, можно передать параметры Важно – при использовании LILO нужно обязательно его перезапускать при изменении ядра или его места расположения.

2.GRUB. Устанавливается – grub-install, конфиг – /boot/grub/menu.lst

Отличие – он сам понимает файловые системы и сам находит ядро

TODO – про новый GRUB

То, что обнаруживает ядро, можно получить, вызвав dmesg | less. Там всё закольцовывается, позже можно посмотреть в /var/log/messages.

18. RUNLEVEL

Runlevel – конечный автомат, управляющий init. 0 – Halt,

1s – Single user,

2 – Multiuser, no network,

3– Multiuser, text-console,

4– Multiuser, graph console,

5= 4,

6– Reboot.

В/etc/rcX.d находится то, что нужно запускать или останавливать на данном уровне.

/etc/rc3.d/[sk]<num><name>

то, что s – то надо запустить (start) то, что k – то надо прибить (kill)

Например,

/etc/rc3.d/s03networking → (symlink) → /etc/init.d/networking

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]