Ввод и вывод командной оболочки Unix и Linux
Продолжаем знакомиться с консольным режимом (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. Они могут оказаться полезными для определения местонахождения процессов, даже когда они выполняют не только задачи поддержки операционной системы.
Админ! Пиши еще по линукс.
Про команды дебиана, apt-get»ы и прочее. Очень нужная и полезная весчь, про монтирование устройств, ввод в домен, администрирование в линукс (службы, устройства, пользователи и группы, chmod, chown и прочие команды).
Я новичок в линкусе, думаю будет полезно всем, не только мне.