Отправка сигналов скриптам
Оболочка bash позволяет вам отправлять скриптам сигналы, пользуясь комбинациями клавиш на клавиатуре. Это оказывается очень кстати если нужно временно остановить выполняющийся скрипт или завершить его работу.
Завершение работы процесса
Комбинация клавиш
1 |
CTRL + C |
генерирует сигнал
1 |
SIGINT |
и отправляет его всем процессам, выполняющимся в оболочке, что приводит к завершению их работы.
Выполним в оболочке такую команду:
1 |
<pre class="class:hljs perl decode:1 " >$ <span class="hljs-keyword">sleep</span> <span class="hljs-number">100</span> |
После этого завершим её работу комбинацией клавиш
1 |
CTRL + C |
.
Завершение работы процесса с клавиатуры
Временная остановка процесса
Комбинация клавиш
1 |
CTRL + Z |
позволяет сгенерировать сигнал
1 |
SIGTSTP |
, который приостанавливает работу процесса, но не завершает его выполнение. Такой процесс остаётся в памяти, его работу можно возобновить. Выполним в оболочке команду:
1 |
<pre class="class:hljs perl decode:1 " >$ <span class="hljs-keyword">sleep</span> <span class="hljs-number">100</span> |
И временно остановим её комбинацией клавиш
1 |
CTRL + Z |
.
Приостановка процесса
Число в квадратных скобках — это номер задания, который оболочка назначает процессу. Оболочка рассматривает процессы, выполняющиеся в ней, как задания с уникальными номерами. Первому процессу назначается номер 1, второму — 2, и так далее.
Если вы приостановите задание, привязанное к оболочке, и попытаетесь выйти из неё, bash выдаст предупреждение.
Просмотреть приостановленные задания можно такой командой:
1 |
<pre class="class:hljs nginx decode:1 " ><span class="hljs-attribute">ps</span> –l |
Список заданий
В колонке
1 |
S |
, выводящей состояние процесса, для приостановленных процессов выводится
1 |
T |
. Это указывает на то, что команда либо приостановлена, либо находится в состоянии трассировки.
Если нужно завершить работу приостановленного процесса, можно воспользоваться командой
1 |
kill |
.
Выглядит её вызов так:
1 |
<pre class="class:hljs sql decode:1 " ><span class="hljs-keyword">kill</span> processID |