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

Запустить программу, написанную для Windows в Linux, можно несколькими способами: с использованием Wine и продуктов на его основе, с помощью виртуальных машин и эмуляторов: VirtualBox, VMware, Parallels Workstation, QEMU. Теоретически еще есть возможность портирования программ с Windows на Linux при наличии исходного кода и навыков программирования, но этот вариант мы здесь рассматривать не будем.

Программы под Wine обычно работают быстрее, чем в виртуальных машинах. Это особенно актуально для современных 3D игр. Wine не требует установки операционной системы и позволяет быстро менять версию системы, библиотек и другие параметры. Запускать программы можно непосредственно в среде Linux. С другой стороны, для настройки Wine все равно придется потратить некоторое время и возможно неоднократно при запуске отдельных программ и игр. В виртуальных машинах запускаются оригинальные версии Windows и прочие операционные системы, которые нужно предварительно установить и настроить. Системе выделяются определенные ресурсы компьютера, эмулируется стандартное оборудование. Перед выполнением программы нужно предварительно запустить эмулятор и загрузить операционную систему, на что требуется дополнительное время. Следует отметить, что некоторые программы имеют защиту от запуска под виртуальными машинами.

Установка Wine

Открываем терминал комбинацией клавиш Ctrl+Alt+T . Добавляем репозиторий с Wine командой:

sudo add-apt-repository ppa:ubuntu-wine/ppa

Вводим пароль администратора. В процессе установки нужно будет нажать клавишу «Enter ».

Если вы будете производить апгрейд системы, например, обновлять Ubuntu 13.10 до Ubuntu 14.04, то придется повторить вышеуказанную операцию после апгрейда, поскольку в процессе обновления нестандартные репозитории удаляются.

После добавления репозитория обновляем информацию о пакетах:

sudo apt-get update

Теперь можно установить Wine командой:

sudo apt-get install wine1.7

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

sudo apt-get install wine1.6

Возможно, когда вы будете читать эту статью, уже появятся более новые версии, тогда вместо wine1.6 или wine1.7, надо будет устанавливать wine1.8 или wine1.9. Номер текущей версии указан на официальном сайте Wine: http://www.winehq.org

Хотя можно и не указывать версию при установке, версия Wine в этом случае будет зависеть от версии операционной системы:

sudo apt-get install wine

Проверить, какая версия установилась, можно с помощью команды:

wine --version

Настройка Wine

После установки необходимо настроить программу командой:

winecfg

Рис. 1. Окно настроек winecfg

Это команда создаст в домашней директории пользователя каталог.wine, где будут находиться системные файлы с настройками - аналог реестра Windows и drive_c - каталог для приложений Windows. С помощью winecfg можно выбрать версии Windows по умолчанию и для отдельных приложений, версии библиотек, настроить графику и звук, интеграцию с рабочим столом, выбрать диски, с которых разрешен запуск Windows-программ.

А редактировать реестр можно с помощью привычной команды:


Рис. 2. Окно regedit под Wine

После такой первоначальной настройки, уже можно будет устанавливать и запускать программы с помощью Wine. Но многие программы работать не смогут, поскольку требуют определенных библиотек, шрифтов и т.д., которые придется установить отдельно. Для этого воспользуемся программой winetricks, которая входит в стандартный пакет программ Wine. Winetricks кроме шрифтов и библиотек позволяет также устанавливать популярные программы и игры и производить настройки Wine.

Попробуем установить Internet Explorer 7 с помощью winetricks, для этого наберем в терминале:

winetricks ie7

Подождем некоторое время, пока скачаются необходимые файлы и запустится программа-установщик, нажмем кнопку «Next» и подождем окончания установки. Для последующего запуска Internet Explorer нужно будет выполнить команду:

wine "C:\Program Files\Internet Explorer\iexplore"

Но лучше запускать программы из родного каталога. Переходим в каталог (если в имени файла есть пробел, то перед ним нужно ставить обратный слеш «\»):

cd ~/.wine/drive_c/Program\ Files/Internet\ Explorer/

И запускаем программу:

wine iexplore.exe

Чтобы не набирать эти команды каждый раз, можно создать простейший скрипт. Переходим в домашний каталог:

Создаем файл ie.sh с помощью редактора nano:

nano ie.sh

Вставляем в файл строчки:

cd ~/.wine/drive_c/Program\ Files/Internet\ Explorer/ wine iexplore.exe

Сохраняем файл - Ctrl+O и выходим из редактора - Ctrl+X . Делаем файл исполняемым:

chmod +x ie.sh

Теперь для запуска ie достаточно набрать:

~/ie.sh

А можно скопировать файл на рабочий стол и запускать его с помощью мышки:

cp ie.sh ~/Desktop/

Установка программы с CD или DVD может быть выполнена с помощью такой команды:

wine start "D:\setup.exe"

Аналогичным образом можно установить другие программы и библиотеки. Также можно воспользоваться графическим интерфейсом программы, набрав winetricks без параметров. Потом выбрать «Select the default wineprefix».

Рис. 4. Выбор действия winetricks

И отмечаем галочками библиотеки, которые необходимо установить. Можно сделать то же самое и посредством командой строки, например:

winetricks d3dx9 dotnet20

Таким образом, мы установим сразу два компонента: d3dx9 и dotnet20. Чтобы в программах корректно отображались популярные шрифты, установим их:

winetricks allfonts

С библиотеками немного сложнее. Разные программы могут потребовать отдельных настроек, определенных версий Windows и библиотек. Для этого можно создать несколько конфигураций Wine, указывая каталог с настройками с помощью переменной окружения WINEPREFIX . По умолчанию WINEPREFIX=~/.wine Для создания новых настроек в каталоге ~/.wine2 наберем:

WINEPREFIX=~/.wine2 winecfg

Таким образом, можно создать любое количество конфигураций. Для настройки и установки шрифтов и библиотек наберем:

WINEPREFIX=~/.wine2 winetricks

Для запуска установленной программы:

WINEPREFIX=~/.wine2 "C:/путь/к/программе/программа.exe"

Завершить выполнение программы можно с помощью команды:

killall -9 программа.exe

А чтобы завершить работу всех программ, запущенных под Wine, нужно набрать:

wineserver -k

Для удаления настроек и всех программ в префиксе ~/.wine2 нужно просто удалить каталог:

rm -r ~/.wine2

Точно также можно удалить и основной каталог Wine:

rm -r ~/.wine

Будьте внимательны, при этом удалятся также все приложения Windows, которые установлены в этот каталог!

winefile - запуск файлового менеджера, с помощью которого можно запускать Windows-приложения, копировать и удалять файлы и т.д. Узнать, какие приложения и игры запускаются под Wine и как производить настройки под конкретные приложения можно на сайте: http://appdb.winehq.org/ Сайт англоязычный. Для поиска приложений нужно выбрать в меню «Browse Apps» и ввести в поле «Name» название программы. Версии программ, которые запускаются и работают без ошибок или с несущественными проблемами, имеют рейтинг «Platinum» или «Gold». Если программа вообще не работает, то ей присваивается рейтинг «Garbage».

PlayOnLinux

PlayOnLinux - это программа, которая значительно упрощает установку и настройку Windows-приложений для запуска под Wine. Она автоматически скачивает из интернета и устанавливает все необходимые компоненты для запуска конкретных программ, а также и сами программы, если они распространяются бесплатно через интернет. В противном случае, понадобится установочный диск с программой. Устанавливаем программу любым способом, например в Ubuntu командой:

sudo apt-get install playonlinux

и запускаем ее:

playonlinux

Пользоваться программой предельно просто. Нажимаем кнопку «Установка».

Рис. 5. Основное окно PlayOnLinux

Выбираем программу, которую необходимо установить. Если не нашли нужную программу в окне выбора, можно попробовать нажать «Установить программу, отсутствующий в списке» внизу окна.

Рис. 6. Окно выбора программы PlayOnLinux

Останется несколько раз нажать кнопку «Далее», а в некоторых случаях выбрать конфигурацию программы. После установки ярлыки программ появятся в основном окне PlayOnLinux, откуда их можно будет запустить двойным кликом, либо нажатием на кнопку «Запуск». Также можно будет создать ярлыки программ Windows на рабочем столе с помощью кнопки «Ярлык».

Рис. 7. Основное окно PlayOnLinux с установленной Windows-программой FireFox

Прочие программы на базе Wine

Существуют также платные программные продукты на базе Wine. CrossOver позволяет запускать под Linux различные версии Microsoft Office, Adobe Photoshop и множество других программ и игр. WINE@Etersoft нацелен в основном на поддержку популярных программ для бизнеса: 1С:Предприятие, КонсультантПлюс, ГАРАНТ и прочих. Ознакомиться с этими программами можно на официальных сайтах: http://www.codeweavers.com/products/ http://etersoft.ru/products/wine

VirtualBox

VirtualBox - одна из самых популярных программ для виртуализации, которая позволяет запускать различные операционные системы одновременно на одном компьютере. Установку VirtualBox в Ubuntu можно выполнить стандартным способом, набрав в терминале:

sudo apt-get update

sudo apt-get install dkms

sudo apt-get install virtualbox

Скачать VirtualBox для различных операционных систем можно здесь: https://www.virtualbox.org/wiki/Downloads . После окончания установки добавим пользователя в группу vboxusers, вместо username необходимо указать корректное имя пользователя, под которым будет работать VirtualBox:

sudo usermod -a -G vboxusers username

Теперь можно запустить программу через меню, либо набрав в терминале:

virtualbox

Рис. 8. Менеджер VirtualBox с уже установленными операционными системами

Теперь поставим операционную систему, для этого нужно иметь установочный диск или его образ. Нажмем кнопку «Создать», запустится мастер создания новой виртуальной машины:

Рис. 9. Мастер создания новой виртуальной машины

Нажмем кнопку «Вперед», введем имя виртуальной машины, например «Windows XP», а ниже выберем соответствующие тип и версию операционной системы:

Рис. 10. Выбор версии операционной системы

Мы выбрали Windows XP, поскольку она менее требовательна к ресурсам компьютера, занимает меньше места, быстрее загружается. Но поддержка этой системы уже официально прекращена. Естественно, можно установить и другие версии Windows, которые поддерживает VirtualBox: Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows 8, Windows Server 2012. Далее выбираем объем ОЗУ, которое будет выделено виртуальной машине:

Рис. 11. Выбор объема памяти

Выбор зависит от версии ОС, объема физической памяти, планируемых задач, количества запускаемых одновременно гостевых систем. В зависимости от версии операционной системы, VirtualBox будет предлагать различные параметры по умолчанию, но они, как правило, минимальные, желательно их увеличить. В любом случае, для нормальной работы современных операционных систем необходимо не менее 1-2 Гигабайт ОЗУ (для Windows XP достаточно 512 Мбайт) и еще необходимо оставить память основной хост-системе. Далее создаем новый виртуальный жесткий диск или выбираем уже созданные ранее.

Рис. 12. Виртуальный жесткий диск

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

Рис. 14. Выбор атрибутов виртуального диска

Указываем размер диска, расположение оставляем по умолчанию (диск будет располагаться в папке ~/VirtualBox VMs/Имя системы .

Рис. 15. Выбор расположения и размера виртуального диска

Осталось нажать кнопку «Создать».

Рис. 16. Последний этап создания новой виртуальной машины

Виртуальная машины создана. Выбираем ее в менеджере VirtualBox и нажимаем кнопку «Свойства».

Рис. 17. Выбор системы

Тут можно подробно настроить созданную виртуальною машину. В первую очередь, необходимо указать диск, с которого будем ставить систему. Для этого нажимаем слева «Носители», выбираем пустой диск, справа кликаем на иконку диска и указываем образ дистрибутива, либо ставим галочку «Живой CD/DVD» и вставляем физический диск.

Рис. 18. Выбор установочного диска

Рис. 19. Настройки системы

Если важна скорость работы с графикой, переходим на вкладку «Дисплей», увеличиваем объем видеопамяти и включаем ускорение.

Рис. 20. Настройка параметров дисплея

Переходим обратно в VirtualBox Менеджер и нажимаем кнопку «Старт». Далее производим установку системы, как обычно. После установки гостевой системы, загружаем ее и в меню «Устройства» выбираем «Установить дополнения гостевой ОС». Вместо этого можно нажать комбинацию клавиш правый Ctrl+D . После установки дополнений система будет готова к работе.

Рис. 21. Установленная и готовая к работе система Windows XP в VirtualBox

Загрузка гостевой операционной системы после запуска VirtualBox осуществляется кнопкой «Старт». Переключение указателя мышки между основной и гостевой системой осуществляется автоматически, но можно переключить принудительно с помощью кнопки правый Ctrl (Host key - можно изменить в настройках) и правый Ctrl+I . Эта же кнопка в сочетании с различными клавишами служит для выполнения ряда функций:

Host key+F - переключение в полноэкранный режим и обратно.

Host key+Del - заменяет комбинацию Ctrl+Alt+Del.

Host key+I - отключить интеграцию мышки.

Host key+С - переключение в режим масштабирования, в котором можно задать произвольный размер окна, возврат в стандартный режим происходит с помощью той же комбинации клавиш.

Host key+D - установка дополнений гостевой операционной системы.

Host key+T - сделать снимок, сохранить состояние ОС. Восстановить систему из сохраненного состояния можно будет в основном окне менеджера VirtualBox, нажав на кнопку «Снимки». Очень удобная функция для борьбы с вирусами, тестирования и отладки программ, которые могут повредить систему. Всегда можно сделать откат системы в стабильное состояние.

Host key+S - открыть окно настроек.

Host key+R - перезагрузить систему.

Host key+Q - закрыть виртуальную машину (выйти из системы).

Использование Linux- или UNIX-приложений в Windows может быть продиктовано массой причин — от банальной привычки к некоторым программам до невозможности запуска отдельной машины с Linux. Кто-то хочет использовать нативные версии ПО для отладки, а кто-то надеется, что таким способом можно заставить пользователей плавно смигрировать на полноценный дистрибутив.

Прежде чем городить огород с эмуляторами, лучше поищите портированные версии или аналоги ваших любимых программ. Те же GIMP, Audacity, Pidgin и множество других утилит имеют родные сборки не только для Windows, но и для Mac OS X. Для получения какой-то конкретной функциональности зачастую не требуется полноценный аналог софта из Linux. Например, к автодополнению по Tab в оболочке bash привыкаешь очень быстро, а в командной строке Windows этого нет и в помине. Исправить это и другие досадные упущения поможет утилита clink .

Стандартные консольные утилиты, например из пакета GNU Coreutils, давно спортированы на Windows. Есть как довольно старые наборы GNUWin II и , так и постоянно обновляющиеся UWIN (не рекомендуется к использованию) и . Для последнего по завершении установки базового инсталлятора надо последовательно запустить файлы download.bat и install.bat, а затем скопировать по желанию папку gnuwin32 в любое удобное место и запустить из неё файл update-links.bat. После отработки последнего скрипта в подкаталоге StartMenu будут ссылки на запуск командной строки с окружением GNU и документацию к утилитам.


Обладатели Windows Vista/7 в максимальной и корпоративной версиях, а также серверных версий ОС Microsoft могут вообще не заморачиваться. Для них доступна подсистема для приложений на базе UNIX (Subsystem for UNIX-based Applications, SUA) или сервисы Microsoft Windows для UNIX (Microsoft Windows Services for UNIX, SFU). Этот набор базовых утилит наличествует прямо в компонентах системы. Дополнительные наборы программ можно скачать . Наконец, последнее в списке и первое по популярности решение для запуска UNIX-программ — это Cygwin . Этот пакет прост в установке и содержит далеко не маленький набор приложений, портированных под Windows. Рекомендуется использовать именно его.




Теперь можно поговорить о странном — запуске неродной для Windows системы KDE. Вообще-то проект KDE on Windows существует не первый год, и поначалу пользоваться им было просто невозможно из-за регулярных падений, которые разве что не загоняли несчастную систему в BSOD. Однако разработчики не сидели сложа руки, и в нынешней реинкарнации проекта его можно смело инсталлировать — ошибки довольно редки, да и те — некритичные. Всё сразу ставить смысла, наверное, нет, а вот некоторые приложения могут приглянуться.





К сожалению, портированные приложения далеко не всегда ведут себя так, как в родном окружении, или могут конфликтовать с другими программами. Поэтому единственным выходом, помимо установки «пингвиньей» ОС на голое железо, является эмулирование Linux. Для разового использования можно применить оболочку для QEMU под названием MobaLiveCD , которая без лишних телодвижений поможет запустить LiveCD/USB с различными дистрибутивами. Для постоянного использования лучше инсталлировать Linux в виртуальную машину: в VirtualBox или VMWare Player. Только не забудьте установить гостевые дополнения для более комфортной работы. Альтернативный вариант — применение VDI-решений с возможностью бесшовной интеграции в Windows Linux-приложений, запущенных на отдельном хосте, который также может быть виртуализирован.


Оптимальным вариантом для запуска Linux-приложений является использование среды coLinux . Она, условно говоря, запускает ядро Linux на уровне ядра Windows и имеет доступ ко всем аппаратным ресурсам машины, за счёт чего потерь производительности практически нет. При этом она сохраняет полную совместимость с Linux-приложениями, позволяя напрямую запускать их. На базе coLinux имеются готовые системы для быстрого запуска , Topologilinux (Slackware), (различные дистрибутивы) и andLinux (Ubuntu). Единственным неприятным ограничением coLinux и всех пакетов на его основе является необходимость использования 32-битной версии Windows 2k/XP/2k3/Vista/7. В качестве примера разберём минимальную настройку Debian Squeeze. Первым делом установим свежую версию , отказавшись от загрузки готовых образов и попутно инсталлировав WinPcap .


Теперь необходимо архив образа диска с Debian и распаковать его в ту папку, в которую был установлен coLinux. Размер диска rootfs_2gb.img при желании можно увеличить . Файл squeeze.conf придётся немного отредактировать. Изменений минимум — увеличить объём выделяемой RAM (mem), разрешить доступ к диску C: посредством COFS и добавить сетевой интерфейс TAP. Обратите внимание, что при использовании COFS лучше не обращаться одновременно к одним и тем же файлам с папками из Linux и Windows.

Kernel=vmlinux cobd0="rootfs_2gb.img" cobd1="swap_128mb.img" root=/dev/cobd0 ro cofs0="C:\" initrd=initrd.gz mem=512 eth0=slirp eth1=tuntap

После запуска squeeze.bat вы попадёте в консоль Debian. Логин по умолчанию root, а пароля нет. С помощью nano отредактируем параметры сетевых интерфейсов в файле /etc/network/interfaces. Добавим секцию для eth1. В качестве IP-адреса используем любой, лишь бы не было пересечения с другими локальными подсетями. В Windows в настройках IPv4 сетевого адаптера TAP-Win32 Adapter V8 (coLinux) надо указать адрес из той же подсети.

Auto eth1 iface eth1 inet static address 192.168.100.2 netmask 255.255.255.0

Выходим из nano с сохранением изменений — F2, Y, Enter. Теперь создадим папку, куда будет монтироваться диск C:…

Mkdir /mnt/windrvc

…добавим одну строчку в конец файла /etc/fstab и сохраним его:

/dev/cofs0 /mnt/windrvc cofs defaults 0 0

Сейчас мы займёмся установкой X-сервера, а пока для простоты пропишем экспорт переменной DISPLAY в файл ~/.profile (это надо будет сделать и для любых других пользователей). В качестве IP-адреса используйте тот, что указан для TAP-адаптера в Windows. После этого можно перезагрузиться командой reboot.

Export DISPLAY=192.168.100.1:0

Нелишней будет установка набора , в том числе и кириллических. Опционально можно пройтись по каталогам со шрифтами, включая C:\Windows\Fonts, утилитами mkfontdir и mkfontscale из состава Cygwin. Теперь всё готово для установки X-сервера . Сразу же после этой процедуры добавляем в файл X0.hosts IP-адрес TAP-интерфейса в Debian (в нашем примере это 192.168.100.2).


«Поблагодарим» Windows за бдительность и в стандартном брандмауэре поменяем все правила, касающиеся Xming, с запрещающих на разрешающие, а иначе программы просто не достучатся до X-сервера. Теперь запускаем утилиту XLaunch, в которой можно выбрать режим отображения X-окон и задать дополнительные параметры. Для нас важно настроить поддержку русской и английской раскладок с переключением по Alt+Shift и опционально задать DPI. В конце файл настроек надо сохранить как имя.xlaunch. В дальнейшем по двойному клику по этому файлу X-сервер будет запускаться с заданными нами параметрами.

Xkblayout us,ru -xkbvariant basic,winkeys -xkboptions grp:alt_shift_toggle -dpi 96


Чтобы не было так скучно, установим графический менеджер пакетов synaptic для более удобной инсталляции софта и какую-нибудь легковесную панель с меню приложений, например lxpanel. Последнюю для простоты пропишем в автозапуск при входе, добавив в конец ~/.profile команду lxpanel&.

Apt-get update apt-get upgrade apt-get install synaptic lxpanel

Для полноты картины добавим поддержку звука. Скачиваем отсюда архив с Pulseadio и распаковываем его в какой-нибудь каталог, в котором создаём текстовый файл default.pa. Наполняем этот файл нижеследующими строками. Здесь 192.168.100.0/24 — это наша TAP-подсеть.

Load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.100.0/24 load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.100.0/24 load-module module-detect add-autoload-sink output module-waveout sink_name=output set-default-sink output

Запускаем pulseaudio.exe и в очередной раз идём править разрешения в брандмауэре Windows. В консоли Debian устанавливаем необходимые утилиты и библиотеки.

Apt-get install libpulse0 libasound2-plugins alsa-utils

В файле /etc/pulse/client.conf добавляем IP-адрес хост-машины с запущенным сервером Pulseaudio — default-server = 192.168.100.1, а в /etc/asound.conf следующие параметры:

Pcm.!default {type pulse} ctl.!default {type pulse} pcm.pulse {type pulse} ctl.pulse {type pulse}


Для проверки работоспособности можно попробовать проиграть один из тестовых файлов.

Aplay /usr/share/sounds/alsa/Front_Center.wav

Автоматический запуск Pulseaudio при старте Debian осуществляется добавлением в конец файла конфигурации squeeze.conf такой команды.

Exec0="X:\путь\до\папки\pulseaudio\pulseaudio.exe"

Для X-сервера такой трюк не подходит. В принципе, того, что уже сделано, достаточно для работы. Однако неплохо было бы добавить в Linux нового не-root пользователя, настроить для него автологин с mingetty, установить coLinux в качестве службы Windows и прописать Xming в автозапуск. Для удобства можно поставить утилиту Desktops , которая создаёт несколько виртуальных рабочих столов в Windows, и запускать X-сервер в полноэкранном режиме на втором рабочем столе.

В итоге мы получили быструю среду для почти что нативного запуска Linux-приложений в Windows. Её можно использовать для написания и отладки веб-приложений, кросскомпиляции драйверов и прочих задач. Вот только вменяемого ускорения графики для работы тяжёлых приложений пока ещё нет, да 64-битная версия начала разрабатываться всего несколько месяцев назад. Тем не менее coLinux вполне пригоден для повседневного использования. Для дальнейшего изучения возможностей и настроек этой системы обратитесь к вики проекта. Ну а мы на этом пока что закроем тему симбиотических отношений Windows с Linux через разные места. Удачи!

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

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

Все программы можно поделить на несколько типов:

  • Бинарные программы - содержат инструкции процессору уже готовые к выполнению, большинство программ находятся в таком формате, они быстрые и выполняются сразу же системой;
  • Программы на байт-коде - это уже не процессорные инструкции, а инструкции определенной виртуальной машины, которая может их выполнять, без виртуальной машины такие команды не могут быть выполнены. Такие программы потребляют больше ресурсов, но тоже достаточно быстрые, их преимущество в том, что они могут выполняться без изменения везде где может работать виртуальная машина. К таким программам можно отнести программы на Java.
  • Скриптовые программы - эти программы состоят из набора команд в виде обычного текста, которые выполняет специальный интерпретатор. Такие программы более медленные, но зато они проще в разработке и их код можно легко и быстро изменить.

А теперь перейдем к запуску программ.

Запуск программ в терминале

Изначально в операционных системах Unix и Linux не было графического интерфейса, поэтому программы запускались командами из терминала. Сейчас это тоже возможно и достаточно активно используется опытными пользователями. Синтаксис запуска программы выглядит таким образом:

/путь/к/файлу/программы параметры

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

Разработчики придумали обходной путь. Была создана переменная PATH, в которой хранятся все пути к папкам где обычно находятся программы - /bin, /sbin, /usr/bin, /usr/sbin и так далее. Вы можете посмотреть ее содержимое командой:

Когда вы набираете имя программы система ищет исполняемый файл с таким именем по всем папкам из PATH и если находит - то выполняет. Если же такого файла нет, то выдается сообщение - command not found. Таким образом, чтобы запустить одну из системных программ достаточно набрать имя ее исполняемого файла, например:

И можно передать параметры после пробела:

Когда программа находится не в этих каталогах, нужно указать к ней полный путь:

/usr/local/bin/ls1

Если же вы хотите запустить программу через терминал ubuntu, которая находится в текущей папке, то ситуация будет немного другой. Система выполняет только поиск по папкам из переменной PATH, в текущей директории она не ищет. Поэтому, если вы наберете имя исполняемого файла, то получите ошибку. Нужно указывать полный путь, как вы помните будет./:

Иногда возникает необходимость передать программе, какие-либо особые . Например, переменная EDITOR указывает какой текстовый редактор нужно использовать по умолчанию. Вы можете указать имя переменной и ее значение перед именем команды используя синтаксис:

имя_переменной = значение команда

Например:

EDITOR=nano visudo

По умолчанию эта команда открывает настройки в редакторе Vim, но с этой переменной окружения настройки откроются в редакторе nano.

Запуск программ от имени другого пользователя

Вы уже знаете как запустить программу в терминале linux, а что насчет других пользователей? В Windows достаточно часто используется запуск программ от имени администратора чтобы программа могла получить больше прав доступа в системе. В Linux для этого используется утилита sudo. Ее имя можно расшифровать как s witchu serdo - изменить пользователя и выполнить. По умолчанию утилита выполняет команду от имени суперпользователя root:

sudo команда
sudo whoami

Но с помощью опции -u можно выполнить программу от имени любого пользователя, зарегистрированного в системе:

sudo -u имя_пользователя команда
sudo -u postgres whoami

Команда whoami (кто я) выводит имя текущего пользователя.

Как запустить программу в фоне

Иногда возникает необходимость запустить долго выполняющуюся программу в терминале так, чтобы она не мешала дальше работать. Для этого можно использовать запуск программы в фоновом режиме linux:

имя_программы &

Например:

dd if=/dev/zero of=~/file count=100000 &

Система выведет PID, уникальный идентификатор программы, который вы потом можете использовать чтобы закрыть ее :

Как запустить скрипт в Linux

Мы уже говорили, что программы делятся на бинарные и интерпретируемые. Раньше мы говорили только про бинарные программы. Для запуска интерпретируемых нужен непосредственно интерпретатор, к таким программам относятся написанные на таких языках, как Java, Python, Perl, Ruby, PHP, NodeJS и многих других. Синтаксис запуска такой программы отличается:

интерпретатор /путь/к/файлу/программы параметры

Разные интерпретаторы ведут себя по разному, поэтому лучше сразу указывать полный путь к программе. Python обычно подхватывает скрипты из текущей папки без указания полного пути:

python hellowrld.py

А Java программы нужно запускать так:

java -jar program.jar

Для файлов интерпретируемых программ флаг исполняемости необязательный, поскольку они передаются в виде параметра основной программе. Только Bash скрипты составляют исключение. Вы можете запустить скрипт интерпретатором:

Или же просто набрать путь к скрипту:

Оболочка сама определяет свои скрипты по флагу исполняемости и выполняет их. Если флаг исполняемости не установлен, то его стоит добавить:

sudo chmod u+x ./script.sh

Поэтому то и для большинства интерпретируемых программ созданы простые sh скрипты которыми их можно быстро запустить.

Запуск программ Linux в графическом интерфейсе

Намного удобнее запускать программы через графический интерфейс. Если консольные программы так запускать невозможно, то для всех графических утилит существуют ярлыки, которые вы можете найти в главном меню системы:

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

Точно так же работает запуск скриптов в графическом интерфейсе. Вы можете найти все ярлыки из меню в каталоге /usr/share/applications/. Любую программу можно запустить двойным щелчком отсюда. Но давайте посмотрим что находится внутри ярлыка, для этого откройте его в текстовом редакторе:


Кроме всего прочего, в строке Exec указана команда, которая выполняет запуск программы linux, когда вы делаете двойной клик на ярлыке. Вы можете взять один из существующих ярлыков и сделать на его основе свой. Здесь указано просто имя программы. Но важно заметить, что лучше указывать полный путь в таких местах, как ярлыки, скрипты, cron и так далее это уменьшит количество ошибок, поскольку вы не можете знать проверяет ли система в этом случае PATH или ищет программу только в текущем каталоге. Теперь вы знаете все о том как запустить программу на linux.

Выводы

В этой статье мы рассмотрели как запустить программу через терминал ubuntu или в других дистрибутивах Linux. Несмотря на то, что это кажется очень простой темой, тут есть свои интересные моменты, которые могут быть полезны. Но вы о них уже знаете. Если у вас остались вопросы, спрашивайте в комментариях!

Итак, инсталляция Linux завершена, и вы перезапускаете компьютер. Если Linux - единственная операционная система, установленная на вашем компьютере (а, значит, загрузчик LILO размещается в главной загрузочной записи - MBR), то после обычного тестирования аппаратуры, выполняемого BIOS, ненадолго появится надпись

Если не предпринимать никаких действий, то на экран будет выдана масса сообщений, разбирать смысл которых мы пока не будем, и, наконец, появится стилизованное изображение пингвинчика. (я пока рассматриваю тот случай, когда вы при установке отказались от автоматической загрузки графической оболочки). Ниже изображения пингвина на экране написано:

Linux Version 2.0.36, Compiled #1 Tue Dec 29 13:11:11 EST 1998
One Intel 486 DX/2-WB Processor, 16M RAM, 33.28 Bogomips Total
Black Cat Linux release 5.2 (Fulcrun)
Kernel 2.0.36 on an i486 localhost login:

Я привел здесь то сообщение, которое появлялось у меня при одном из вариантов установки, когда я ставил Black Cat версии 5.2; у вас, конечно, сообщение будет отличаться в некоторых деталях. Если у вас хватит терпения дочитать эту книгу, то вы узнаете, что выдаваемое при загрузке сообщение при желании можно изменить, так что будет выдаваться что-нибудь вроде "Привет, дружище! Сегодня 11 ноября 2001 года. Сейчас 19 часов 22 минуты. Введи, пожалуйста, свое имя и пароль". Однако пока рано говорить о том, как это делается.

Если вы загружались с дискеты, то загрузка происходит точно также, только чуть медленнее.

Если Linux не единственная ОС на вашем компьютере, и вы используете LILO для организации многовариантной загрузки, то в тот момент, когда на экране появится надпись LILO boot: вы должны нажать клавишу ‹Tab› или ‹?›. Тогда LILO выдаст вам список меток, которые сопоставлены разным ОС. В версии 21 LILO уже автоматически выводит этот список на экран в виде меню. Необходимо выбрать из меню или ввести (набрать на клавиатуре) одну из этих меток и нажать клавишу ‹Enter›. Если вы выберете метку, соответствующую Linux, то в конце концов вы все равно должны увидеть слово login:, которое в данном случае служит приглашением к вводу вашего пользовательского имени.

3.2. Вход в систему

Как вы понимаете, в ответ на это приглашение необходимо ввести имя пользователя, а потом, по запросу, и пароль для входа в систему. Если это первый вход в систему после ее установки, то входить надо под именем ""root"". Это единственный пользователь, для которого обязательно заводится счет или бюджет (account) во время инсталляции. Этот пользователь является полным хозяином системы (как сейчас, так и в последующем), то есть имеет неограниченный доступ к ее ресурсам, может заводить и удалять других пользователей, останавливать систему и т. д. Неосторожное поведение пользователя с такими правами легко может привести к печальным последствиям, вплоть до полного краха системы. Поэтому обычно под этим именем входят в систему только для выполнения административных задач. Но у нас сейчас как раз такой случай, так что в ответ на приглашение login: вводим "root" и нажимаем клавишу ‹Enter› (или ‹Return›). Система выдаст запрос на ввод пароля:

Очевидно, что в ответ надо вводить пароль того пользователя, имя которого было введено ранее. При первой загрузке надо ввести тот пароль, которой был задан для пользователя root в процессе инсталляции, и нажать ‹Enter›. Заметим, что если после ввода имени очень долго не вводить пароль, то система снова вернется к запросу имени пользователя. После ввода пароля вы увидите примерно такую надпись:

Такая строка называется приглашением. Появление приглашения означает, что система готова воспринять и выполнить вашу команду. Сейчас это свидетельствует о том, что вы успешно вошли в систему. Вы видите черный экран и приглашение системы к вводу команды - то, что в MS-DOS или Windows принято называть режимом командной строки. Мы будем называть этот режим текстовым (в отличие от графического режима, предоставляемого системой X Window).

В приведенном примере приглашение включает в себя указание имени пользователя (root), имени системы (localhost) и тукущего каталога (/root). Вид приглашения тоже можно изменить. Во всех последующих примерах мы будем использовать приглашение, состоящее только из имени пользователя.

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

Первая команда, которую стоит ввести - команда useradd. После имени команды надо ввести пробел и имя пользователя, например, jim:

После этого система будет знать о существовании пользователя jim (говорят, будет "открыт счет для пользователя jim"). Однако войти в систему (или, как обычно говорят, "логироваться") под этим именем еще невозможно. Для того, чтобы система разрешила работать пользователю с именем jim, надо задать ему пароль. Для этого вводим команду

Появится строка

Вводите пароль. После того, как вы завершите ввод нажатием клавиши ‹Enter›, система попросит ввести его повторно:

Если вы не ошиблись при вводе (пароль приходится вводить "вслепую", поскольку он не отображается на экране), появится сообщение: passwd: all authentication tokens updated successfully и приглашение системы. Если вы выбрали пароль не очень удачно (слишком короткий или простой), вам будет выдано предупреждение, но система все равно примет пароль и позволит новому пользователю входить с ним в систему.

Таким образом, вы познакомились с первыми двумя командами системы Linux: useradd и passwd. Следующая команда, о которой нужно знать каждому пользователю любой UNIX-системы - это команда man. Команда man - это система встроенной помощи системы Linux. Вводить ее надо с параметром - именем другой команды или ключевым словом, например,

В ответ вы получите описание соответствующей команды или информацию по теме, обозначенной ключевым словом. Поскольку информация обычно не помещается на одном экране, при просмотре можно пользоваться клавишами ‹PageUp› и ‹PageDown›, а также клавишей пробела. Нажатие клавиши ‹Q› в любой момент приводит к выходу из режима просмотра и возврату в режим ввода команд. Попробуйте просмотреть информацию по рассмотренным уже командам login и passwd. Заметим, что точно также можно получить информацию по самой команде man. Введите

К сожалению, в большинстве случаев информация выдается по-английски. Если вы не читаете по-английски, то терпеливо читайте настоящее руководство или другую подходящую книгу по данной теме.

Вы можете попробовать вводить еще некоторые команды и понаблюдать за реакцией системы. Попробуйте, например, команды, перечисленные в табл. 3.1 (вводите их с приведенными в таблице параметрами).

Таблица 3.1. Простейшие команды Linux.

Команда Краткое описание
whoami Сообщает имя, с которым вы вошли в систему в данном сеансе работы
w или who Сообщает, какие пользователи работают в данный момент в системе
pwd Сообщает имя текущего каталога
ls -l Выдает список файлов и подкаталогов текущего каталога
cd ‹имя_каталога› Осуществляет смену текущего каталога
ps ax Выдает список выполняющихся процессов

Просмотрите описания этих команд с помощью команды man.

Мы не будем приводить здесь более подробный список возможных команд. Во-первых, с необходимыми командами можно будет постепенно познакомиться в ходе дальнейшего чтения. Во-вторых, описания основных команд можно найти в любой книге по UNIX.

3.3. Консоль, виртуальные терминалы и оболочка

Итак, вы приобрели первый опыт работы в текстовом, или "консольном", режиме системы Linux. Понятия "терминала" и "консоли", которые встретятся нам еще не раз, требуется, вероятно, дополнительно пояснить.

Когда создавалась система UNIX, компьютеры были большими (мейнфреймами), и пользователи работали на них через множество последовательных интерфейсов для подключения удаленных терминалов. Терминал - это устройство, которое предназначено для взаимодействия пользователя с компьютером и состоит из монитора и клавиатуры. К вашему персональному компьютеру наверняка не подключены удаленные терминалы, но есть клавиатура и монитор, которые и выполняют роль терминала пользователя (только в его состав добавилась мышь).

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

Поскольку в UNIX-системах обычно соблюдаются традиции, клавиатура и монитор персонального компьютера ведут себя так же, как ранее консоль. Преимущество такого решения состоит в том, что все старые программы, создававшиеся для администраторов UNIX, без проблем работают и на новом типе системной консоли.

Но, кроме консоли, Linux позволяет подключать к компьютеру и удаленные терминалы и, более того, обеспечивает возможность работы с несколькими виртуальными терминалами с одной консоли. Нажмите комбинацию клавиш ‹Ctrl›+‹Alt›+‹F2›. Вы снова увидите приглашение login:. Однако это не возврат к началу работы с системой - вы просто переключились в другой виртуальный терминал. Здесь вы можете зарегистрироваться под другим именем. Попробуйте войти в систему под именем только что заведенного пользователя. После этого нажмите комбинацию клавиш ‹Ctrl›+‹Alt›+‹F1›. Вы вернетесь к первому экрану. По умолчанию Red Hat Linux открывает при запуске 6 параллельных сеансов работы (виртуальных терминалов), и этим иногда очень удобно пользоваться. Для переключения между виртуальными терминалами используются комбинации ‹Ctrl›+‹Alt›+‹F1› - ‹Ctrl›+‹Alt›+‹F6›. (Заметим, что при работе в текстовом режиме тот же результат можно получить, используя комбинации ‹Alt›+‹F1› - ‹Alt›+‹F6›, однако в графическом режиме без клавиши ‹Ctrl› не обойтись, так что лучше сразу привыкать к комбинациям из 3 клавиш). Кстати, если в процессе работы вы забыли, в каком терминале находитесь в данный момент, воспользуйтесь командой tty, которая выводит имя терминала в следующем формате: /dev/tty2.

Сразу же скажем, что, если вы хотите завершить сеанс работы с системой в одном из терминалов, вы можете сделать это нажатием комбинации клавиш ‹Ctrl›+‹D›. Это не приведет ни к остановке работы компьютера, ни к перезагрузке системы. Не забывайте, что Linux - многозадачная и многопользовательская система. Завершение работы одного пользователя не означает, что надо выключать компьютер. Просто завершается сеанс работы одного из пользователей, и система снова выводит в данном терминале приглашение, которое вы уже видели. Можно завершить сеанс работы и введя одну из команд logout или exit.

Зная теперь как открыть и закрыть сеанс работы в системе, выполните приведенные выше рекомендации, т. е. заведите себя как рядового пользователя (без суперпользовательских прав), завершите все сеансы работы, открытые от имени root, и снова войдите в систему под своим новым именем.

Теперь надо сказать несколько слов об оболочке. Оболочка, или просто shell (это слово часто не переводят, а оставляют в английском написании), - это программа, которая осуществляет все общение с пользователем. Именно оболочка воспринимает все команды, вводимые пользователем с клавиатуры, и организует исполнение этих команд. Поэтому оболочку можно назвать еще командным процессором (более привычный термин для пользователя DOS, не правда ли?). Строго говоря, когда выше говорилось, например, "система выводит приглашение", это неправильно, поскольку приглашение выводит именно оболочка, ожидая ввода пользователем очередной команды. Каждый раз, когда очередной пользователь входит в систему, команда login запускает для него командный процессор - оболочку. Если вы логировались со второго терминала под именем пользователя jim (или под другим выбранным вами именем), то обратите теперь внимание на различие в приглашениях у пользователей root и jim. У пользователя root приглашение оканчивается символом #, а у всех остальных пользователей - символом $.

Оболочку может запускать не только команда login. Вы можете просто ввести команду bash (именно так называется программа-оболочка в системе Red Hat Linux) и тем самым запустить новый экземпляр оболочки. Выходя из него (по команде exit или по комбинации клавиш ‹Ctrl ›+‹ D›) вы вернетесь к предыдущему экземпляру оболочки.

Оболочка bash является не только командным процессором, но и мощным языком программирования. В ней имеется целый ряд встроенных (внутренних) команд и операторов, а, кроме того, в качестве команды может использоваться любая программа, хранящаяся в виде файла на диске. Список встроенных команд можно получить по команде help. Попробуйте! Детальную информацию по конкретной встроенной команде выдает та же команда help с указанием в качестве параметра имени встроенной команды, например: help cd.

Поскольку оболочка играет очень важную роль в Linux, ей будет посвящена отдельная глава этой книги. Впрочем, аналогичный материал вы найдете в любой книге по UNIX. Стоит только отметить, что для UNIX-подобных систем разработано несколько альтернативных bash оболочек. Их можно использовать и в Linux, но по умолчанию запускается именно bash.

Рассмотрим теперь еще одну команду, которую вам необходимо знать, поскольку все же компьютер у вас персональный (неважно, дома ли это происходит, или на работе). А это значит, что вы и есть суперпользователь данного компьютера. Но, как уже было сказано выше, входить в систему под именем суперпользователя не рекомендуется, поскольку любое неосторожное действие суперпользователя может привести к нежелательным последствиям. Входя под именем простого пользователя, вы, по крайней мере, не можете по неосторожности удалить или испортить системные файлы. В то же время, имеется ряд действий (например, монтирование файловых систем), выполнить которые может только суперпользователь. Не перезагружать же каждый раз компьютер! Именно в таких ситуациях выручает команда su. Достаточно ввести команду su и текущая оболочка (так и хочется сказать "система") запустит для вас новый экземпляр оболочки, в который вы попадете уже с правами пользователя root. Естественно, что для этого вам придется (в ответ на соответствующий запрос) ввести пароль этого пользователя. Закончив выполнять администраторские действия, выйдите из оболочки, и вы снова станете непривилегированным пользователем с отведенными ему полномочиями.

Если вы вошли в систему под именем root, то вы можете аналогичным образом запустить новый экземпляр оболочки от имени любого пользователя, пароль которого вы знаете . Но для этого надо указать имя этого пользователя в командной строке, например:

Когда мы вводим su без указания имени, по умолчанию подставляется имя суперпользователя root.

Но в ОС Linux есть еще одна возможность временно переключаться в бюджет пользователя root для выполнения административных функций. Вспомните, что Linux - это многопользовательская система, в ней одновременно могут работать несколько пользователей. Поэтому в первом виртуальном терминале можно войти под именем root, а в любом другом терминале - под именем простого пользователя. Основную работу вы можете выполнять как простой пользователь, а когда потребуется выполнить административные функции, вы "зовете системного администратора". Для этого достаточно нажать ‹Ctrl›+‹Alt›+‹F1› - и системный администратор уже тут. По завершении операции, которую может выполнить только суперпользователь, вы немедленно должны вернуться в бюджет простого пользователя. В таком случае вы не рискуете нарушить что-либо в системе, пока еще не набрались необходимого опыта.

3.4. Редактирование командной строки. История команд

В предыдущих разделах вам было предложено выполнить несколько команд ОС Linux. Полагаю, что, если в процессе набора возникали ошибки, вы сами догадались, как их исправить. Тем не менее будет полезно привести для справки короткую сводку команд, позволяющих редактировать командную строку, а также вообще оказывать какое-то влияние на поведение оболочки с помощью клавиатуры (о мышке разговор отдельный).

Примечание . Приводимые ниже описания команд относятся к оболочке GNU bash версии 1.14.7(1). Думается, что они будут верны и для последующих версий этой оболочки.

Таблица 3.2. Клавиши редактирования командной строки

Клавиша Описание реакции системы
‹Стрелка вправо› или ‹Ctrl›+‹F› Перемещение вправо по командной строке в пределах уже набранной цепочки символов плюс один символ справа (место для ввода следующего символа)
‹Стрелка влево› или ‹Ctrl›+‹B› Перемещение на один символ влево
‹Esc›+‹F› Перемещение на одно слово вправо
‹Esc›+‹B› Перемещение на одно слово влево
‹Home› или ‹Ctrl›+‹A› Перемещение в начало набранной цепочки символов
‹End› или ‹Ctrl›+‹E› Перемещение в начало/конец набранной цепочки символов
‹Del› или ‹Ctrl›+‹D› Удаление символа, на который показывает курсор
‹Backspase› Удаление символа в позиции, предшествующей курсору
‹Ctrl›+‹K› Удалить правую часть строки, начиная с символа, на который указывает курсор
‹Ctrl›+‹U› Удалить левую часть строки, включая символ, который находится слева от курсора
‹Enter› или ‹Ctrl›+‹M› Запуск на выполнение команды, определяемой набранной цепочкой символов
‹Ctrl›+‹L› Очистить экран и поместить текущую команду в верхней строке экрана
‹Ctrl›+‹T› Поменять местами два символа: символ, на который показывает курсор, и символ слева от курсора, затем, курсор переместить на один символ вправо
‹Esc›+‹T› Поменять местами два слова: слово, на которое указывает курсор и слово слева от первого
‹Ctrl›+‹K› Вырезать часть строки от текущей позиции курсора до конца строки (вырезанная часть строки сохраняется в буфере, ее можно вставить в другое место строки)
‹Esc›+‹D› Вырезать часть строки от текущей позиции курсора до конца текущего слова (если курсор указывает на пробел между словами, то вырезается все слово справа от курсора)
‹Esc›+‹Del› Вырезать часть строки от текущей позиции курсора до начала текущего слова (если курсор указывает на пробел между словами, то вырезается все слово слева от курсора)
‹Ctrl›+‹W› Вырезать часть строки от текущей позиции курсора до предыдущего пробела
‹Ctrl›+‹Y› Вставить последний вырезанный текст в позицию курсора
‹Esc›+‹C› Символ, на который указывает курсор, заменить на тот же, но заглавный, а курсор переместить на первый пробел справа от текущего слова
‹Esc›+‹U› Сделать символы данного слова заглавными, начиная с символа, на который указывает курсор, а курсор установить на пробел справа от слова
‹Esc›+‹L› Превратить символы, начиная с символа, на который указывает курсор, до конца данного слова в прописные (маленькие) буквы, а курсор установить на пробел справа от слова
‹Shift›+‹PgUp› ‹Shift›+‹PgDown› Эти команды позволяют просмотреть несколько страниц экранного вывода (количество зависит от размера видеопамяти); полезны в тех случаях, когда та или иная команда выводит на экран очень много информации, быстро пробегающей по экрану и как бы исчезающей для пользователя; как видите, эта информация не пропадает
‹Ctrl›+‹C› Прервать выполнение запущенной команды
‹Ctrl›+‹D› Выход из оболочки bash

Примечание . Если вы работаете не просто в оболочке bash, а запустили программу Midnight Commander, то такие клавиши как ‹Стрелка вправо›, ‹Стрелка влево›, ‹Home›, ‹End›, ‹Del› не могут использоваться так, как указано в приведенной таблице, поскольку они используются для перемещения подсветки в текущей панели . Но указанные выше в скобках комбинации символьных клавиш с клавишами ‹Ctrl› и ‹Esc› по-прежнему действуют для редактирования командной строки.

Список возможных команд не ограничивается только приведенными в табл. 3.2, но из-за ограниченности объема книги невозможно привести здесь полный перечень клавиатурных команд. Для получения дополнительной информации воспользуйтесь командой info bash.

Заметим, что оболочка bash имеет встроенную подпрограмму, предназначенную для облегчения ввода команд в командной строке. Эта подпрограмма вызывается при двукратном нажатии клавиши ‹Tab› после того, как вы уже ввели некоторое число символов. Если эти символы являются началом названия одной из стандартных команд, которые известны оболочке, то возможны два варианта реакции оболочки на двукратное нажатие клавиши ‹Tab›. Если по введенным символам команда определяется однозначно, оболочка просто добавляет окончание команды в командную строку. Если однозначно восстановить имя команды по введенным символам невозможно, то выдается список возможных вариантов продолжения для того, чтобы пользователь мог ввести еще несколько символов, позволяющих однозначно завершить ввод команды нажатием клавиши ‹Tab›.

Если вы попробуете дважды ввести символ табуляции в пустой командной строке, то после первого ввода вы получите только звуковой сигнал, а после второго - примерно следующее сообщение: "There are 1217 possibilities. Do you really wish to see them all? (y or n)" ("Возможны 1217 вариантов завершения. Вы действительно хотите увидеть их все?").

Если дважды нажать клавишу табуляции после того, как введена одна из команд и пробел, оболочка предполагает, что вы ищете имя файла, который должен вводиться как параметр команды, и выдает в качестве подсказки список файлов текущего каталога. Если же достаточная часть имени файла введена, то заканчивается ввод этого имени в командную строку. Аналогичным образом можно пытаться угадывать окончания переменных окружения, если вместо клавиши ‹Tab› воспользоваться комбинацией ‹Esc›+‹$›.

Для практической работы с оболочкой также полезно знать, что оболочка запоминает некоторое число введенных команд (по умолчанию 1000, это значение задается в переменной HISTSIZE; см. гл. 5) и позволяет вызывать их путем выбора из списка - так называемой истории команд. Историю команд можно просмотреть, введя в командной строке history (здесь вы сможете воспользоваться комбинациями клавиш ‹Shift›+‹PgUp› и ‹Shift›+‹PgDown›, чтобы просмотреть то, что выдаст эта команда). История команд сохраняется в файле, определяемом переменной HISTFILE (обычно $HOME/.bash_history). Для работы с историей команд в оболочке bash используются следующие комбинации клавиш.

Таблица 3.3. Клавиши для управления историей команд.

Клавиша Описание реакции системы
‹Стрелка вверх› или ‹Ctrl›+‹P› Переход к предыдущей команде в списке (движение назад по списку)
‹Стрелка вниз› или ‹Ctrl›+‹N› Переход к следующей команде в списке (движение вперед по списку)
‹PgUp› Переход к (вызов в командную строку) самой первой команде, сохраненной в истории команд
‹!›, ‹N› Выполняется (без нажатия клавиши ‹Enter›) n-ная команда из списка истории команд
‹!›, ‹-›, ‹N› Выполняется n-ая от конца списка команда
‹!›, строка символов Выполняется команда, имя которой начинается на строку символов (поиск нужной команды осуществляется движением в обратном порядке от конца файла истории и выполняется первая попавшаяся команда, которая начинается на строку символов)
‹Ctrl›+‹O› То же что нажатие клавиши ‹Enter›, затем отображается очередная команда из файла истории

3.5. Завершение работы системы Linux

Хотя компьютер, работающий под управлением ОС Linux, при выполнении некоторых условий можно оставлять работающим круглосуточно, большинство пользователей персональных компьютеров привыкли выключать их после завершения работы. Если вы работаете с ОС Linux, нельзя выключать компьютер простым отключением питания, как это было под MS-DOS. Дело в том, что в любой момент времени в системе запущено несколько процессов, вы могли видеть это, когда выполняли команду

(и можете посмотреть еще раз, повторив запуск этой команды). Но более важная причина состоит в том, что некоторые из этих процессов могут работать с файлами, причем система не записывает все изменения файлов на диск сразу после внесения этих изменений пользователем или процессом, а сохраняет их временно в оперативной памяти (кэширует). Если просто выключить питание, эти изменения не будут сохранены и пропадут, что иногда может привести даже к невозможности последующей загрузки системы. Так что надо уметь правильно завершить работу системы перед выключением компьютера. Это делается командой shutdown.

Команда shutdown может быть выполнена только пользователем root , так что вы либо должны были войти в систему под этим именем, либо должны предварительно выполнить команду su, чтобы приобрести соответствующие права.

Команда shutdown имеет следующий синтаксис:

# shutdown ‹options› ‹time› ‹warning-massage›

Замечание

Существует некоторая вероятность того, что запустив команду, вы получите ответ "command not found". Это значит, что оболочка не знает, где находится файл программы. В таком случае вам необходимо ввести команду с указанием полного пути, в данном случае в виде /sbin/shutdown -h, поскольку для команды shutdown файл программы лежит в каталоге /sbin.

Из опций программы shutdown наиболее часто используются две:

H - полная остановка системы (компьютер будет выключен);

R - перезагрузить систему.

Параметр time указывает время, когда должна быть выполнена команда (не обязательно выполнять ее немедленно). Время можно указать в форме задержки от текущего момента. Например, если вы хотите, чтобы система остановилась через 5 минут, вводите команду

что будет означать "остановить систему через 5 минут и перезагрузиться после того, как работа будет корректно завершена"". Для вас пока наиболее актуальной формой этой команды будет, скорее всего,

когда вы захотите просто выключить компьютер. Эквивалентом команды

является команда halt. При нажатии известной комбинации клавиш ‹Ctrl›+‹Alt›+‹Del› в Red Hat Linux выполняются действия, аналогичные команде

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

3.6. Помощь по работе с Linux

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

Если вы окажетесь в ситуации, когда не знаете, что предпринять или сделать для достижения желаемой цели, лучше всего начать искать подсказку в самой системе. Дистрибутив Red Hat Linux содержит тысячи страниц документации, представленной в электронном виде, так что ответы на все возникающие вопросы у вас, что называется, "на кончиках пальцев". Существует несколько независимых источников, которые содержат информацию почти по любому аспекту работы в системе Linux:

Страницы интерактивного руководства man;

Гипертекстовое руководство info;

Документация, прилагаемая к пакетам ПО;

Текстовые файлы HOWTO и FAQ проекта Linux Documentation Project;

Команда locate.

Необходимо сразу сказать, что большую часть информации из этих источников вы будете получать на английском языке. Только для русифицированных дистрибутивов часть страниц интерактивного руководства man выдается на русском языке. Можно дополнительно скачать из Интернета имеющиеся там страницы руководства man, переведенные на русский язык [П5.1], и разместить их в соответствующих каталогах. Но все равно, на русский переведено далеко не все. Учитывая это замечание, рассмотрим каждый из перечисленных выше источников информации подробнее.

3.6.2. Страницы интерактивного руководства man

Выше уже было вкратце рассказано о команде man, с помощью которой пользователь всегда может в затруднительной ситуации получить подсказку почти по любой команде системы, форматах файлов и системных вызовах. Это основной способ получения подсказки во всех UNIX-системах. Страницы руководства man в Linux делятся на следующие секции:

Таблица 3.4. Основные секции интерактивного руководства man

Секция Содержание
1 Команды пользователя
8 Системные команды
2 Системные вызовы
3 Библиотечные вызовы (подпрограммы)
4 Устройства
5 Форматы файлов
6 Игры
7 Разное
9 Ядро (kernel internals)
n Tcl/Tk commands

Порядок перечисления секций в этой таблице не случаен. Дело в том, что файлы с информацией расположены в подкаталогах каталога /usr/man и команда man ищет нужную информацию, просматривая эти подкаталоги именно в том порядке, который приведен табл. 3.4. Если вы, например, дадите команду

то получите справку о команде swapon из секции 8. Поэтому если вы хотите получить справку по системному вызову swapon, надо дать команду

указывая номер секции, в которой надо искать информацию.

Страницы man просматриваются с помощью команды less (что дает возможность просматривать информацию поэкранно и перемещаться по этим экранам вперед и назад), так что для управления процессом вывода информации можно использовать клавиши, используемые в программе less. Наиболее употребительные:

Таблица 3.5. Клавиатурные команды, используемые при просмотре man-страниц

Клавиша Назначение
‹Q› Выход из программы
‹Enter› Просмотр строка за строкой
‹Space› Вывод следующего экрана информации
‹B›

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

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

Друзья и знакомые линуксоиды

Самый простой и очевидный способ знакомства с линуксом. Если у вас есть знакомые линуксоиды, попросите их показать вам эту операционную систему и объяснить что к чему. И вообще, первое время пользования линуксом очень полезно иметь под рукой человека который сможет ответить на ваши вопросы. А учитывая приверженность основной массы линуксоидов к открытому ПО и ненависть к windows/apple, вероятность получить отказ крайне мала.

LiveCD или LiveUSB

Еще один способ посмотреть на возможности линукса - записать образ livecd на диск или liveusb на флэшку и загрузиться с нее. На данный момент существует множество дистрибутивов способных работать без установки на компьютер (с загрузочной флэшки или livecd). Все популярные дистрибутивы (gentoo, ubuntu, debian…) есть в варианте для загрузочной флэшки или в виде образа livecd.

Кроме того, существует куча livecd-only дистрибутивов. Большинство из них основана на пакетной базе популярных дистрибутивов (gentoo, debian, redhat…). Некоторые из них собираются для определенной цели, например, для восстановления системы (такие дистрибутивы включают утилиты для работы с файловыми системами и прочие полезные вещи). Существуют даже загрузочные livecd для геймеров с набором различных игр.

Стоит отметить, что на компьютерах с небольшим объемом оперативной памяти livecd и liveusb дистрибутивы работают медленно. Немного ускорить работу в таких случаях можно выбрав при загрузке легкий DE (desktop environment - среда рабочего стола): openbox, lxde, xfce4; или вообще отказавшись от графики и загружая только в текстовом режиме.

Ознакомиться с полным списком live-дистрибутивов можно на сайте distrowatch.com .

Wubi (ubuntu на windows)

Wubi (Windows-based Ubuntu Installer) - официальный свободный установщик Ubuntu Linux, предназначенный для запуска в операционных системах семейства Windows, лицензированный под GPL. С помощью Wubi пользователи Windows могут устанавливать и удалять Ubuntu как обыкновенную Windows-программу.()

Виртуальная машина

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

Наиболее известны следующие виртуальные машины: VirtualBox , VMware Player , Virtual PC

Инструкции по запуску операционной системы внутри виртуальной машины смотрите в документации на официальных сайтах.

Удаленный доступ к машине с линуксом

Можно попробовать раздобыть учетную запись на какой-нибудь linux-машине с возможностью подключения по ssh. Попросить друзей, админа на работе, учителя информатики в школе/институте или поискать халявы . Многие интернет-провайдеры по запросу выделяют пользователям своей сети немного места на сервере под домашнюю веб-страничку и дают доступ по ssh.

Для подключения к удаленной linux-машине по ssh из windows могу порекомендовать программу putty .

Есть еще вариант с покупкой сервера/vds/shared-хостинга с возможностью доступа по ssh. Но это для случая когда вам хочется не просто посмотреть, а сделать что-нибудь посерьезнее.

Cygwin

Если вы пользователь Windows и вам не нужна графическая linux-среда, можно воспользоваться эмулятором Cygwin . Если иксы все же нужны, можно попробовать установить порт X Window System на Windows - Cygwin/X (сам я его не пробовал и поэтому ничего конкретного сказать не могу).

Cygwin это не linux или unix. Он представляет собой инструмент для портирования ПО UNIX в Windows и реализован в виде в библиотеки, которая реализует интерфейс прикладного программирования POSIX на основе системных вызовов Win32. Кроме того, Cygwin включает в себя инструменты разработки GNU для выполнения основных задач программирования, а также и некоторые прикладные программы, эквивалентные базовым программам UNIX.

Простым языком: для запуска shell-скриптов и написания программ (есть gcc) его вполне хватит.