Linux и UNIX: программирование в shell. Руководство разработчика
вернуться

Тейнсли Дэвид

Шрифт:

HOLD1=/tmp/hold1.$$

HOLD2=/tmp/hold2.$$

#выполнение определенной обработки с помощью этих файлов

df -tk > $HOLD1

cat $HOLD1 > $HOLD2

# удаление файлов

rm /tmp/*.$$

При выполнении этого сценария создаются следующие два файла.

hold1.408 hold2.408

Когда указывается команда rm /tmp/*.$$, интерпретатор shell в действительности выполняет команду rm /tmp/*.408.

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

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

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

26.2. Сигналы

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

Номер сигнала

Название сигнала

Значение

1

SIGHUP

"Зависание" или прекращение выполнения родительского процесса

2

SIG1NT

Прерывание с помощью клавиатуры; обычно используется комбинация клавиш [Ctrl+C]

3

SIGQUIT

Завершение выполнения с помощью клавиатуры

9

SIGKILL

Прекращение выполнения определенного процесса

11

SIGSEGV

Нарушение сегментации (память(

15

SIGTERM

Завершение выполнения программы (завершение выполнения программы, заданное по умолчанию)

Существует сигнал 0, который ранее уже рассматривался (при создании файла .logout). Этот сигнал является сигналом "выхода из интерпретатора shell". Чтобы переслать сигнал 0, введите в командную строку команду exit либо примените к процессу или укажите в командной строке комбинацию клавиш [Ctrl+D].

Для пересылки сигнала используется формат:

kill [- номер сигнала:| имя сигнала] ID процесса

Если команда kill вводится без указания номера или названия сигнала, то она по умолчанию относится к сигналу с номером 15. Для просмотра списка всех сигналов примените следующую команду:

$ kill -1

1)

SIGHUP

2)

SIGINT

3)

SIGQUIT

4)

SIGILL

5)

SIGTRAP

6)

SIGIOT

7}

SIGBUS

8)

SIGFPE

9)

SIGKILL

10)

SIGUSR1

11)

SIGSEGV

12)

SIGUSR2

13)

SIGPIPE

14)

SIGALRM

15)

SIGTERM

17)

SIGCHLD

18)

SIGCONT

19)

SIGSTOP

20)

SIGTSTP

21)

SIGTTIN

22)

SIGTTOU

23)

SIGURG

24)

SIGXCPU

25)

SIGXFSZ

26)

SIGVTALRM

27)

SIGPROF

28)

SIGWINCH

29)

SIGIO

30)

SIGPWR

26.2.1. Уничтожение процесса

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

  • Читать дальше
  • 1
  • ...
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win