Тнт
Тнт онлайн канал тнт.
www.adigz.com

Основы работы в Linux. (По заявкам читателей) Часть 1

1 Star2 Stars3 Stars4 Stars5 Stars (голосов 1, среднее: 5,00 из 5)

 После того, как вы установили Linux, возникают некоторые вопросы при попытке выполнения привычных задач: Что представляет из себя имя файла, как запустить программу, выключить компьютер, установить PATH, добавлять и удалять пользователей, увеличить безопасность системы, устанавливать права доступа к файлам, управлять автоматическими заданиями с помощью "at" и "cron", изменять приглашение оболочки, печатать символы в текстовом режиме, использовать цвет в текстовом режиме, переназначать ввод/выход, написать простой shell-скрипт, устанавливать новые программы…

 


ЧАСТЬ ПЕРВАЯ

1. Имена файлов

Linux чувствителен к регистру. Например, myfile, Myfile, и myFILE — это три разных файла. Ваш пароль и логин также чувствительны к регистру. (Причиной этого является то, что и UNIX и язык "c" регистрозависимы.) Требования к именам файлов и каталогов идентичны.
Все файлы и каталоги, которые я создаю (для себя, как пользователя) записаны в нижнем регистре, за исключением некоторых особенных причин. Большинство команд Linux также пишутся в нижнем регистре.

Имена файлов в Linux могут быть длиной до 256 символов и они обычно содержат буквы, числа, "." (точки), "_" (подчеркивания) и "-" (тире). Другие символы не рекомендуются, хотя и допустимы. В частности, не рекомендуется использовать специальные метасимволы: "*" (звездочка), "?" (вопросительный знак), " " (пробел), "$" (знак доллара), "&" (амперсанд), любые скобки, и т.д. Это так, потому что метасимволы имеют специальное значение для процессора команд Linux (это — то же, что и COMMAND.COM в DOS). Возможно применять пробел в имени файла, но мы не рекомендуем вам это делать — вместо него лучше использовать "_" (подчеркивание).

Нельзя использовать '/' (слэш) как часть имени, потому что '/' используется, как вершина дерева каталогов и как разделитель в полной спецификации
файла (то же, что и '' в DOS). Я не могу дать имя файлу "." или ".." (одна или две точки) — это означает текущий и родительский каталог соответственно, как и в DOS.

Ниже описаны некоторые из метасимволов:

* = Означает любую последовательность от 0 и более символов за исключением "." (точки) в начале имени файла.
? = Означает любой один символ.
[abC1] = Означает одиночный символ из заданной последовательности. В заданном примере множество символов состоит из: 'a', 'b', 'C', и '1'.
[a-z] = Означает любую букву в нижнем регистре.
[A-F] = Означает любой символ в верхнем регистре от A до F.
[0-9] = Означает любую одиночную цифру.
[a-zA-Z0-9] = Означает любую букву (в нижнем или верхнем регистре) или цифру.
Символ "" (бэкслэш) также является метасимволом. Он придает метасимволу значение обычного символа.

Примеры. Эта команда выводит список всех файлов в текущем каталоге, исключая файлы, которые начинаются с "." (точки): 

1.             ls *

 Эквивалентом этой команды является команда ls или dir (без "*"). Файлы с именами, начинающиеся с ".", не будут показаны, так как первый символ "." в имени файла не включен в спецификацию метасимвола "*". Файлы, начинающиеся с ".", эквивалентны скрытым файлам DOS. Используйте
ls -a (список с опцией "all") или ls .* для просмотра этих "точка"-файлов. Файлы с точкой в начале имени находятся обычно в домашнем каталоге пользователя и используются для хранения настроек данного пользователя.

Эта команда выводит все файлы в текущем каталоге, которые содержат "." (точку):

1.             ls *.*

Эта команда выводит список файлов, содержащих две точки:

1.             ls *.*.*

Заметим, что в Linux отсутствует "тип файла" как в DOS, но вы можете использовать его. Например, я могу иметь файл с именем my_text.txt.zip. Некоторые
другие особенности именования файлов DOS-типов вообще отсутствуют (к примеру "Micros~1.doc").

Эта команда найдет (во всей файловой системе) любой файл с типом "htm", следующим за одним и более символом:
locate *.htm?

Эта команда покажет все файлы в текущем каталоге, которые начинаются с символа "a" или "b", или любого прописной буквы:

1.             ls [abA-Z]*

Эта команда выведет список файлов, начинающихся с "a" и заканчивающихся на "n"
ls a*n

Автозавершение командной строки. Это отличная особенность — я использую клавишу [Tab] для уменьшения количества набранных символов. Это ускоряет
ввод длинных и сложных команд / имен файлов. Например, ввести такое имя файла не проблематично, если я использую автозавершение: dir Eurosong 2000 Olson BrothersFly on the wings of love (denmark).mp3 я только набираю dir Eu<Tab> и если нет другого файла начинающегося с "Eu", остальная часть имени файла автоматически заполняется за меня. В противном случае, я посмотрю на то, что напечатано за меня и наберу еще один или два символа для уточнения имени файла. В примере символ "" (бэкслэш) указывает на то, что пробелы — это обычные символы, являющиеся частью имени файла, а не разделитель имен.

Проблемы со странными именами файлов.
Большинство этих проблем разрешаются автозавершением . В дополнение, для управления файлами с именами, которые содержат метасимволы, я могу использовать ' ' (пару апострофов), так, что метасимволы закавычены и поэтому интерпретатор воспринимает их как обычные символы. Например, для переименования файла my file* (содержащего пробел и звездочку), я пишу:
mv 'my file*' filename_without_weird_characters.txt

Заметьте, что я использовал пару ' (апострофов) для закавычивания. Если мы используем пару " " (кавычек) в общем случае это будет менее эффективно,
чем использовать апострофы. Если вы используете " (кавычку), то некоторые метасимволы могут быть восприняты. Следуя традиции UNIX, в Linux можно создать файлы с именами, содержащими любой символ, включая непечатные (управляющие) символы. Это бывает очень редко, но если вы встретили такой файл, вы действительно почувствуете себя жутко. Я переименовываю такие файлы, используя аккуратно позиционированный метасимвол. Я использую сначала команду ls для проверки своего действия, чтобы убедиться в том, что это действительно требуемый файл, который я переименовываю:
ls -l myfile*y.html
mv myfile*y.html myfile.html

В качестве примера возможного столкновения с такой проблемой, когда используются нерекомендованные символы в имени файла, попробуйте создать файл с именем начинающимся с "-"(тире) и затем удалите его — кажется, что нет возможности выполнить это (потому что "-" обычно предваряет опцию команды). Такая команда dir > -junk создаст такой забавный файл (как и в DOS, символ ">" перенаправляет вывод из команды dir в файл с именем -junk). Теперь обычный способ удаления файла -junk не работает, поэтому я использую:

1.             rm ./-junk

Символы "./" в начале означает "текущий каталог", и они здесь необходимы для сокрытия лидирующего тире, чтобы команда rm не воспринимала junk как опцию.

Лучше все-таки выполнять соглашения об именах, чем сталкиваться с такими осложнениями. Кроме автозавершения, апострофов и кавычек, я могу манипулировать именами файлов, содержащие такие символы, используя "" (бэкслэш). Например, я могу создать файл с именем *?[ используя команду:
touch *?[ (Команда touch создает пустой файл или, если файл существует, заменяет его дату/время последней модификации.)

2. Для чего нужны другие каталоги?

Ответ на этот вопрос отлично изложен в Руководстве Системного Администратора (SAG), который доступен в вашей системе . Чтобы ознакомиться с ним, выполните команды:

1.             cd /usr/doc/LDP/sag
2.             lynx sag.html

Они запустят вам текстовый броузер "lynx" для просмотра этой книги в формате html. Вы можете также использовать любой другой броузер, такой как Mozilla, для просмотра этой книги.

Если описать всё очень коротко, Linux содержит пять файловых систем. Эти файловые системы могут находиться на одном или разных физических дисках и/или дисковых разделах, в зависимости от размеров и требований вашей системы. (Одна файловая система может также быть распределена между разными физическими устройствами, если это необходимо.)

Файловая система root "/" ("корневая")
содержит базовую операционную систему и инструменты для ее поддержки. Содержание этой файловой системы достаточно для старта и выполняет аварийное сохранение и восстановление в случае необходимости.

Файловая система /usr
содержит все команды, библиотеки, документацию, и другие файлы, которые не изменяются в течение нормальной работы. Она содержит также важные приложения, которые вы получаете вместе с дистрибутивами, например Mozilla.

Файловая система /var
содержит файлы, которые изменяются: каталоги спулинга, файлы журналов, файлы блокировки, временные файлы и форматные страницы руководств (маны).

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

Файловая система /proc
содержит только файлы-призраки. Они в действительности не существуют на диске и не занимают пространства на нем (хотя команда
ls
-
l покажет их размер). Когда вы просматриваете их, в действительности вы получаете доступ к информации, расположенной в памяти. Они используются для доступа к информации о системе.

Частями корневой файловой системы являются:

/bin — исполняемые (двоичные) файлы, требуемые при загрузке, которые могут быть использованы обычными пользователями.
/sbin — исполняемые (системные двоичные) файлы, не предназначенные для использования обычными пользователями (пользователи могут использовать их, но эти каталоги не включены в их пути по умолчанию PATH — путь, читается "пас").
/etc — файлы конфигурации системного уровня вашей операционной системы.
/root — домашний каталог системного администратора (называемого суперпользователем или root).
/dev — файлы устройств. Устройства представлены в Linux, как файлы, поэтому записывать в них и читать из них — очень просто.
/mnt — точки монтирования для сменных устройств (флоппи-диски, cdrom, zip-диски), разделы других операционных систем (например MS Windows), сетевые диски, и что-нибудь еще, что смонтировано к файловой системе временно. Он обычно содержит отдельный каталог для каждого смонтированного ресурса. Содержимое этих устройств/ресурсов появляется в этих каталогах — буквы устройств в Linux отсутствуют.
/lib — общие библиотеки для программ, которые размещены в файловой системе root и модулях ядра.
/boot — файлы, используемые мультзагрузчиком (LILO или GRUB) — программа, позволяющая вам после загрузки компьютера выбрать, какую операционную систему загрузить, если у вас на компьютере имеется более одной операционной системы. Этот каталог обычно содержит и ядро Linux (сжатый файл vmlinuz), но оно может быть расположено в другом месте, если LILO настроен так, что он знает об этом.
/opt — дополнительные приложения, например, kde для RedHat 5.2 (для RedHat 6.0, kde входит в X window system и основные исполняемые файлы находятся в директории /usr/bin).
/tmp — временные файлы. Этот каталог можно очищать автоматически.
/lost+found — файлы, восстановленные при проверке файловой системы.

Наиболее интересные части файловой системы /usr указаны ниже:

/usr/X11R6 — система X-windows (версия 11, реализация 6).
/usr/X11 — то, что и /usr/X11R6 (это символическая ссылка на /usr/X11R6).
/usr/X11R6/bin — куча маленьких X-windows приложений, и возможно символических ссылок на исполняемые файлы некоторых больших приложений для
X-windows, которые расположены в собственном подкаталоге где-нибудь в другом месте).
/usr/doc — документация Linux (на более новых системах она перемещена в /usr/share/doc).
/usr/share — данные, независимые от архитектуры вашего компьютера — например, словарь.
/usr/bin и /usr/sbin — схожие со своим эквивалентом в файловой системе root (/bin и /sbin), но не обязательные для основной загрузки (например, во время аварийного сохранения). Большинство команд находятся здесь.
/usr/local — приложения, установленные администратором (возможно, каждое приложение расположено в отдельном каталоге). После "основной" установки системы, этот каталог пуст. Содержимое этого каталога переживет обычную переустановку или обновление операционной системы.
/usr/local/bin — содержит небольшие исполняемые файлы, установленные пользователем, плюс символические ссылки на более крупные исполняемые файлы содержащиеся в отдельных подкаталогах каталога /usr/local.

Важно понять, что все каталоги появляются в едином дереве каталогов, даже если каталоги содержат различные разделы, физические (включая флоппи и др.), или даже если они распределены в сети . Поэтому в Linux и отсутствуют "буквы дисков" как в DOS. То, что является устройством в DOS или MS Windows, появляется как каталог в Linux. Система каталогов является стандартной в большинстве дистрибутивов Linux
(в настоящее время небольшие отличия имеются в Linux Standard Base). Это также верно для многих коммерческих систем UNIX.

Дополнительно о файловой системе /proc (только для серьезных читателей).

Псевдо-файловая система /proc является резидентной файловой системой реального времени, в которой отражаются статус ядра операционной системы и процессов, выполняемых на вашем компьютере. Псевдо-файловая система /proc является полностью виртуальной, т.е. она не присутствует ни на одном из обычных дисков или другом устройстве хранения данных, она существует только в памяти компьютера, и она постоянно обновляется для отображения любых изменений вашей системы.
Размер каталога /proc всегда равен нулю и дата последней модификации равна текущей дате.В некоторых случаях возможно изменить установки вашей системы, изменив вручную содержимое файлов в файловой системе /proc. Многие утилиты Linux используют файловую систему /proc как источник информации для своего действия — например, dmesg, ps и top.

Содержимое файловой системы /proc.

Каталоги с "цифровыми" именами, такие как "1" "170" "4908" являются идентификаторами процессов запущенных на вашем компьютере. Каждый каталог содержит несколько файлов, напр.,: cmdline (содержит полную команду, с помощью которой был запущен этот процесс), cwd (символическая ссылка на cwd процесса), environ (переменные окружения определенные для этого процесса в в виде ПЕРЕМЕННАЯ=значение), exe (символическая ссылка на исполняемый файл, к которому присоединен текущий процесс), fd (список файловых дескрипторов, открытых процессом), maps (именованный канал, который может быть использован для доступа к памяти процесса), root (симовлическая ссылка к каталогу, который является корнем для обычного процесса), stat (информация о статусе процесса).

Другие файлы в системе /proc:

/proc/cpuinfo — информация о процессоре, такой как тип, производитель, модель и представление.
/proc/devices — список устройств настроенных в текущем ядре.
/proc/dmaDMA каналы используемые в данный момент.
/proc/filesystems — типы файловых систем, скофигурированных в ядре.
/proc/interrupts — используемые прерывания, и как много их может быть.
/proc/ioports — порты ввода/вывода используемые в данный момент.

Например,я могу прочитать информацию о процессоре в моей системе, используя следующую команду:
cat /proc/cpuinfo.

3. Как я смогу запускать программы на выполнение?

Вы набрали имя исполняемого файла в командной строке и нажали Enter, но программа не запускается? Здесь может быть три причины.

Первая: вы некорректно набрали имя файла. Проверьте регистр — Linux чувствителен к нему! Например, если набрать "Pico" или "PICO", то редактор pico не запустится.

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

1.             cd the_program_directory
2.             ./program_name

вы должны расположить точку и слэш впереди имени файла или программа не будет исполнена. (Это — особенность запуска, относящаяся к безопасности системы: не включать текущий каталог в путь по умолчанию. Это создает проблемы "троянским коням". "Троянский конь" — вредная программа, которая притворяется, что она делает нечто другое, чем на самом деле.) Точка означает "текущий каталог", а слэш "/" — разделитель между именем каталога и именем файла (как и "" в DOS).

Вы можете посмотреть свой PATH, используя команду:

1.             echo $PATH

Чтобы узнать, как изменить свой PATH, или добавить в него ваш текущий каталог, смотрите следующий ответ.

Если вы потеряли где-то в дереве каталогов исполняемый файл, вы можете найти его так, например:

1.             find / -name "mozilla"

чтобы найти файл с именем "mozilla" для поиска, начиная с корневого каталога
"/". Вы можете получить тот же результат быстрее, используя:

1.             locate mozilla

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

Заметим, что обычно PATH для администратора и для обычных пользователей различаются (PATH администратора включает в себя /sbin и /usr/sbin, тогда как у пользователей этих каталогов нет). Поэтому пользователи не могут исполнять программы, расположенные в каталоге "sbin", если они в командную строку не включают полный путь исполняемого файла. Также, если вы стали суперпользователем, выполнив команду su, вы наследуете PATH пользователя, и для выполнения программы, расположенной в sbin, вам всё равно требуется указывать полный путь.

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

1.             which mozilla

которая покажет полный путь к программе "mozilla".

Третья: может быть, этот файл — не исполняемый. Если это так, то сделайте этот файл исполняемым. Например (как администратор или владелец этого файла):

1.             chmod a+x my_file

Эта команда сделает файл "my_file" исполняемым для всех пользователей. Проверьте это так:

1.             ls -l  my_file

Заметим, что в Linux (или UNIX) не существует расширений файлов (например, .exe или .com или .bat), которое делает файл исполняемым. Файлу необходим "режим исполняемого файла", и это — не то же самое, что и "атрибут файла" в DOS.

4. Как я могу изменить PATH?

PATH — это список каталогов, в котором ищется имя программы, которое вы указали при запуске. Вы можете посмотреть свой PATH, используя команду:

1.             echo $PATH

которая в моей системе показывает PATH пользователя "yogin":

1.             /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/yogin/bin

":" — это разделитель, поэтому вышеуказанный PATH представляет следующий список каталогов:

1.             /opt/kde/bin
2.             /usr/local/bin
3.             /bin
4.             /usr/bin
5.             /usr/X11R6/bin
6.             /home/yogin/bin

Ниже показан результат команды "echo $PATH" запущенный в моей системе при входе в нее как администратор ("root"):

1.             /opt/kde/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

вы можете изменить PATH для всех пользователей системы редактируя файл /etc/profile и подправляя (как администратор) в командной строке с помощью "PATH=". Я делаю это, используя редактор pico (как администратор):

1.             pico -w /etc/profile

(Опция -w отключает свертку длинных линий.)

Для получения эффекта от изменений надо войти в систему заново. Для изменения PATH для конкретного пользователя отредактируйте файл /home/user_login_name/.bash_profile (обратите внимание на точку впереди имени файла — файлы, начинающиеся с точки, обычно невидимы в системе, и для того, чтобы их увидеть, необходимо ввести команду ls -a).

Если вы действительно хотите иметь текущий каталог в вашем PATH, добавьте "." (точку) в ваш PATH. Там, где имя каталога опущено, она означает "текущий каталог". Спецификация пути в /etc/.bash_profile может выглядеть так:

1.             PATH="$PATH:$HOME/bin:"."
2.             export PATH

Эта команда берет содержимое переменной окружения, называемой PATH (как установленной для всех пользователей в /etc/profile), и добавляет к ней имя вашего домашнего каталога из переменной HOME с присоединенным к нему "/bin" и затем точки. В завершение, команда присоединяет результирующую строку к переменной PATH. Необходимо использовать команду "export" после изменения PATH или любой другой переменной окружения, для того чтобы переменная была видна вне скрипта, который изменил ее.

5. Как мне выключить компьютер?

В текстовом терминале, нажмите <Ctrl><Alt><Del> ("салют-тремя-пальцами", нажимать одновременно), подождите, пока процесс выключения завершится, и выключите питание компьютера только после того, как он снова пойдет на перезагрузку. Если вы находитесь в графической среде X-windows, сначала перейдите в текстовый терминал нажатием <Ctr><Alt><F1> (три клавиши одновременно). Не выключайте компьютер, пока процесс выключения не завершится, иначе у вас будут ошибки на диске при следующей загрузке. (Обычно ошибки, полученные в результате ненормального завершения работы во время следующей загрузки будут исправлены автоматически, но иногда могут возникнуть более серьезные проблемы, и вам может потребоваться ручное восстановление файлов или переустановка системы!)

Если предпочитаете выключать ваш компьютер при нажатии <Ctrl><Alt><Del> (вместо перезагрузки по умолчанию), вы можете установить это, отредактировав файл /etc/inittab. Этот файл содержит такие строки:

1.             # Trap CTRL-ALT-DELETE
2.             ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Как администратор, замените опцию "-r" на "-h", так чтобы этот фрагмент выглядел так:

1.             # Trap CTRL-ALT-DELETE
2.             ca::ctrlaltdel:/sbin/shutdown -t3 -h now

Строка, начинающаяся с "#", является комментарием (она предназначена для людей, а не для компьютера). Опция "-t3" говорит, что команда shutdown ожидает 3 секунды перед тем, как начать завершение процессов . Опция "-r" и "-h" означает "перезагрузку" и "остановку" соответственно, они указывают выполнить завершение для перезагрузки или завершение для остановки компьютера.

Администратор может использовать команду shutdown для выключения напрямую. Эта команда может быть использована как для локального, так и для удаленного выключения вашего компьютера, но она используется в большинстве для удаленного выключения, так как клавиатура недоступна для нажатия <Ctrl><Alt><Del>. Это может быть также использовано для ситуации, когда программа зависла и клавиатура не функционирует. Например:

1.             telnet name_of_machine_with_no_operable_keyboard (telnet имя_машины_с_нерабочей_клавиатурой)
2.             [подключился как пользователь]
3.             su
4.             [ввел пароль]

Затем — выполните ps axu |more, найдите идентификатор зависшего процесса в выводе на экран команды ps и введите kill pid_of_offending_process (kill идентификатор_зависшего_процесса) или перезагрузите вашу машину с помощью: /sbin/shutdown -rn now

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

Заметим, что по соображениям безопасности, вы не можете войти в удаленную машину как администратор (например, через telnet). Вы входите как пользователь, и затем выполняете su и вводите пароль для того, чтобы стать администратором.

Команда завершения может быть выполнена позже. Например. (как администратор):

1.             /sbin/shutdown -r 23:59

перезагрузит компьютер за минуту до полуночи. Я могу также использовать: /sbin/shutdown -r +1 завершит через минуту. Я могу прервать завершение с помощью: /sbin/shutdown -c

Если команда завершения слишком длинна для вас, вы можете вводить другие команды, которые выполняют работу согласно своим именам (как администратор): reboot, halt

Необычный вариант для завершения работы компьютера — переключение системы в нулевой уровень работы (для остановки) или шестой уровень (для перезагрузки).
Попробуйте это (как администратор): init 0, init 6

Значение различных уровней работы описано в файле /etc/inittab.

6. Что мне делать с зависшей программой?

Программы с ошибками в Linux могут зависнуть. Крах приложения, однако, не будет влиять на операционную систему, поэтому вам не придется перезагружать компьютер. Известны сервера на платформе Linux, работающие более года без перезагрузки. По нашему опыту, плохое поведение операционных систем часто связано с аппаратными или конфигурационными проблемами. Мы сами часто встречаемся со следующими проблемами: перегрев процессора (вентилятор недостаточно быстро вращается или вообще остановился, гнездо процессора при его подключении было грязным), плохие чипы памяти, различные чипы памяти с различной тактовой частотой (можно переставить их местами, это иногда помогает), и неправильная настройка BIOS (выключите все "дополнительные" опции — Linux заботится об этом сам).

Сообщения об ошибке "signal 11" обычно (в 99% случаев) ассоциируются с проблемами аппаратного обеспечения и проявляются, когда вы выполняете интенсивные вычислительные задачи: установка Linux, компиляция ядра, и т.д. Если ваш процессор имеет тенденцию к перегреву — имеются несколько советов для его охлаждения, особенно в жаркую погоду: очистите гнездо процессора, замените вентилятор, работайте без кожуха на системном блоке и направьте на него внешний вентилятор, увеличьте в BIOS "wait-state", не разгоняйте, понизьте нагрузку при использовании (например, замените супер-навороченный screensaver на черный экран).

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

1.             cat

может выглядеть как зависшая, но она ожидает ввода имени файла с клавиатуры. Попробуйте нажать <Ctrl>d (что означает "конец файла") чтобы увидеть, что это завершит команду. Другой пример: я видел много вопросов в группах новостей о "глючности" команды tar, которая "зависает" во время распаковки загружаемого файла, например:

1.             tar -zxv my_tar_filename

[неверно!]

Она также ожидает ввода, так как опция "-f " с указанием имени файла отсутствует, а "my_tar_file" не распознается как имя файла. Корректная команда будет такова:

1.             tar -zxvf my_tar_filename

Заметим, что имя файла должно сразу следовать за опцией "f" (которая и стоит тут для "имени файла"). Нижеследующая команда НЕ БУДЕТ работать (очень распространенная ошибка):

1.             tar -zxfv my_tar_file 

[неверно!]

Любая программа (зависшая или нет) может быть уничтожена. Программа в текстовом режиме часто может быть уничтожена нажатием <Ctrl><c>. Эта комбинация клавиш не сработает для больших приложений, которые блокируют <Ctrl><c>, поэтому и не используется. Вы можете послать программу в фоновый режим работы, нажав <Ctrl><z> (нет гарантий, что это сработает) или переключиться на другой терминал, например нажав <Ctrl><Alt><F2> и зарегистрироваться под тем же именем, что и пользователь, у которого зависла программа (это сработает всегда). Теперь когда вы снова управляете компьютером, найдите программу, которую хотите прервать, например, так:

1.             ps

Эта программа выводит список программ, которые сейчас запущены данным пользователем. В выводе ps я нахожу идентификатор процесса (PID) зависшей программы и теперь я могу уничтожить его. Например:

1.             kill 123

уничтожит программу с идентификатором процесса (PID) равным "123".

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

1.             ps axu | more

Эта команда выводит все запущенные сейчас процессы (опция "a"), и даже те, которые не управляются терминалом (опция "x") вместе с именем пользователя, который является собственником процесса (опция "u"). Так как этот вывод больше, чем один экран, я использовал канал "more", и вывод останавливается после каждого заполненного экрана.

Команда kill имеет сокращение killall для уничтожения программы по ее имени, например:

1.             killall mozilla

уничтожит любую программу, содержащую "mozilla" в своем имени, а killall pppd надежно рассоединит любое подключение удалением демона (резидентной программы) ppp.

Cамый простой путь для уничтожения программ, основывающихся на X-windows — использование этой команды (набранной в X-терминале):

1.             xkill

которая изменит курсор на нечто, похожее на смертный приговор. Вы наводите указатель мыши на окно с уничтожаемой программой и нажимаете левую кнопку мыши, и окно пропадает вместе с ассоциированной с ней программой. Вызвать последнюю команду можно нажатием <Ctrl><Alt><Esc>, которое также изменит курсор на нечто, похожее на смертный приговор — вы наводите курсор мыши на окно требуемой программы, кликаете мышью и окно с программой закрываются.

Если ваша система X-windows упала так, что не может быть восстановлена, или просто зависла, простейший путь уничтожить ее — нажать <Ctrl><Alt><BkSpace>. После этого было бы неплохо запустить на выполнение ps axu, найти всевозможные X-программы, которые еще работают, и уничтожить их. Если вы это не сделаете, то та программа, которая вела себя плохо и нарушила работу вашей X-windows системы, снова создаст вам проблемы.

Если у вас имеются программы, работающие/приостановленные в фоновом режиме, операционная система возразит против вашего выхода из системы, и выдаст сообщение типа "There are stopped jobs" ("Имеются приостановленные программы"). Для выхода из системы, несмотря на это, просто повторите выход или команду exit — программы фонового режима автоматически прервутся и вы выйдете из системы.

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

1.             rm core

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

1.             ulimit -c 0

Проверьте, что это сработало так:

1.             ulimit -a

(Эта команда покажет "ограничения пользователей", опция "-a" означает для "всех".)
Установить постоянный запрет на дамп core для всех пользователей можно, отредактировав файл /etc/profile (как администратор), где устанавливается ulimit, и регулируется настройка. Войдите вновь под своим именем для того, чтобы /etc/profile возымел эффект.

Если вы захотите увидеть, как файл core может быть использован, введите (в каталоге, в котором есть файл core):

1.             gdb -c core

Эта команда запустит отладчик GNU (gdb) на core-файле и покажет имя программы, которая его создала, сигнал на котором программа была прервана, и т.д. Наберите "quit" для выхода из отладчика. Узнать о различных сигналах можно командой:

1.             cat /usr/include/bits/signum.h | more

7. Опции команд

Большинство команд имеет многочисленные опции. Опция вводится с помощью "-" (тире). Например: dir -l показывает список файлов в текущем каталоге, но в расширенном формате (по умолчанию формат вывода "короткий"). Если надо ввести более одной опции, то можно их объединить, эти варианты эквивалентны: dir -l -a или dir -la

Любая из двух команд покажет мне список файлов в текущем каталоге в расширенном формате (опция -l), и включит все файлы в список ,также и скрытые (опция -a). Большинство часто используемых опций обозначены одной буквой, как и в UNIX. Но есть и новый стиль, который выглядит так: dirhelp

Это — опция длиной более одного символа, и она должна начинаться с двойного тире. Вышеуказанная команда показывает краткую помощь для команды dir, включая список всех опций. Так как их очень много (более одного экрана), лучше ввести эту команду так: dirhelp | more

P.s. Это перевод уже достаточно старой статьи, которая должна дать вам начальное представление о линуксе. В разных дистрибутивах команды могут отличаться. Команды выделенные тэгом [ code ] используйте без цифр в начале строки :)
Это была первая часть. В следующей части будет:

3. Планирование работы с помощью "&", "at", "batch" и cron
3.1 Как выполнить программу "в фоновом режиме"?
3.2 Как выполнить программу в точно определённое время (использование "at" или "batch")?
3.3 Как настроить cron?
4. Командный интерпретатор (оболочка, shell)
4.1 Что такое командный интерпретатор и хочу ли я использовать какой-либо другой?
4.2 Как настроить приглашение в моей оболочке?
4.3 Цвет в текстовом терминале
4.4 Как печатать символы в консоли, текстовом приложении и X-ах?
4.5 Как написать простой сценарий (скрипт)?
4.6 Значение ограничителей
4.7 Перенаправление ввода/вывода
4.8 Служебные символы оболочки (метасимволы)
 http://linuxshop.ru/  

Статьи на тему:

  • No Related Post
Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Вы должны быть авторизованы, чтобы разместить комментарий.

Тнт
Тнт онлайн канал тнт.
www.adigz.com

Тнт
Тнт онлайн канал тнт.
www.adigz.com
Рейтинг блогов Рейтинг блогов Rambler's Top100 free counters

Large Visitor Map