balaev84av

Пикабушник
498 рейтинг 8 подписчиков 0 подписок 15 постов 9 в горячем
Награды:
5 лет на Пикабу
71

Система инициализации

(Описание системы и некоторых возможных действий для начинающего линуксоида.)


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


"Система инициализАции" в UNIX и Linux - набор программ для управления формированием рабочей среды: текстовое/графическое рабочее окружение или служебный узел вычислительной сети. Традиционное имя основной программы - init ("инИт"). Её PID = 1.


Для Linux есть три основных системы инициализации (по старшинству): System V Init, Upstart, systemd - и ёще несколько менее распространённых.


Система System V Init (сокращённо Sysvinit) унаследована от UNIX пятой (V) версии. Система Upstart создана для Ubuntu Linux и была ненадолго принята также в Red Hat Enterprise Linux. Система systemd - наиболее новая, набирающая популярность, на основе идей программы launchd из операционной системы Mac OS.


Для операционной системы достаточно одной системы инициализации, но для совместимости (поддержания работоспособности старых программ) в инсталляции может быть одна основная система с элементами другой.


Рабочая среда может состоять из большого числа процессов. Систему инициализации настраивают так, чтобы запустить все необходимые процессы в нужном порядке. Предполагаемый результат называют "уровнем запуска" (runlevel) в Sysvinit и Upstart или "целью" (target) в systemd. Выключение компьютера и перезапуск операционной системы тоже считаются результатами - здесь тоже нужно соблюсти правильную последовательность действий и дать завершаемым процессам возможность сохранить свои данные.


Многие программы, формирующие рабочую среду, специально разработаны или настроены для работы в фоне, например: диспетчер электропитания acpid, диспетчер сети NetworkManager, служба точного времени ntpd, служба наблюдения за исправностью дисков smartd. В сочетании с файлами инициализации эти фоновые программы называют "дЕмонами" (daemon, "дИмон"), "службами" или "сервисами" (service, "сЁрвис"). Часто имя заканчивается на d (от daemon).


Система Sysvinit запускает и останавливает демонов в заданном пользователем/администратором порядке; Upstart - формирует "дерево" откликов на "события" (обнаружение устройства, монтирование, запуск демона - могут быть событиями, требующими реакции в виде запуска другого демона); systemd - при запуске рассчитывает "дерево" зависимостей демонов друг от друга и запускает демонов по возможности параллельно.


Кроме init в системе инициализации есть файлы настройки демонов (файлы инициализации) и управляющие программы самой системы.


Файлы инициализации - текстовые, со специальным синтаксисом (своим для каждой системы). Для Sysvinit они располагаются в каталогах /etc/rc*.d/ (вместо звёздочки - число или ничего), /etc/conf.d/ и ещё есть файл /etc/inittab; для Upstart - /etc/init/ и /etc/init.d/ и файл inittab; для systemd - /lib/systemd/, /run/systemd/ и /etc/systemd/. Какая-то часть файлов является сценариями командной оболочки. Уровень запуска или цель systemd можно воспринимать как набор файлов инициализации, и система должна их выполнить (запустив соответствующие программы). Особенно много файлов - у systemd, отчасти она сама их создаёт.


Традиционный список уровней запуска:

0 - остановка системы (завершение процессов из user space, остановка работы ядра, и, если возможно, отключение электропитания);

1 - однопользовательский режим (доступна командная строка, нет сети, обычно используется как аварийный);

2 - многопользовательский режим (доступна командная строка, нет сети);

3 - многопользовательский режим (доступна командная строка, возможна сеть);

4 - не используется;

5 - многопользовательский режим (доступны и командная строка, и GUI, возможна сеть);

6 - перезагрузка.


В разных инсталляциях уровни запуска могут быть настроены иначе. В домашней системе обычно автоматически установлен уровень или цель, соответствующий традиционному 5. В Upstart уровень 2 соответствует традиционному 5; дополнительно есть обозначения N - "предыдущий неизвестен" и S - 1 (от single user). В systemd есть цели shutdown (примерно соответствует уровню 0); basic (1); multi-user (3); graphical (5).


Обычно поставляются готовые файлы инициализации, поэтому инсталляция Linux уже предоставляет готовую рабочую среду. Нередко функциональность уровня запуска или цели оказывается немного избыточна, поэтому приходится отключать лишних демонов - просто чтобы сэкономить системные ресурсы.


Типичные действия: посмотреть список работающих демонов; запустить/остановить/перезапустить демона. Запускать демона прямой командой или останавливать его командой kill считается неправильным - есть специальные управляющие программы. Для Sysvinit это chkconfig, service и другие; для Upstart - initctl и другие; для systemd - systemctl. В инсталляциях с элементами других систем инициализации могут работать программы каждой системы. В systemd файлы инициализации имеют особые расширения (".service", ".target", ...), которые в команде указывать не обязательно; здесь они приводятся для уточнения, с чем именно команда имеет дело.


Если указаны только две команды, то первая - для Sysvinit и Upstart. Вместо имени указано слово "daemon".



Узнать, запущен ли определённый демон:


service daemon status

initctl status daemon или initctl --system status daemon

systemctl status daemon.service



Посмотреть список работающих демонов:


service --status-all

initctl list или initctl --system list

systemctl --all или systemctl list-units --all



Запустить демона:


service daemon start

start daemon или initctl start daemon

systemctl start daemon.service



Остановить демона:


service daemon stop

stop daemon или initctl stop daemon

systemctl stop daemon.service



Перезапустить демона:


service daemon restart или service daemon condrestart

restart daemon или initctl restart daemon

systemctl restart daemon.service или systemctl condrestart daemon.service



Или, если возможно, заставить демона перечитать свои настройки (это быстрее, чем полный перезапуск):


service daemon reload

reload daemon или initctl reload daemon

systemctl reload daemon.service



Если файл настройки демона - сценарий оболочки, то можно запустить в командной строке сам сценарий с аргументом start, stop или иным (изучите содержимое сценария и попробуйте догадаться).



Включить демона (автозапуск):


chkconfig daemon on

вернуть исправления (см. ниже, как отключить демона)

systemctl enable daemon.service



Проверить, отмечен ли демон как включённый:


chkconfig daemon

initctl show-config daemon и см. ниже, как отключить демона

systemctl is-enabled daemon.service



Отключить демона (никогда не запускается):


chkconfig daemon off

убрать расширение ".conf" соответствующего файла или корректно исправить содержимое

systemctl disable daemon.service



Узнать текущий уровень запуска или цель:


runlevel или who -r

systemctl list-units *target



Установить уровень запуска/цель по умолчанию:


во фрагменте id:5:initdefault файла /etc/inittab установить нужный номер

во фрагменте env DEFAULT_RUNLEVEL=2 файла /etc/init/rc-sysinit.conf установить нужный номер

systemctl set-default graphical.target или

ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target



Перейти сейчас на другой уровень запуска/цель:


init 3 или telinit 1

systemctl isolate multi-user.target



В том числе выключить компьютер:


halt, или poweroff, или "shutdown -h now"

systemctl halt или systemctl poweroff



Или перезапустить операционную систему:


reboot или "shutdown -r now"

systemctl reboot



Выбирать демонов для отключения следует очень осторожно. Ошибка может привести к неработоспособности всей рабочей среды (это обнаружится сразу или при следующем включении компьютера). Относительно безвредно - попробовать для тренировки отключить сервис печати cups, сервис сканирования saned, службу точного времени ntpd.


Программы для GUI: Services Configuration Tool (system-config-services) для Sysvinit, Boot-Up manager (bum) для Sysvinit и Upstart, systemadm для systemd. Псевдографическая ntsysv для Sysvinit.


Процесс init является корневым предком всех процессов, кроме ядерных потоков. Поэтому в задачи init дополнительно входит "усыновление" процессов-сирот (orphan process) и их завершение.

Показать полностью
8

Жадная The Battle for Wesnoth

Изредка я по-любительски играю в "The Battle for Wesnoth" против AI.


Ещё год назад на компьютере была установлена Ubuntu 14.04, где версия игры - 1.10.с-чем-то. Недавно попробовал поиграть в версию 1.12.5 из Ubuntu 16.04, и выявилась проблема.


Старая игра "съедала" всего несколько процентов процессорного времени (при минимуме графических эффектов в настройках). Новая - примерно по 20-70% на каждом процессорном потоке (которые Hyper-Threading). Это происходит во время собственно игры на карте или в редакторе карт.


Я почитал официальный форум и понял примерно так:

1) проблема не только у меня, и довольно давно;

2) разработчики сами не очень хорошо понимают, в чём там дело (и, возможно, это не их вина, а проблемы сторонних библиотек или ещё чего);

3) сейчас игру активно переделывают под новые версии библиотек с надеждой, что проблема исчезнет сама собой.


Есть ещё ppa-репозиторий с версией 1.12.6, но разницы здесь никакой.


Я попытался ограничить жадность игры программой cpulimit. Просто перебирал опции как получится. В итоге получилось, что игра ведёт себя нормально, если думает, что процессорное ядро (или поток) всего одно. То есть запускать игру в Ubuntu примерно так:


cpulimit --cpu=1 -- /usr/games/wesnoth


Если не хотите устанавливать cpulimit, то наверняка найдётся taskset:


taskset -c 0 wesnoth


Насчёт Windows не могу точно сказать, но вроде бы в Диспетчере задач в контекстном меню процесса есть пункт привязки к процессору.

Показать полностью
29

Мини-шпаргалка по Emacs

(Содержит самый минимум сведений на тот случай, если дедушка Столлман пустит вас за личный ноутбук.)


Emacs ("Имэкс" или "емАкс") - редактор на основе интерпретатора для языка программирования Lisp, поэтому содержит много функций. Его (Emacs) долго переделывали, совмещая интерпретатор и редактор предыдущего поколения, поэтому сам Emacs может показаться чрезмерно усложнённым.


Есть версии (разновидности) Emacs для командной строки (emacs-nox) и для графического интерфейса. Обычное имя команды - emacs (или другая версия - xemacs); принудительный запуск именно версии для командной строки - опция -nw.


Пример того, как может выглядеть Emacs при запуске в командной строке: это буфер под названием "GNU Emacs"; по сути - гипертекст формата info.


File Edit Options Buffers Tools Help

Welcome to GNU Emacs, one component of the GNU/Linux operating system.


Get help C-h (Hold down CTRL and press h)

Emacs manual C-h r Browse manuals C-h i

Emacs tutorial C-h t Undo changes C-x u

Buy manuals C-h RET Exit Emacs C-x C-c

Activate menubar M-`

(`C-' means use the CTRL key. `M-' means use the Meta (or Alt) key.

If you have no Meta key, you may instead type ESC followed by the character.)

Useful tasks:

Visit New File Open Home Directory

Customize Startup Open *scratch* buffer


GNU Emacs 24.5.1 (x86_64-pc-linux-gnu, GTK+ Version 3.18.9)

of 2016-04-17 on lgw01-04, modified by Debian

Copyright (C) 2015 Free Software Foundation, Inc.


GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for full details.

Emacs is Free Software--Free as in Freedom--so you can redistribute copies

of Emacs and modify it; type C-h C-c to see the conditions.

Type C-h C-o for information on getting the latest version.


-UUU:%%--F1 *GNU Emacs* All L1 (Fundamental) ---------------------------

For information about GNU Emacs and the GNU system, type C-h C-a.


Здесь есть info-гиперссылки, их альтернативные сочетания клавиш и пояснения: как расшифровать сочетания. Заметьте: C-h t означает "Ctrl H и потом T (без Ctrl)"; C-x C-c (выход, то есть завершение Emacs и возврат в оболочку) означает "Ctrl X и потом Ctrl C". Без Shift. Клавишу Ctrl ещё обозначают символом ^ или кратко - C. RET означает Return, то есть клавишу Enter; ESC - Escape. После выхода экран может остаться не очищенным. При переключении на кириллицу сочетания могут не действовать.


Экран программы Emacs называют фреймом (или кадром, frame); фрейм здесь - это аналог окна в GUI. Верхняя строка фрейма (File Edit Options и прочее) - "строка меню", опять же как в окнах в GUI. Символ ` в подсказке (в буфере "GNU Emacs" выше) для активации строки меню - это обратная кавычка, на одной клавише с ~ и Ё. Клавишу Alt, которая ещё называется Meta, ещё обозначают просто M. Соответственно M-` означает сочетание Alt + `.


После активации строки меню фрейм будет поделён на два буфера: внизу добавятся заголовки меню (показано частично):


Possible completions are:

b==>Buffers e==>Edit f==>File

h==>Help o==>Options t==>Tools


Внизу, в строке минибуфера появится пункт "по умолчанию", то есть программа выбирает сама:


Menu bar (up/down to change, PgUp to menu): f==>File


Если нажать Enter, появятся пункты меню из группы File (показано частично):


q==>Quit C-x C-c r==>Recover Crashed Session

s==>Save As... C-x C-w v==>Visit New File... C-x C-f


Снова пункт "по умолчанию":


Menu bar (up/down to change, PgUp to menu): v==>Visit New File... C-x C-f


Если нажать Enter, то нужно будет ввести имя нового файла. Сейчас, для освоения, следует стрелками Вверх и/или Вниз (up/down в подсказке) либо нажатием клавиши-буквы, указанной перед стрелкой (==>) выбрать пункт выхода:


q==>Quit C-x C-c


И нажать Enter для активации.


Внимательно прочитайте подсказку к меню в нижнем буфере. Там, например, есть: "Type C-g or ESC ESC ESC to cancel". То есть "набрать C-g или ESC ESC ESC, чтобы прервать [выполнение какой-то внутренней команды Emacs, в том числе работу с меню]".


Нижняя строка ("окно минибуфера") - нечто вроде собственной командной строки Emacs. Выше - "строка режима" (или "строка состояния") с именем текущего (показанного сейчас) буфера, номером линии с курсором и другой информацией.


Открыть файл (создать буфер, имя - в строке минибуфера), в том числе ещё не существующий, - C-x C-f. "Вставить" (добавить) содержимое другого файла в текущий буфер (в "точку вставки", то есть в позицию курсора) - C-x i. Сохранить файл (записать текущий буфер) под тем же именем - C-x C-s. Сохранить под другим именем (и продолжить правку уже переименованного файла, оставив старый) - C-x C-w. Сочетания для закрытия файла нет, но можно через меню: M-` f c. Или нижеуказанной командой уничтожения буфера.


Переместить курсор на один шаг (символ, линию): соответствующая курсорная стрелка; или C-b, C-f, C-p, C-n. Поместить курсор в начало выражения - Home или C-a; в конец - End или C-e. M-B перемещает курсор на одно слово влево; M-F - вправо.


Отменить недавнюю правку - C-x u или C-/. Вернуть первоначальное содержимое файла, пока возможно (не выходя из Emacs), - M-x revert-buffer. Выражение revert-buffer надо набрать вместе с дефисом и завершить клавишей Enter. Это имя функции на языке Lisp в Emacs; здесь сочетание M-x - нечто вроде активации приглашения внутренней командной строки (для интерпретатора Lisp). Возможно автодополнение по Tab, как в Bash.


Искать фрагмент текста по шаблону - C-s (вперёд, к концу файла) и C-r (назад, к началу). Заменить фрагменты по шаблону (вперёд) - M-%. В минибуфере нужно будет ввести по порядку: шаблон поиска; шаблон замены; уточнение, как именно заменять (y - заменить, n - пропустить, ! - заменить все найденные шаблоны поиска). В уточнении можно набрать знак вопроса, и появится подсказка.


Начать выделение фрагмента текста с позиции курсора - C-SPC (то есть Ctrl Пробел) или C-@. Потом перемещайте курсор любым способом, наблюдайте подсветку выделения. Ещё раз C-SPC - выделение исчезнет и начнётся заново. Нажать C-SPC дважды - убрать выделение (текст останется на месте). Заметьте сообщения в строке минибуфера.


Вырезать выделенный фрагмент - C-w (в отдельный внутренний буфер). Скопировать выделенный фрагмент - M-w. Вставить готовый фрагмент - C-y. После выхода из почти любого редактора внутренний буфер с фрагментами исчезает.


Без выделения: сочетание C-u вырежет текст перед курсором до начала строки; C-k вырежет текст под и за курсором до конца строки; c-w - вырежет слово перед курсором; M-d - после курсора.


Выбрать файл-буфер (переключиться на его просмотр или редактирование) - C-x b. Показать список всех буферов - C-x C-b. Уничтожить буфер (закрыть файл) - C-x k. Имя буфера надо набрать или выбрать стрелками Вверх и/или Вниз, потом нажать Enter; или просто Enter для предлагаемого по умолчанию (default) варианта.


В Emacs возможно выполнять базовые действия с файлами и каталогами; это называется Dired. Список-содержимое выбранного каталога помещается в отдельный буфер.


Вызов функциональности Dired - C-x d или M-x dired. В минибуфере появится приглашение ввести имя каталога. Строка меню пополнится.


Перед действиями с файлами или каталогами понадобится сначала навести курсор; Emacs старается установить курсор в начало имени.


Открыть буфер для правки файла - f или Enter (то же, что C-x C-f в обычном режиме); если это каталог (в том числе ссылки в виде одной или двух точек), то будет показано его содержимое в режиме Dired (подобно последовательности команд cd и ls в командной оболочке). Открыть буфер для файла в режиме просмотра - v.


Создать каталог - +.


Для действий с несколькими файлами за раз, их, после наведения курсора, метят - * m. В начале строки появится метка-звёздочка. Снять метку - * u. Пометить несколько файлов подряд, начиная с курсорной строки, возможно, заранее набрав число (например, 5) - 5 * m. Число возможно задать и для снятия метки.


Снять все метки - * !. Пометить все каталоги (кроме . и ..) - * /. Обратить список меток (то есть помеченные файлы потеряют метки, непомеченные - получат) - * t.


Переименовать файл (или переместить помеченные файлы и/или каталоги) со вводом нового имени (или каталога назначения) в минибуфере - R.


Аналогично предыдущей операции, но выполнить копирование - C.


Удалить помеченные файлы - D. Или действовать как указано ниже.


Пометить файл именно для удаления (не такие метки, как вышеуказанные) - d; снять отметку - u; удалить помеченные для удаления файлы - x (потребуется подтвердить или отказаться в минибуфере).


Перечитать содержимое буфера Dired (если есть основания думать, будто файлы и/или каталоги неконтролируемо изменены) - g.


Учебник (Emacs tutorial C-h t) переведён на русский язык. Большая часть документации (Emacs manual C-h r) - на английском языке, info-гипертекст. Читать Emacs manual отдельно: info emacs. В Интернете есть всё ещё актуальный перевод на русский язык руководства Emacs: версия редактора "20.7", 1999 год; переводчики Иванова, Отт, Тихонов.

Показать полностью
41

Минимум по vi или Vim (заметка-отрывок)

(Это ещё один отрывок из заметок для совсем начинающего пользователя. Возможно, кому-то пригодится как материал для инструкций по работе. Отрывок содержит самый минимум сведений на случай, если из редакторов - только vi или Vim. Я сам не знаток и редко пользуюсь.)


Редактор vi ("ви-ай" или "ви") считают необходимым компонентом почти любой системы UNIX или Linux. В современных системах обычно есть улучшенная версия - Vim ("вим", vi improved). Команда - vi или vim. Версия для графического интерфейса - GVim (команда - gvim). Далее любая из этих версий названа vi, если нет оговорок. Команда только для показа (чтения) файла: view или vi -R.


Сам vi (от visual editor) является визуальным режимом строкового редактора ex ("экс"). Когда ещё не было (больше 40 лет назад) дисплеев, компьютеры выводили строки на печатающие терминалы. Оператор давал редактору команды правки строк, компьютер печатал на бумаге только исправленные строки. "Визуальность" редактора vi здесь означает возможность показа экранной страницы и мгновенного (насколько возможно) отображения правок, то есть более наглядный способ работы.


Пустой файл вначале показан в vi как состоящий из тильд (в начале каждой линии, но даже пустых строк в файле нет). После правки и сохранения файла этих тильд в нём не будет. Vim дополнительно показывает небольшой справочный текст, исчезающий после начала правки. Нижняя линия показывает название режима, позицию курсора и другие сведения. Если не показывает, попробуйте сочетание ^g (то есть Ctrl G).


В описании команд vi важен регистр символов. Если написано w, то нужно просто нажимать клавишу W; если написано Q, то - Shift Q.


Работа в vi во многом состоит из переключения режимов. Есть старый редактор ex (одноимённая команда в оболочке). Перейти из ex в vi: vi или visual. И Enter. Вернуться из vi в ex - Q. Командный режим (command mode) - это клавиатурные внутренние команды vi, наподобие внутренних команд less. Режим вставки (insert mode) - это набор текста.


Командный режим устанавливается автоматически при запуске vi. Команда вставить (набирать) текст - i (от insert). То есть просто нажать клавишу I. И теперь vi перешёл в режим вставки, то есть следующее нажатие i уже вставит символ i в буфер, выведет на экран; уже не команда, а набор текста. Вернуться в командный режим - Escape. На всякий случай, можно нажать дважды; редактор может подтверждающе пискнуть динамиком системного блока. Удалить (в командном режиме) символ под курсором - x.


Примерно так и работают в vi: набирают текст в режиме вставки, переходят в командный режим и правят текст, возвращаются в режим вставки и снова (не обращая внимания на опечатки) набирают текст.


Перейти в режим вставки - i (под курсором) или a (справа от курсора); Enter или o (строчная буква "O", новая строка ниже); или O (заглавная буква "O", новая строка выше). Для обучения наберите любой текст в несколько строк или откройте готовый test.txt. Потом вернитесь в командный режим. Своевременно переключайтесь между латиницей и кириллицей; будьте осторожны с клавишей Caps Lock.


Переместить курсор на один символ или линию: h, j, k или l (строчная "L"). Или курсорные стрелки, соответственно: Влево, Вниз, Вверх или Вправо. В начало строки - 0 (ноль). В конец строки - $. Вправо на одно слово - w или W; влево - b или B. Для команды-строчной буквы - словами считаются также пробелы и знаки препинания; для заглавной - только обычные слова. Экранная страница вперёд - ^f (то есть Ctrl F), назад - ^b.


Перед многими командами возможно набрать число для быстрого автоматического повтора. Например: переместить курсор на семь позиций влево - 7h вместо hhhhhhh; удалить 4 строки - 4dd вместо dddddddd.


Пример числа не как повтора: переместить курсор в начало файла - 1G; на строку с нужным номером - набрать номер и G; в конец файла - G (без числа).


Многие команды сделаны по шаблону "число - действие - фрагмент" или равноценному "действие - число - фрагмент" (без пробелов и знаков препинания). Фрагменты: один символ - h (или l, или ничего); слово - w (или W, b, B); строка - то же, что и действие; от курсора до начала строки - 0 (ноль); от курсора до конца строки - $.


Копировать фрагмент текста в отдельный буфер - y (и указать фрагмент), например: копировать два слова, начиная с позиции курсора, - 2yw или y2w; копировать строку - yy. Вырезать - d (и указать фрагмент). Вставить вырезанный (удалённый) или скопированный фрагмент после позиции курсора - p.


Нетипичный фрагмент возможно обозначить выделением - v. Размер выделения изменяют любыми командами перемещения курсора. Потом можно нажать y или d. Просто убрать выделение - снова v.


Удалить фрагмент - d (то же, что и "вырезать"). Удалить строку - dd. Для удаления символов могут работать клавиши Delete и Backspace или, соответственно, x и X. Возможно подставлять числа, например: 2dd, 5x.


Перевод в режим вставки с заменой символов вместо добавления - R. В других редакторах для этого обычно применяют клавишу Insert.


Отменить недавнюю правку - u. Вернуть строку с курсором в исходное состояние, если курсор не перемещали на другую строку, - U.


Искать фрагмент текста по шаблону - / (вперёд, к концу файла) и ? (назад, к началу). Искать следующий такой же фрагмент - n (вперёд) и N (назад).


Вводить команды ex возможно прямо в vi из командного режима. Вводимые команды отображаются в нижней линии. Набор команд ex начинают с двоеточия и заканчивают Enter. То есть выражение вроде :wq в описании команд vi означает сочетание Shift ;, потом W, Q, Enter. Без запятых. Прервать ввод - Escape дважды.


В строке для ex можно вводить команды оболочки, не выходя из vi. Перед командой - восклицательный знак, например: :!cp ~/test.txt ~/testvi.txt.


Там же вводят команды настройки vi, начинающиеся с :set, например: показать номера строк - :set nu и убрать номера - :set nonu.


Заменить в текущем буфере "рфагмент" на "фрагмент" один раз - :s/рфагмент/фрагмент/. Заменить в текущем буфере каждый "рфагмент" на "фрагмент" - :1,$s/рфагмент/фрагмент/g.


Добавить содержимое другого файла к буферу - :r (и через пробел - имя файла).


Перечитать файл в буфер заново (отбросить несохранённые изменения) - :e!.


Отбросить несохранённые изменения и выйти из vi - :q!.


Записать изменённый буфер (сохранить файл) - :w (и через пробел - имя файла, если нужно).


Открыть ещё один файл (сначала - сохранить текущий файл) - :e (и через пробел - имя файла, возможно автодополнение по Tab).


Переключаться между открытыми файлами - :e #. В Vim возможно разделить экран на "окна" - :split. В каждом окне можно открыть файл. Переключаться между окнами - ^w w. Закрыть текущее окно - :close.


Выйти (и сохранить файл, если буфер изменён) - ZZ или :wq.


Документация: man-страница; англоязычный учебник - по ex-команде :help.


Редакторы vi и Vim воспринимают команды только на латинице, поэтому попеременно писать и редактировать русскоязычные тексты неудобно: приходится очень часто переключать раскладку. Есть обходное решение для Vim: надо добавить следующую строку в файл настроек ~/.vimrc (не путать с ~/.viminfo):


set keymap=russian-jcukenwin


Если такого файла ещё нет, создайте его. После запуска Vim возможно будет переключать раскладку для набора текста сочетанием Ctrl ^ (даже Ctrl 6). Переключение подействует только "внутри" Vim, команды будут работать даже при наборе русскоязычного текста.

Показать полностью
1

Старый мультфильм

Прошу помощи в поиске старого мультфильма.


Иностранный; вероятно, без перевода.

Не знаю, сериал или нет.

Выпущен предположительно до 1997 года.

Рисованный.

На тему приключений в космосе.


Помню только короткую сцену: бой двух людей в космосе.

У каждого был небольшой корабль размером примерно с современный истребитель.

Оба человека были в скафандрах-доспехах.

Доспех одного был красный, другого - вроде синий.

Сражались так: вылезали из кораблей, вставали на них как на доски для сёрфинга или сноуборды и устраивали что-то вроде средневековой рыцарской турнирной сшибки (возможно, была и перестрелка).

У красного оружие было - что-то вроде двустороннего копья. Сначала наконечники крепились на бёдрах, потом человек снимал наконечники, приставлял друг к другу, и вырастало древко (как телескопическая антенна). Вроде бы это копьё ещё могло стрелять лазером.

У синего вроде были шипастые наплечники, которые складывались в палицу или моргенштерн. Возможно, ещё был щит.

9

Командная строка, или Текстовый интерфейс (заметка-отрывок)

(Когда-то составлял для совсем начинающего пользователя. Возможно, кому-то пригодится как материал для инструкций по работе. Ударения показаны заглавными буквами.)


Это один из способов взаимодействия с компьютером; способ старый, по-своему удобный и многократно испытанный. С ним следует хотя бы ознакомиться. Нередко при аварийной ситуации (сильном повреждении операционной системы) работает только командная строка и восстановительные действия можно выполнять только в ней.


Командная строка - это способ управлять компьютером, набирая на клавиатуре текстовые команды и читая ответные текстовые сообщения компьютерной системы.


Не следует путать командную строку и системы передачи сообщений вроде электронной почты или чата. В системах передачи текстовых сообщений люди общаются друг с другом при помощи компьютеров (и вычислительных сетей). В командной строке человек (пОльзователь, оперАтор) даёт компьютеру команды в форме текста - человек управляет компьютером, вот и всё.


По-английски "комАндная строка" - command line ("кОмэнд лайн"). Ещё здесь следует усвоить понятие "интерфЕйс" (interface, "Интерфэйс") - это слово означает "способ взаимодействия". Командная строка - это текстовый, командный способ взаимодействия человека и компьютера. Полное выражение выглядит так: command line interface. Или аббревиатура: CLI ("си-эл-ай"). Равноценное выражение - "текстовый интерфейс пользователя" (text user interface, "тэкст Юзер интерфэйс"). Или аббревиатура: TUI (ти-ю-ай). Другой распространённый человеко-машинный интерфейс - графический (GUI)").


Для работы в командной строке нужны клавиатура (набирать команды) и монитор (видеть и исправлять, если нужно, свои команды и читать ответы системы).


Командная строка как способ управления компьютером появилась довольно давно и много развивалась. За работу этого интерфейса отвечает специальная программа - "командный интерпретАтор" (command interpreter, "кОмэнд интЕрпритёр"); другое название - "оболОчка" (shell, "шэл").


Система Linux ("лИнукс") - многопользовательская, поэтому в ней есть возможность запустить одновременно на одном компьютере несколько оболочек: по одной или даже по несколько для каждого пользователя.

Такая техническая возможность называется "терминАл" (terminal, "тЁрминэл"), или "консОль" (console, "кОнсоул"). Слово "консоль" (женский род) изначально использовалось для обозначения рабочего места системного (главного) оператора, но сейчас слова "консоль" и "терминал" равнозначны, хотя "консоль" - предпочтительнее.


Первоначально терминалы были настоящими, подключёнными к большому общему компьютеру, рабочими местами: парами "клавиатура - монитор" (иногда ещё и мышь). Телефонная будка или банкомат - это тоже "терминал". В настоящее время к компьютеру обычно подключена только одна пара "клавиатура - монитор", но на неё можно (попеременно) отображать несколько рабочих мест (каждое из которых может быть рабочим местом системного оператора. Поэтому прибавляется необязательное слово "виртуАльный(ая)" (virtual, "вЁрчел"), то есть "мнимый(ая)". Говорят: "работать в виртуальной консоли".


При нормальном (без сбоев) запуске какого-либо популярного дистрибутива Linux организуется несколько (виртуальных) консолей. Обычно можно перейти (переключиться) между консолями нажатием сочетания клавиш Ctrl Alt F1, Ctrl Alt F2, Ctrl Alt F3 и так далее. Нередко консоли заканчиваются на Ctrl Alt F8. На каких-то консолях могут быть запущены графические интерфейсы. (При переключении текстового и графического режимов монитор может издавать щелчки; заметна небольшая задержка.) Может быть так, что виртуальная консоль работает только на "вывод". То есть команды с клавиатуры ввести если и можно, то бесполезно. Такая консоль обычно настроена для вывода системных сообщений (множества строк отчётов о работе системы) - чтобы узнать причину возможных неполадок.


Работоспособная консоль содержит, по крайней мере, предложение ввести учётные данные пользователя. Обычно это выглядит так: однородный фон на весь экран, надпись


login: _


и мигающий курсОр (место ввода символа с клавиатуры) - выше показан знаком подчёркивания.


Может быть (сверху) ещё немного текста, например: название установленной системы, её версия и ещё какие-то системные данные. Например:


Welcome to openSUSE 13.1 "Bottle" - Kernel 3.11.10-11-default (tty1).

computer login: _


Цвет текста обычно светлый на тёмном фоне. Считается, что так меньше нагрузка на глаза. И ещё это "наследие" со времён, когда слишком яркое (светлое) изображение ускоряло разрушение внутреннего слоя электронно-лучевой трубки, поэтому старались делать тёмной большую часть видимого на экране изображения.


Чтобы начать работать в консоли ("начать сеанс"), нужно "войти" (log in). Пользователю полагается знать хотя бы одну пару "слов" (точнее, сочетаний английских букв, цифр или других клавиатурных знаков):


"системное имя пользователя" (username, "Юзернэйм", или login, "лОгин");

"пароль" (password, "пАсворд").


Эта пара называется "учётные данные" (account information, "экАунт информЭйшэн"), а их копия в операционной системе - "учётная запись" (account record, "...рикОрд").


Слово login на дисплее - это запрос системного имени пользователя. Здесь используется имя student. То есть нужно по очереди быстро нажать и отпустить на клавиатуре нужные клавиши: S, T, U, D, E, N, T. Семь нажатий.


Символы нажатых клавиш по очереди появятся на той же строке, за словом login. На клавишах нанесены заглавные буквы, но выводиться на дисплей должны строчные, такие же как в имени. Если выводятся заглавные буквы - вероятно, работает режим запирания регистра, переключаемый нажатием и отпусканием клавиши Caps Lock. Если ошиблись при наборе, нажмите клавишу Backspace нужное количество раз и наберите имя заново. Также могут пригодиться стрелки управления курсором Влево и Вправо и клавиша Delete.


Если выводятся не английские, а русские или иные буквы, то нужно "переключить раскладку клавиатуры". Переключить, в зависимости от настройки системы, можно отдельной клавишей или сочетанием клавиш: Alt Shift, Ctrl Shift, парные клавиши-модификаторы (нажимать обе), только правые модификаторы, только левые модификаторы, Windows Пробел, Alt Пробел, Scroll Lock, Shift Caps Lock, реже - иными комбинациями модификаторов. Переключение раскладки обычно действует до следующего переключения, или до перезапуска компьютера, или до выхода из сеанса. Если имя или пароль содержат цифры, то лучше нажимать те клавиши, которые расположены в ряде над алфавитными (а не с дополнительной цифровой панели).


После ввода системного имени нужно нажать клавишу Enter. На экране появится дополнительная надпись


Password:


и курсор переместится в конец надписи. Это запрос пароля. При наборе пароля символы на экране не показываются. Так задумано, чтобы возможный злоумышленник не смог подсмотреть пароль. После ввода пароля нужно снова нажать клавишу Enter.


Если учётные данные неверны (набраны с ошибкой или нет такого пользователя), то система выдаст на дисплей сообщение об ошибке, вроде такого:


Login incorrect.


Снова появится строка запроса системного имени


login:


Можно попробовать ввести имя и пароль ещё раз.


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


$ или > - это самое простое приглашение для обычного пользователя;

# - то же, но для суперпользователя (системного администратора);

student@computer:~> - пользователь student за компьютером computer в рабочем каталоге ~.


Командная строка, исходя из своего названия, обрабатывает команды: нечто похожее на слова, словосочетания, предложения. Пользователь "командует" (набирает текст команды) - компьютер выполняет, как будто "отвечает". Запрос - ответ; снова и снова. Это назвается "интерактИвность" (interactivity, "интёрэктИвити"), или "диалОговый режим" (dialog mode, "дАйэлог мОуд").


Самые простые команды состоят из одного слова. Часто это слово сокращено, чтобы быстрее было набирать и читать команды. Наберите команду (и Enter):


uname


Если всё в порядке, то на экране должен (почти мгновенно) появиться "ответ": слово


Linux


А приглашение командной строки должно повториться ниже. Можно новые команды вводить. Вот так:


student@computer:~> uname

Linux

student@computer:~>


Названия команд обычно состоят из строчных английских букв и, по возможности, являются осмысленными - чтобы легче было запомнить и понять. Важно вводить команды в том регистре, в каком указано: строчные буквы - значит строчные. Для Linux это важно; про "неправильную" команду система может сказать: "Команда не найдена" (Command not found).


Название uname ("ю-нэйм") является сокращением от выражения "название системы типа UNIX" (UNIX name, "Юникс нэйм"). Системы Linux "унаследовали" от UNIX эту команду (и множество других). В ответ на команду uname система назвала своё имя: Linux.


Пока одна команда не отработает, следующую вводить нельзя (на этой консоли). Вот ещё три простые команды.


date ("дэйт") - показать дату и время на момент выполнения этой команды. Чтобы опять узнать время, спустя какой-то промежуток, надо снова набрать date (двух следующих команд это тоже касается). Обратите внимание, что у компьютера, как у любых часов, своё время: компьютерное время тоже может "спешить", или "отставать", или быть выставлено неправильно.


cal - показать текстовый календарик, от слова calendar ("кЭлиндер").


uptime ("Аптайм") - показать время, прошедшее с момента включения компьютера; то есть как долго он включён.


По мере заполнения свободного пространства на дисплее текстом, старые строки (которые выше) убираются, оставшийся текст "сдвигается" вверх, а на освободившееся пространство внизу помещаются новые строки. Обычное сочетание клавиш для принудительной "очистки" экрана - Ctrl L. Или команда clear. На дисплее должно остаться только очередное приглашение.


Если пока в командной строке нечего делать, значит нужно "выйти", завершить сеанс. Простой способ - нажать сочетание клавиш Ctrl D. Есть ещё равноценные команды exit и logout. Дисплей "очистится" и вернётся к виду запроса системного имени.

Показать полностью
20

Старая добрая классика фэнтези

Недавно захотел перечитать старую классику фэнтези, что-то простое и доброе (успешный квест). Припомнилось это:


Братство талисмана;

Зачарованное паломничество;

Там, где обитает зло.

(Автор - Клиффорд Саймак.)


Меч и сума;

Ученик ведьмы;

Сердце дракона;

Воин и чародей.

(Автор - Элизабет Бойе.)


Можно найти, например, на Lib.Ru в разделе "ЗАРУБЕЖНАЯ ФАНТАСТИКА".

Отличная работа, все прочитано!