Ввод и вывод командной оболочки Unix и Linux

Ввод и вывод командной оболочки Unix и Linux
linux-cmdПродолжаем знакомиться с консольным режимом (console mode) Unix-подобных операционных систем. Если вы уже знакомы с основными командами, файлами и каталогами Unix, можно приступать к изучению хитростей ввода и вывода командной оболочки (shell). Вы узнаете, как осуществить переадресацию стандартного вывода и ввода. Давайте начнем со стандартного вывода.

Если вы хотите отправить вывод команды в файл вместо терминала, используйте символ переадресации >

command > file

Оболочка создает файл file если он до этого еще не существует. Если file существует, то оболочка сперва стирает первичный файл; это называется удалением полезных данных файла (clobbering).

Некоторые оболочки Linux и Unix имеют параметры, которые предотвращают удаление полезных данных. Например, вы можете набрать set -C, чтобы избежать удаления полезных данных в bash.

Если вы не хотите перезаписывать файл, вы можете вместо этого присоединить вывод к файлу с помощью синтаксиса переадресации>>

command >> file

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

Чтобы послать вывод команды к вводу другой команды, используйте символ «трубы» (pipe) ( | ), или как еще говорят — канала. Чтобы увидеть, как это работает, попробуйте эти две команды:

head /proc/cpuinfo

head /proc/cpuinfo | tr a-z A-Z

Вы можете послать вывод через множество объединенных команд если захотите; просто добавьте очередной канал ( | ) перед дополнительной командой.

Стандартный вывод ошибок в Linux

Иногда, вы можете переадресовать стандартный вывод, но обнаружить, что программа все еще что-то выводит на терминале. Это стандартный вывод ошибки (stderr), дополнительный поток вывода для диагностики или отладки. Попробуйте эту команду, которая вызывает ошибку:

ls /fffffff > f

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

ls /fffffff : no such file or directory

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

ls /fffffff > f 2> z

Число 2 описывает поток ID, который видоизменяет оболочка. Поток ID 1 это стандартный вывод (по умолчанию), ID 2 это стандартная ошибка.

Вы можете также послать стандартную ошибку в то же место, что и stdout c помощью записи >&. Например, чтобы послать и стандартный вывод и стандартную ошибку в файл под названием F, попробуйте эту команду:

ls /fffffff > f 2>&1

Переадресация стандартного ввода в Linux.

Также возможно провести файл в стандартный ввод программы с помощью оператора <. Вот пример:

head < /proc/cpuinfo

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

head /proc/cpuinfo.

Процессы в Unix и Linux системах.

Процесс — это работающая программа. Каждый процесс системы имеет пронумерованный ID процесса (PID). Для быстрого просмотра списка процессов, которые сейчас работают, просто запустите команду ps в командной строке. Вы получите список вроде этого:

PID TTY STAT TIME COMMAND

520 p0 S 0:00 -bash

545 ? S 3:59 /usr/X11R6/bin/ctwm -W

548 ? S 0:10 xclock -geometry -0-0

2159 pd SW 0:00 /usr/bin/vi lib/addresses

31956 p3 R 0:00 ps

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

PID — ID процесса.

TTY — устройство терминала, где работает процесс (пока об этом не задумывайтесь).

STAT — состояние процесса; то есть то, что процесс делает в настоящее время и в какой ячейке памяти он хранится. Например, S означает ожидание, а R означает работу. Загляните на страницу руководства ps(1), чтобы узнать обо всех символах.

TIME — количество CPU (в минутах и секундах), которое проработал процесс. Другими словами, это общее количество времени, которое процесс потратил на выполнение инструкций процессора.

COMMAND — здесь, вроде, очевидно, но будьте внимательны, так как процесс может изменить оригинальное значение этого поля.

Если вам интересны все процессы операционной системы (а не только те, которые вы запускаете), используйте команду ps ax, а если вам нужен полный отчет о характеристиках процесса, используйте ps u. Как и с другими программами, вы можете совмещать опции, например так: ps aux (это работает как для Linux, так и для Unix систем).

Чтобы проверить особый процесс, добавьте его PID в список аргументов команды ps и ($$ это переменная оболочки, которая вычисляет текущий идентификатор PID оболочки).

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

Другие интересные записи

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

введите значение * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.