Перейти к содержимому

Как остановить выполнение команды в linux

  • автор:

OpenBSD. Как прекратить выполнение команды.

Дал команду dd и все жди пока она закончится. Уже не получится в командную строку вписывать новые команды.

Подскажите кобинацию клавииш для отмены /сброса команды или что ещё там нужно.

Пожалуйста, а то приходится каждый раз перезагружаться.

job14
21.11.09 08:36:31 MSK

GotF ★★★★★
( 21.11.09 08:54:24 MSK )

Ну куда тебе OpenBSD, а…

kapsh ★
( 21.11.09 09:14:54 MSK )

Ты бы хоть для приличия гуглем сначала пользовался.

Deleted
( 21.11.09 09:15:19 MSK )

Не верю!

Не бывает такого, чтоб человек знал про dd и не знал о ctrl+c!

Demon37 ★★★★
( 21.11.09 09:24:25 MSK )

Ctrl+c, Ctrl+z, alt+f*,

2kapsh: ну хочет человек, мб чсв, мб наследство на работе, только вот еще бы хэндбуки осиливал сам, чтобы ламерских вопросов не спрашивать

wlan ★★
( 21.11.09 09:24:42 MSK )

вы бросьте компьютер к чертям собачьим, он вам не нужен

ierarx
( 21.11.09 09:30:36 MSK )
Ответ на: комментарий от ierarx 21.11.09 09:30:36 MSK

GotF, спасибо. wlan, спасибо за целых две команды. ierarx и другие, я спрашиваю так мало инфы на русском 🙁 Основы пойму, установлю gnome, kde или xfce и буду РАДОВАТЬСЯ ))) Ну помогите, плз, тупому форумчанину 🙁

job14
( 21.11.09 10:15:16 MSK ) автор топика
Ответ на: комментарий от job14 21.11.09 10:15:16 MSK

Кстати книга Absolute OpenBSD — UNIX For The Practical Paranoid (2003) очень хорошая.

job14
( 21.11.09 10:17:41 MSK ) автор топика
Ответ на: комментарий от job14 21.11.09 10:15:16 MSK

> мало инфы на русском

Если это не слишком оскорбит BSD, то это по русски и как раз на подходящем уровне. В частности, третья глава.

sin_a ★★★★★
( 21.11.09 10:24:14 MSK )
Ответ на: комментарий от sin_a 21.11.09 10:24:14 MSK

>Если это не слишком оскорбит BSD

Человек явно не понимает, что такое BSD и что такое Linux. Иначе бы он не стал тратить время на BSD.

nnz ★★★★
( 21.11.09 11:01:52 MSK )
Ответ на: комментарий от nnz 21.11.09 11:01:52 MSK

Ну я просто не удержался от небольшой порции иронии 🙂

Если он знакомится с BSD, то кто-то ему это наверно уже посоветовал. И возможно семена снобизма тоже уже заброшены.

sin_a ★★★★★
( 21.11.09 11:06:02 MSK )
Ответ на: комментарий от job14 21.11.09 10:15:16 MSK

>Ну помогите, плз, тупому форумчанину

мало кто опустится до возни с нежелающим гуглить и читать маны

ierarx
( 21.11.09 11:06:44 MSK )
Ответ на: комментарий от job14 21.11.09 10:15:16 MSK

это ты тот, кто спрашивал, начинать ли ему с Опена? помнишь, что я тебе сказал?

закидываю удочку: чтобы прервать процесс, нужно послать ему определенный сигнал. это можно выполнить, например, командой kill. а можно и с клавиатуры нажать CTRL+C, если программа выполняется в foreground. еще можно не просто прервать команду, а оставить ее выполняться, но «скрыто», в background. для этого нужно нажать CTRL+Z и потом дать команду bg. проверить статус выполнения команд в бэкграунде можно командой jobs. а дальше бегом читать маны, тем более что они в Опене просто отличные! или еще лучше прочти какую-нибуть книгу для новичков в Юникс.

val-amart ★★★★★
( 21.11.09 11:48:21 MSK )
Ответ на: комментарий от job14 21.11.09 10:15:16 MSK

>Основы пойму, установлю gnome, kde или xfce и буду РАДОВАТЬСЯ )))
>установлю gnome, kde или xfce

OpenBSD не десктопная система. Уж точно не новичковая. Если нужна бздя — посмотри для начала хотя бы на PC-BSD, ну или сразу фрибзд, если чуствуешь в себе силы разбираться что и как.

Как остановить выполнение команды в терминале?

Author24 — интернет-сервис помощи студентам

Выполнение текста, введённого в терминале, как команды.
Добрый вечер! Хочу что-то типа этого: def myfunc1(): (нечто) def myfunc2(): (нечто) .

Выполнение команды в терминале
Здравствуйте, есть скрипт выполнение команды пинг (например). <?php $result = exec (‘ping.

Остановить выполнение команды
Здравствуйте! Каким образом можно остановить выполнение команды? Цель что-то вроде проверки.

Как остановить выполнение BackgroundWorker
здравствуйте. Не пойму как можно остановить поток. Есть две кнопки старт и стоп. private void.

1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230

ЦитатаСообщение от Demetro4ka Посмотреть сообщение

Полезные команды Linux

Операционная Система Linux – наиболее популярная среди пользователей виртуального хостинга и облачных сервисов.

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

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

Обращаем особое внимание, что в Linux почти всегда учитывается регистр, в том числе в именах файлов и каталогов, команд, аргументов и опций.

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

Базовые команды Linux

Самые основные команды терминала Linux, которые могут потребоваться при работе – получение справки или инструкции.

man — manual, получение справки

Команда линукс, которая позволяет получить информацию о другой команде. Чтобы вывести справочные данные введите команду man перед командой,о которой вы хотите узнать, например: man ping

Выйти из режима справки можно, нажав клавишу Q.

Если по каким-то причинам команда man не работает, то используйте help

Так как не весь список команд Linux имеет полноценную инструкцию, то можно запросить краткую справку по команде с помощью help.

clear — команда очищает всю информацию, которая была выведена в консоль.

history — с ее помощью показываются ранее введенные команды. По умолчанию показывает 10 последних операций, если после команды поставить число, например, history 20, то будут выведены последние двадцать произведенных действий.

Системные команды для терминала Linux

ping — команда для определения работоспособности ресурса, с ее помощью можно узнать активен или нет определенный ресурс. Указывать можно имя домена или IP-адрес.

Пример команды: ping nic.ru

Для остановки команды нажмите ctrl+c.

Команда ping позволяет определить наличие проблемы, если она есть. Чтобы узнать, где обрывается соединение используют команду traceroure. Суть данной команды состоит в том, что поток данных разбивается на небольшие пакеты и передается на целевой узел, а там собирается обратно в единый поток. Каждый пакет проходит определенное количество узлов, пока достигнет своей цели. У каждого пакет свое время жизни, которое и отображается в выводе команды.

Например, traceroute nic.ru

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

top — команда для отображения запущенных процессов и информации о них. Чтобы остановить выполнение команды нажмите клавишу q. Во время выполнения команды top можно использовать встроенные команды, например:

M — сортировать по используемой памяти,

P — сортировать по загрузке процессора,

1 — показать статистику по ядрам процессора.

ssh – команда для работы по SSH из терминала. Пример команды для перезагрузки веб сервера httpd: ssh user@server «service httpd restart»

Удаленный юзер и сервер в тексте всегда обозначаются как user@server, а по отдельности как и .

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

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

  • Имя и идентификатор пользователя
  • Имя и идентификатор основной группы пользователя
  • Имена и идентификаторы дополнительных групп пользователя, если они есть.

Результат будет иметь вид: uid=2988(olga) gid=1(staff) В этом примере идентификатор пользователя olga — 2988, имя ее основной группы — staff, идентификатор группы — 1.

host позволяет делать отправку запросов серверам доменных имен. При использовании host пользователь может указать имя сервера доменных имен, который должен обработать запрос. Утилита может осуществлять обратное разрешение доменных имен, например, получать список доменных имен, связанных с заданным IP-адресом. Данная команда схожа по функционалу с утилитой dig.

Команда выглядит следующим образом:

host [параметры] имя-домена-или-ip-адрес [имя-сервера-доменных-имен]

Например, host nic.ru

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

Команда выглядит следующим образом:

dig [@имя-сервера-доменных-имен] [параметры] имя-домена-или-IP-адрес

whois – команда для получения информации о домене.

Например, whois nic.ru

Список команд Linux для работы с файлами и директориями

find – команда для поиска файлов. После нее вводится название файла, который требуется найти. Также с ее помощью можно искать файлы по определенным параметрам, например, find /usr/bin -type f -atime +100 команда означает, что требуется найти все файлы в папке ‘/usr/bin’, со временем последнего обращения к которым прошло более 100 дней.

ls – команда для отображения содержимого директории, в которой вы находитесь. Введите адрес конкретной папки после команды, и вам отобразится ее содержимое. Добавленный аргумент -R показывает файлы из поддиректорий.

Команда ls -la покажет список файлов в текущей директории с учетом скрытых файлов

cd — команда сменить директорию (change directory). С ее помощью происходит перемещение между папками. Например, cd /buh/q1/feb/27. Чтобы переместиться в предыдущую директорию наберите cd- , команда без дополнений cd означает переход в домашнюю папку.

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

mv — данной командой можно перемещать файлы из одной папки в другую. Например, для переноса файла info.txt на рабочий стол команда выглядит следующим образом: mv info.txt /home/имя учетной записи/Desktop. Чтобы изменить название файла выполняем эту команду с указанием нового названия документа: mv info.txt info2.txt

cp — для создания копии файла в другой директории. В теле команды необходимо путь до файла, который копируем и адрес, куда размещаем скопированный файл: cp info.txt /home/user1/Desktop

Поскольку info.txt находится в текущей директории, до него можно не писать полный путь.

Чтобы скопировать каталог добавляем -r: cp -r Untitled /home/Username/Desktop

Команда: cp -r Untitled test_dir скопирует папку Untitled в test_dir

dd — утилита используется для работы с разделами. Она позволяет делать копии разделов, перемещать их или удалять.

rm — команда, которая удаляет директории и все что в них содержится без возможности восстановления. Пример команды: rm путь до директории, которую нужно стереть с компьютера

Чтобы удалить файл выполните команду rm -f file1, где file1 — файл, требующий удаления.

rmdir dir1 – удалит директорию (папку) с именем dir1

mkdir — команда создает новую директорию (папку). Если вам необходимо создать папку на рабочем столе под новое задание, то наберите команду: mkdir ~/Desktop/Newtask.

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

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

grep – команда для поиска текста в указанном файле. Например, grep 750.desktop

head — команда также показывает содержимое файлов, но только первые 10 строк. Количество строк можно изменить, указав параметр -n.

Например, команда: head -n 20 ~/Desktop/info.txt покажет первые двадцать строк документа info.

zip — команда для упаковки файлов в архив в формате .zip.

Команда zip file1.zip file1 создаст сжатый zip-архив.

Команда zip -r file1.zip file1 file2 dir1 — создаст сжатый zip-архив и включит в него нескольких файлов и/или директорий.

Команда unzip file1.zip распакует zip-архив.

touch — команда используется, в основном, для создания новых файлов. Например, чтобы создать HTML-документ в домашней директории введите: touch /home/имя учетной записи/test-site.html.

nano — команда для запуска программы по редактированию текста. Используя дополнительные аргументы, можно создавать новые текстовые файлы. Например nano /путь до директории, где нужно создать новый текстовый файл/название документа.

Также с помощью nano можно открывать и редактировать существующие файлы. Откроем файл text2.txt: nano text2.txt, затем делаем необходимые записи, сочетанием Ctrl+O (знак ^ в терминале Linux означает Ctrl) сохраняем файл и выходим из редактора – Ctrl+X.

Помимо nano можно с помощью команды vi вызвать другой редактор текста — vim. На первый взгляд он кажется сложнее, но если один раз в нем разобраться, то работа с vi, вероятно, покажется вам более удобной.

du – отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах. При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах.

chmod — команда для изменения прав доступа к файлам и директориям. Например, команда может выглядеть так:

chmod u=rwx,g=rx,o=r file2

Она устанавливает следующие разрешения для файла file2:

  • пользователь (user) может читать (read), писать (write) и выполнять (xecute) его;
  • члены группы (group) могут прочитать (read) и выполнить (xecute) его;
  • а также другие (others) могут только читать (read) его.

chown – команда для изменения владельца файлов или директорий.

Пример команды: chown [параметры]

Назначим пользователя pavel владельцем файла picture.jpg: chown pavel picture.jpg

Команды консоли линукс по управлению пользователями

groupadd – команда для создания группы пользователей

Введите в консоли groupadd group_name для создания новой группы с названием group_name

Для удаления группы group_name введите: groupdel group_name

Чтобы переименовать группу потребуется команда: groupmod -n new_group_name old_group_name

useradd – команда для создания нового пользователя.

Например, useradd user2.

useradd -p user2 — задать пароль пользователя user2.

Для удаления пользователя и его домашнего каталога: userdel -r user2

Чтобы создать пользователя user2, назначить ему домашний каталог /home/user2, включить в группу admin и оставить комментарий Nome Cognome, введите команду: useradd -c «Nome Cognome» -g admin -d /home/user2 -s /bin/bash user2

passwd — команда для смены пароля. Сменить пароль root пользователю user2: passwd user2 chage -E 2023-12-01 user2 — установить дату окончания действия учётной записи пользователя user2.

whoami — команда для вывода имени текущего пользователя, находящегося в текущий момент а системе. Используется без дополнительных аргументов.

w — команда, которая покажет пользователей, залогинившихся в данный момент в системе. Кроме этого выдаётся информация: длительность подключения, адрес с которого произошло было выполнено подключение, команде, которую выполняет пользователь.

su — команда для подключения к системе с правами суперпользователя (root). Перед началом работы с полным правами потребуется ввод пароля. Для выхода необходимо выполнить команду logout ищи закрывать терминал.

sudo — в отличие от предыдущей команды, команда sudo даёт выполнение только одной команды с правами суперпользователя. Перед началом выполнением также потребуется пароль, но текущего пользователя.

Заключение

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

Как остановить выполнение команды в linux

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

/home/larry# ps PID TT STAT TIME COMMAND 24 3 S 0:03 (bash) 161 3 R 0:00 ps /home/larry#

Обратите внимание, что по умолчанию команда ps выводит список только тех процессов, которые принадлежат запустившему её пользователю. Чтобы посмотреть все исполняющиеся в системе процессы, нужно подать команду ps -a . Номера процессов (process ID, или PID ), указанные в первой колонке, являются уникальными номерами, которые система присваивает каждому работающему процессу. Последняя колонка, озаглавленная COMMAND, указывает имя работающей команды. В данном случае в списке указаны процессы, которые запустил сам пользователь larry . В системе работает ещё много других процессов, их полный список можно просмотреть командой ps -aux . Однако среди команд, запущенных пользователем larry , есть только bash (командная оболочка для пользователя larry ) и сама команда ps . Видно, что оболочка bash работает одновременно с командой ps . Когда пользователь ввёл команду ps , оболочка bash начала её исполнять. После того, как команда ps закончила свою работу (таблица процессов выведена на экран), управление возвращается процессу bash . Тогда оболочка bash выводит на экран приглашение и ждёт новой команды.

Работающий процесс также называют заданием (job). Понятия процесс и задание являются взаимозаменяемыми. Однако, обычно процесс называют заданием, когда имеют ввиду управление заданием (job control). Управление заданием — это функция командной оболочки, которая предоставляет пользователю возможность переключаться между несколькими заданиями.

В большинстве случаев пользователи запускают только одно задание — это будет та команда, которую они ввели последней в командной оболочке. Однако многие командные оболочки (включая bash и tcsh ) имеют функции управления заданиями (job control), позволяющие запускать одновременно несколько команд или заданий (jobs) и, по мере надобности, переключаться между ними.

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

Передний план и фоновый режим

Задания могут быть либо на переднем плане (foreground), либо фоновыми (background). На переднем плане в любой момент времени может быть только одно задание. Задание на переднем плане — это то задание, с которым вы взаимодействуете; оно получает ввод с клавиатуры и посылает вывод на экран (если, разумеется, вы не перенаправили ввод или вывод куда-либо ещё). Напротив, фоновые задания не получают ввода с терминала; как правило, такие задания не нуждаются во взаимодействии с пользователем.

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

Для управления выполнением процессов в Linux предусмотрен механизм передачи сигналов. Сигнал — это способность процессов обмениваться стандартными короткими сообщениями непосредственно с помощью системы. Сообщение-сигнал не содержит никакой информации, кроме номера сигнала (для удобства вместо номера можно использовать предопределённое системой имя). Для того, чтобы передать сигнал, процессу достаточно задействовать системный вызов kill() , а для того, чтобы принять сигнал, не нужно ничего. Если процессу нужно как-то по-особенному реагировать на сигнал, он может зарегистрировать обработчик, а если обработчика нет, за него отреагирует система. Как правило, это приводит к немедленному завершению процесса, получившего сигнал. Обработчик сигнала запускается асинхронно , немедленно после получения сигнала, что бы процесс в это время ни делал.

Два сигнала — номер 9 ( KILL ) и 19 ( STOP ) — всегда обрабатывает система. Первый из них нужен для того, чтобы убить процесс наверняка (отсюда и название). Сигнал STOP приостанавливает процесс: в таком состоянии процесс не удаляется из таблицы процессов, но и не выполняется до тех пор, пока не получит сигнал 18 ( CONT ) — после чего продолжит работу. В командной оболочке Linux сигнал STOP можно передать активному процессу с помощью управляющей последовательности Ctrl — Z .

Сигнал номер 15 ( TERM ) служит для прерывания работы задания. При прерывании (interrupt) задания процесс погибает. Прерывание заданий обычно осуществляется управляющей последовательностью Ctrl — C [1] . Восстановить прерванное задание никаким образом невозможно. Следует также знать, что некоторые программы перехватывают сигнал TERM (при помощи обработчика), так что нажатие комбинации клавиш Ctrl — C (о) может не прервать процесс немедленно. Это сделано для того, чтобы программа могла уничтожить следы своей работы прежде, чем она будет завершена. На практике, некоторые программы вообще нельзя прервать таким способом.

Перевод в фоновый режим и уничтожение заданий

Начнём с простого примера. Рассмотрим команду yes, которая на первый взгляд может показаться бесполезной. Эта команда посылает бесконечный поток строк, состоящих из символа y на стандартный вывод. Посмотрим, как работает эта команда:

/home/larry# yes y y y y y

Последовательность таких строк будет бесконечно продолжаться. Уничтожить этот процесс можно, отправив ему сигнал прерывания, т. е. нажав Ctrl — C . Поступим теперь иначе. Чтобы на экран не выводилась эта бесконечная последовательность перенаправим стандартный вывод команды yes на /dev/null . Как вы, возможно, знаете, устройство /dev/null действует как « чёрная дыра »: все данные, посланные в это устройство, пропадают. С помощью этого устройства очень удобно избавляться от слишком обильного вывода некоторых программ.

/home/larry# yes > /dev/null

Теперь на экран ничего не выводится. Однако и приглашение командной оболочки также не возвращается. Это происходит потому, что команда yes все ещё работает и посылает свои сообщения, состоящие из букв y на /dev/null . Уничтожить это задание также можно, отправив ему сигнал прерывания.

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

Один способ перевести процесс в фоновый режим — приписать символ & к концу команды. Пример:

/home/larry# yes > /dev/null & [1]+ 164 /home/larry#

Сообщение [1] представляет собой номер задания (job number) для процесса yes. Командная оболочка присваивает номер задания каждому исполняемому заданию. Поскольку yes является единственным исполняемым заданием, ему присваивается номер 1. Число 164 является идентификационным номером, соответствующим данному процессу ( PID ), и этот номер также дан процессу системой. Как мы увидим дальше, к процессу можно обращаться, указывая оба этих номера.

Итак, теперь у нас есть процесс команды yes, работающий в фоне, и непрерывно посылающий поток из букв y на устройство /dev/null . Для того, чтобы узнать статус этого процесса, нужно исполнить команду jobs , которая является внутренней командой оболочки.

/home/larry# jobs [1]+ Running yes >/dev/null & /home/larry#

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

Для того, чтобы передать процессу сигнал (чаще всего возникает потребность прервать работу задания) используется утилита kill . В качестве аргумента этой команде даётся либо номер задания, либо PID . Необязательный параметр — номер сигнала, который нужно отправить процессу. По умолчанию отправляется сигнал TERM . В рассмотренном выше случае номер задания был 1, так что команда kill %1 прервёт работу задания. Когда к заданию обращаются по его номеру (а не PID ), тогда перед этим номером в командной строке нужно поставить символ процента (« % »).

Теперь введём команду jobs снова, чтобы проверить результат предыдущего действия:

/home/larry# jobs [1] Terminated yes >/dev/null

Фактически задание уничтожено, и при вводе команды jobs следующий раз на экране о нем не будет никакой информации.

Уничтожить задание можно также, используя идентификационный номер процесса ( PID ). Этот номер, наряду с идентификационным номером задания, указывается во время старта задания. В нашем примере значение PID было 164, так что команда kill 164 была бы эквивалентна команде kill %1 . При использовании PID в качестве аргумента команды kill вводить символ « % » не требуется.

Приостановка и продолжение работы заданий

Запустим сначала процесс командой yes на переднем плане, как это делалось раньше:

/home/larry# yes > /dev/null

Как и ранее, поскольку процесс работает на переднем плане, приглашение командной оболочки на экран не возвращается.

Теперь вместо того, чтобы прервать задание комбинацией клавиш Ctrl — C , задание можно приостановить (suspend, буквально — подвесить ), отправив ему сигнал STOP . Для приостановки задания надо нажать соответствующую комбинацию клавиш, обычно это Ctrl — Z .

/home/larry# yes > /dev/null Ctrl-Z[1]+ Stopped yes >/dev/null /home/larry#

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

Для возобновления выполнения задания на переднем плане можно использовать команду fg (от слова foreground — передний план).

/home/larry# fg yes >/dev/null

Командная оболочка ещё раз выведет на экран название команды, так что пользователь будет знать, какое именно задание он в данный момент запустил на переднем плане. Приостановим это задание ещё раз нажатием клавиш Ctrl — Z , но в этот раз запустим его в фоновый режим командой bg (от слова background — фон). Это приведёт к тому, что данный процесс будет работать так, как если бы при его запуске использовалась команда с символом & в конце (как это делалось в предыдущем разделе):

/home/larry# bg [1]+ yes $>$/dev/null & /home/larry#

При этом приглашение командной оболочки возвращается. Сейчас команда jobs должна показывать, что процесс yes действительно в данный момент работает; этот процесс можно уничтожить командой kill , как это делалось раньше.

Для того, чтобы приостановить задание, работающее в фоновом режиме, нельзя воспользоваться комбинацией клавиш Ctrl — Z . Прежде, чем приостанавливать задание, его нужно перевести на передний план командой fg и лишь потом приостановить. Таким образом, команду fg можно применять либо к приостановленным заданиям, либо к заданию, работающему в фоновом режиме.

Между заданиями в фоновом режиме и приостановленными заданиями есть большая разница. Приостановленное задание не работает — на него не тратятся вычислительные мощности процессора. Это задание не выполняет никаких действий. Приостановленное задание занимает некоторый объем оперативной памяти компьютера, через некоторое время ядро откачает эту часть памяти на жёсткий диск « до востребования ». Напротив, задание в фоновом режиме выполняется, использует память и совершает некоторые действия, которые, возможно, вам требуются, но вы в это время можете работать с другими программами.

Задания, работающие в фоновом режиме, могут пытаться выводить некоторый текст на экран. Это будет мешать работать над другими задачами.

/home/larry# yes &

Здесь стандартный вывод не был перенаправлен на устройство /dev/null , поэтому на экран будет выводится бесконечный поток символов y . Этот поток невозможно будет остановить, поскольку комбинация клавиш Ctrl — C не воздействует на задания в фоновом режиме. Для того чтобы остановить эту выдачу, надо использовать команду fg , которая переведёт задание на передний план, а затем уничтожить задание комбинацией клавиш Ctrl — C .

Сделаем ещё одно замечание. Обычно командой fg и командой bg воздействуют на те задания, которые были приостановлены последними (эти задания будут помечены символом + рядом с номером задания, если ввести команду jobs ). Если в одно и то же время работает одно или несколько заданий, задания можно помещать на передний план или в фоновый режим, задавая в качестве аргументов команды fg или команды bg их идентификационный номер (job ID). Например, команда fg %2 помещает задание номер 2 на передний план, а команда bg %3 помещает задание номер 3 в фоновый режим. Использовать PID в качестве аргументов команд fg и bg нельзя.

Более того, для перевода задания на передний план можно просто указать его номер. Так, команда %2 будет эквивалентна команде fg %2 .

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

[1] Прерывающая комбинация клавиш может быть установлена с помощью команды stty .

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

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