Linux - Алексей Стахнов
Шрифт:
Интервал:
Закладка:
Настроить ipxtunnel не составляет труда. Пусть один конец туннеля (компьютер) называется q.odessa.ua, а второй компьютер – w.odessa.ua. Для конфигурации ipxtunnel используется файл /etc/ipxtunnel.conf. Этот файл позволяет указать порт UDP по умолчанию для использования в соединении TCP/IP, куда посылать инкапсулированные данные, на каком локальном интерфейсе должен слушать ipxtunnel и на который отправлять пакеты IPX.
Пример конфигурационного файла:#
# /etc/ipxtunnel.conf для q.odessa.ua
#
# Порт UDP для использования: (по умолчанию 7666)
port 7777
#
# Удаленная машина, на которую отправлять пакеты IPX
remote w.odessa.ua
#
# Локальные интерфейсы, на которых искать пакеты IPX: (по умолчанию eth0)
interface eth0
interface ethlДругой компьютер должен иметь похожий конфигурационный файл.
Ссылки
• www.compu-art.de/mars_nwe/ – домашняя страница mars_new.
• www.osp.ru/pcworld/1998/05/44.htm – А. Суханов, В. Хименко. Linux и Windows 95: эффективность совместной работы. Мир ПК № 5/98.
• Соответствующие HOWTO (см. гл. 13):
– IPX HOWTO – настройка IPX-протокола;
– Ethernet HOWTO – все, что касается Ethernet-устройств.Глава 26 Управление процессами
Данная глава посвящена процессам операционной системы Linux. Поскольку администрирование операционной системы в конечном счете сводится к управлению процессами, вполне логично выделить отдельную главу на описание столь важной темы.
Каждый раз, когда вы запускаете на выполнение программу, вы начинаете то, что в литературе именуется как процесс. Или другими словами – процессом называется выполняемая в данный момент программа или ее потомки. Каждый процесс запускается от имени какого-то пользователя. Процессы, которые стартовали при загрузке, обычно выполняются от имени пользователей root или nobody.
Каждый пользователь может управлять поведением процессов, им запущенных. При этом пользователь root может управлять всеми процессами – как запущенными от его имени, так и процессами, порожденными другими пользователями операционной системы. Управление процессами осуществляется с помощью утилит, а также при помощи некоторых команд командной оболочки (shell).
Каждый процесс в системе имеет уникальный номер – идентификационный номер процесса (Process Identification, PID). Этот номер используется ядром операционной системы, а также некоторыми утилитами для управления процессами.
Выполнение процесса на переднем плане и в фоновом режиме
Процессы могут выполняться на переднем плане (foreground) – режим по умолчанию и в фоновом режиме (background). На переднем плане в каждый момент для текущего терминала может выполняться только один процесс. Однако пользователь может перейти в другой виртуальный терминал и запустить на выполнение еще один процесс, а на другом терминале еще один и т. д. Процесс переднего плана – это процесс, с которым вы взаимодействуете, он получает информацию с клавиатуры (стандартный ввод) и посылает результаты на ваш экран (стандартный вывод).
Фоновый процесс после своего запуска благодаря использованию специальной команды командной оболочки отключается от клавиатуры и экрана (то есть не ожидает ввода данных со стандартного ввода и не выводит информацию на стандартный вывод), а командная оболочка не ожидает окончания запущенного процесса, что позволяет пользователю немедленно запустить еще один процесс.
Обычно фоновые процессы требуют очень большого времени для своего завершения и не требуют вмешательства пользователя во время существования процесса. К примеру, компиляция программ или архивирование большого объема информации – кандидаты номер один для перевода процесса в фоновый режим.
Процессы так же могут быть отложенными. Отложенный процесс – это процесс, который в данный момент не выполняется и временно остановлен. После того как вы остановили процесс, в дальнейшем вы можете его продолжить как на переднем плане, так и в фоновом режиме. Возобновление приостановленного процесса не изменит его состояния – при возобновлении он начнется с того места, на котором был приостановлен.
Для выполнения программы в режиме переднего плана достаточно просто набрать имя программы в командной строке и запустить ее на выполнение. После этого вы можете работать с программой.
Для запуска программы в качестве фонового процесса достаточно набрать в командной строке имя программы и в конце добавить знак амперсанта (&), отделенный пробелом от имени программы и ее параметров командной строки, если таковые имеются. Затем программа запускается на выполнение. В отличие от запуска программы в режиме переднего плана мы получим приблизительно следующее сообщение:
/home/vasya# yes > /dev/null &;
[1] 123
/home/vasya#Оно состоит из двух чисел и приглашения командной строки. Таким образом, мы запустили программу выполняться в фоновом режиме и получили возможность запустить с той же самой консоли на выполнение еще какую-то программу.
Число [1] означает номер запущенного нами фонового процесса. Как вы узнаете несколько позже, с его помощью можно будет производить манипуляции с нашим фоновым процессом. Значение 12 3 показывает идентификационный номер (PID) нашего процесса. Отличия этих двух чисел достаточно существенные. Номер фонового процесса уникален только для пользователя, запускающего данный фоновый процесс. То есть если у нас в системе три пользователя решили запустить фоновый процесс (первый для текущего сеанса) – в результате у каждого пользователя появится фоновый процесс с номером [1]. Напротив, идентификационный номер процесса (PID) уникален для всей операционной системы и однозначно идентифицирует в ней каждый процесс. Спрашивается, для чего тогда вводить нумерацию фонового процесса для пользователя? Для удобства. Номер фонового процесса хранится в переменных командной оболочки пользователя и позволяет не забивать голову цифрами типа 2693 или 1294, а использовать переменные вида %1, %2. Однако допускается пользоваться и идентификационным номером процесса.
Для проверки состояния фоновых процессов можно воспользоваться командой командной оболочки – jobs./home/vasya# jobs
[1]+ Running yes >/dev/null &
/home/vasya#Из вышеприведенного листинга видно, что у пользователя в данный момент запущен один фоновый процесс, и он выполняется.
Остановка и возобновление процесса
Помимо прямого указания выполнять программу в фоновом режиме, существует еще один способ перевести процесс в фоновый режим. Для этого мы должны выполнить следующие действия:
1. Запустить процесс выполняться на переднем плане.
2. Остановить выполнение процесса.
3. Продолжить процесс в фоновом режиме.
Для выполнения программы введем ее имя в командной строке и запустим на выполнение. Для остановки выполнения программы необходимо нажать на клавиатуре следующую комбинацию клавиш – <Ctrl>+<Z>. После этого вы увидите на экране следующее:/home/vasya# yes > /dev/null
ctrl+Z
[1]+ Stopped yes >/dev/null
/home/vasya#Мы получили приглашение командной строки. Для того чтобы перевести выполнение процесса в фоновый режим, необходимо выполнить следующую команду:
bg %1
Причем необязательно делать это сразу после остановки процесса, главное правильно указать номер остановленного процесса. Для того чтобы вернуть процесс из в фонового режима выполнения на передний план, достаточно выполнить следующую команду:
fg %1
В том случае, если вы хотите перевести программу в фоновый или, наоборот, на передний план выполнения сразу после остановки процесса, можно выполнить соответствующую программу без указания номера остановленного процесса.
Существует большая разница между фоновым и остановленным процессом. Остановленный процесс не выполняется и не потребляет ресурсы процесса, однако занимает оперативную память или пространство свопинга. В фоновом же режиме процесс продолжает выполняться.
Как остановить выполнение фонового процесса? Использование комбинации клавиш <Ctrl>+<Z> не поможет, поскольку процесс находится в фоновом режиме и не реагирует на ввод данных с консоли. Для решения этой проблемы следует переместить процесс на передний план, а затем остановить.
Завершение работы процесса
Ну вот, вы научились запускать и останавливать выполнение процессов, а также переводить исполняемый процесс в фоновый режим и в режим переднего плана. Однако вы, возможно, не умеете завершать работу процесса.
• Вариант первый. Если процесс интерактивный, как правило, в документации или прямо на экране написано, как корректно завершить программу.
• Вариант второй. В том случае, если вы не знаете, как завершить текущий процесс (не фоновый), можно воспользоваться клавиатурной комбинацией <Ctrl>+<C>. Попробуйте также комбинацию клавиш <Ctrl>+<Break>. А для остановки фонового процесса можно перевести его на передний план, а затем уже воспользоваться вышеприведенными клавиатурными комбинациями.
• Вариант третий и самый действенный. В том случае, если вам не удалось прекратить выполнение процесса вышеприведенными способами – например программа зависла или «слетел» терминал – для завершения процесса можно воспользоваться следующими командами: kill, killall.