По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
    В системах Linux и Unix программные прерывания осуществляются черед сигналы. Существует достаточно большое количество различных сигналов Linux, но есть несколько, которые я бы выделил, поскольку очень важно знать и понимать, как они работают. К этим сигналам относятся SIGINT, SIGTERM и SIGKILL. Давайте посмотрим, что они из себя представляют. Что такое сигнал Linux? Мы все прекрасно знаем, что если на светофоре загорается красный свет, то пешеходы должны закончить переходить дорогу, а машины остановиться. Тоже самое и в системах Linux и Unix. Вы можете передать запущенной программе или службе некий сигнал, и таким образом с ней взаимодействовать. Например, вы можете подать программе сигнал  SIGTERM , тем самым сообщив о том, что «загорелся красный сигнал светофора».  Конечно, пешеходы могут продолжить переходить дорогу на красный свет, или машины могут продолжать ехать, но это может быть не очень безопасно для всех участников дорожного движения. Тоже касается и сигнала  SIGTERM , который мы отправляем процессору – процесс/программа может просто проигнорировать этот сигнал.  У каждого основного сигнала Linux есть свой номер (1-30+). Как правило, через какое-то время опытный пользователь Linux запоминает некоторые из них. Например, сигнал  SIGTERM соответствует номеру 15. А вот сигнал под номером 9 ( SIGKILL ), вполне вероятно, знают практически все, так как с его помощью можно принудительно завершить процесс, тогда как в нашем примере с «красным сигналом»  SIGTERM этого сделать нельзя. На этой картинке вы можете видеть главный экран  htop . Эту довольно удобную утилиту можно установить с помощью команды  sudo apt install htop в Ubuntu/Mint или с помощью команды  sudo yum install htop в RedHat/Centos/Fedora. На этом экране есть ряд сигналов завершения и многих других. Вы можете передать процессу, который вы выберите справа, любой из этих сигналов. Для того, чтобы выбрать процесс, перемещайте курсор вверх/вниз, после чего вы можете отправить сигнал, нажав F9.  SIGKILL и SIGTERM Эти названия могут вам показаться немного жутковатыми, но, в конце концов, весь этот профессиональный жаргон Linux предназначен для того, чтобы «убивать» процессы. В основном сигнал  -9 ( SIGKILL ) нужен только в тех случаях, когда процесс/программа зависает. Стоит отметить, что такие слова, как «программа» и «процесс», являются взаимозаменяемыми в данном контексте. По сути, процесс – это любая запущенная программа (или служба), которой был присвоен PID (Process IDentifier – идентификатор процесса).  Давайте рассмотрим пример, в котором мы попробуем завершить запущенный фоновый процесс с помощью сигнала  SIGKILL . Имейте в виду, что сигнал  SIGKILL довольно разрушительный. Он завершит процесс в любом случае вне зависимости от того, что процесс собирался сделать с этим сигналом. Процесс может перехватывать или перенаправлять некоторые сигналы, но не все.  Здесь мы запустили процесс  sleep 1800 в фоновом режиме. Для этого в конце команды мы добавили символ  & . Этот процесс стал первым ( [1] ) фоновым процессом с PID  574660 . После чего мы «убили» этот фоновый процесс с помощью команды  kill -9 574660 , где  -9 означает  SIGKILL . Несмотря на то, что процесс был завершен сразу же, мы не видим сообщения о завершении (о том, что фоновый процесс под номером 1 «убит», т.е.  [1]+ Killed ). Это произошло, поскольку ввод командной строки появился до того, как сообщение успело отобразиться, то есть операция по возвращению командной строки, оказалась более быстрой, чем операция по завершению процесса.  Мы проверяем список процессов с помощью команды  ps -ef | grep 574660 . Мы видим некоторый вывод, который относится к команде  grep , которую мы запустили. И также мы видим, что процесс  sleep уже завершен. Давайте понаблюдаем за тем же процессом, но здесь мы уже будем использовать  SIGTERM . Введем команду  kill -15 ${PID} , где  ${PID} - это процесс, который мы хотим завершить. Для того, чтоб вызвать/показать сообщение о завершении, мы нажали Enter (см. выше). Мы видим, что программа, как и в прошлый раз, завершилась корректно. Но на этот раз процесс внутри кода программы  sleep был не совсем таким же, хотя в данном конкретном примере этого не видно (читайте дальше!). В данном случае (когда для того, чтобы завершить процесс, мы использовали сигнал  -15 , т.е.  SIGTERM ) процесс  sleep был уведомлен и смог на внутреннем уровне обработать этот сигнал. После обработки он мог завершиться самостоятельно, проигнорировать этот сигнал или ответить любым другим действием, которое было описано в коде. Мы можем убедиться в этом, если проверим выходной сигнал и/или вывод:   Здесь мы запустили процесс  sleep 2000 дважды. Для каждого запуска, чтобы завершить процесс, мы использовать разные оболочки/сеансы терминала. В первый раз для того, чтобы остановить процесс  sleep мы использовали  kill -9 , а во второй -  kill -15 .  Мы сразу можем заметить, что в первом примере возвращается  Killed (после команды  kill -9 ), то есть процесс был «убит», а во втором -  Terminated (после команды  kill -15 ), то есть процесс завершился самостоятельно. После чего мы проверили коды завершения и увидели, что они разные.  Почему это так важно? В данном случае мы завершали простую команду  sleep , а что если бы это была более масштабная программа? В нашем примере не происходило ничего серьезного, то есть данные не обрабатывались, трафик не пересылался туда/обратно и т.д. Но что будет, если мы отправим команду  kill -9 на наш сервер базы данных (для этого, по большому счету, необходимы привилегии root/sudo)? Это приведет к тому, что при следующем запуске базы данных она перейдет в режим аварийного восстановления. А все потому, то для программного обеспечения эта выглядит так: «там что-то было», а теперь здесь «ничего». Иными словами, произойдет сбой. А если бы мы ввели команду  kill -15 , то программное обеспечение базы данных могло бы выполнить контролируемое завершение, то есть сначала оно могло бы заблокировать подключение новых пользователей, затем отключить/завершить сеансы текущих пользователей, после чего закончить запись данных и т.д. и, наконец, самостоятельно завершиться.  Как можно отправлять сигналы с помощью клавиатурных последовательностей? А вы знаете, что каждый раз, когда вы отправляете запущенной программе последовательность клавиш  CTRL+c , то вместо этого отправляется сигнал  SIGINT ? Давайте вернемся к нашему процессу  sleep и проверим это: Мы снова запустили процесс  sleep , после чего нажали комбинацию клавиш  CTRL+c . Процесс завершился, точнее,  был прерван сигналом  SIGINT , который мы отправили. Мы запрашиваем код завершения и вновь видим, что этот код отличается от предыдущих.  У каждого сигнала, который вы отправляете, есть свой код завершения (хотя, возможно, это касается не всех). Иными словами, когда вы используете в командной строке комбинацию клавиш  CTRL+c , то у вас всегда будет код завершения  130 , если вы будете «убивать» процесс с помощью команды  kill -9 , то код завершения будет  137 , а если вы завершите процесс с помощью команды  kill -15 , то код завершения будет  143 .  Вы можете проверить код завершения, запросив переменную  $? (пока вы не запустили новый процесс). Эта переменная содержит код завершения предыдущего процесса. Если вы будете знать код завершения какого-то конкретного процесса в конкретной ситуации и/или при отправке ему определенного сигнала, то это может помочь вам создать сценарии, которые будут обрабатывать другие процессы (это больше аргумент в пользу сценариев оболочки, особенно когда речь идет об управлении серверами или об автоматизированных средах). Есть еще одна не менее популярная комбинация клавиш -  CTRL+z . С ее помощью вы можете отправить сигнал приостановки  SIGTSTP . При отправке этого сигнала, процесс будет немедленно приостановлен до тех пор, пока вы (например) не введете для того же процесса команду  'fg' . Эта команда снова запустит процесс. Подытожим В этой статье мы с вами рассмотрели самые важные сигналы Linux, а также то, как их можно применять в средах Linux и Unix. Знание этих сигналов может помочь вам использовать и управлять Linux на повседневной основе. Например, у вас завис какой-то процесс, тогда вы можете завершить его с помощью команды  kill -9 . 
img
Сегодня поговорим о процессе настройки модуля Callback в FreePBX 13. Как настроить и использовать данный модуль и читайте ниже. Что это? Коллбэк (callback) - функционал обратного звонка, который меняет направление вызова на "обратное" - исходящий звонок от абонента путём сброса вызова становится входящим для абонента, то есть IP - АТС набирает номер позвонившего. Вы спросите, зачем это надо? Данный функционал обычно используется для уменьшения счетов у мобильных операторов и/или счетов при международных звонках. Как правило, вызов данной функции совершается из IVR-меню или настраивается входящий маршрут на CallBack. Настройка CallBack в FreePBX Первый шаг крайне прост – в веб-интерфейсе необходимо открыть следующую вкладку: Applications – Callback. Перейдя в меню настройки модуля, нажмите на кнопку + Add Callback Переходим к настройке доступных опций Сallback Description – описание вашего коллбэка, полезно если несколько коллбэков используются на вашей АТС Callback Number – опциональное поле, если оставить пустым, то АТС совершит вызов по номеру, с которого до этого пришёл вызов. В ином случае, АТС совершит вызов по номеру, указанному в данном поле Delay Before Callback – опциональное поле, интервал (в секундах) между активацией модуля и совершением вызова с АТС. По умолчанию интервал равен нулю Destination after Callback – маршрутизация вызова после звонка: к примеру можно направить вызов на требуемый номер/ринг-группу/IVR-меню и так далее Созданные коллбэки можно редактировать и удалять, если, к примеру, при его создании вы в чём-то ошиблись.
img
Предположим, у вас есть увесистый дистрибутив софта в формате .iso, гигабайт на 5, например, и вы хотите передать его через сеть партнеру. Вы загружаете его на FTP сервер и даете ссылку партнеру, мол «На, скачивай, дружище!». Ваш партнер скачивает его и работает с ним. Думаете этого достаточно? Нет. Сейчас объясним почему. p> Зачем сверять контрольную сумму? Дело в том, что при загрузке файла из сети файл может прилететь к вам побитым. Да –да, вы не ослышались. Любой .iso это так или иначе, набор блоков данных. И при скачивании, а особенно по нестабильному FTP, он может «крашнуться». И чтобы избежать этого, используется следующий алгоритм передачи файла. Его последовательность такова: Владелец файла считает контрольную сумму рабочего файла (по MD5, например); Загружает файл на публичное хранилище и передает контрольную сумму получателю файла; Получатель файла скачивает файл, считает его контрольную сумму на своей стороне и сверяет ее с оригинальной, которую посчитал владелец файла; Получатель и Владелец кидают смешные стикеры в Telegram друг другу из стикерпака про лягушку Пепе. Как работает контрольная - простым языком Контрольная сумма - результат некой хэш – функции. Запомнили. Далее, что такое хэш – функция? Это функция, которая получает на вход массив данных, «прокручивает» эти данные по определенному алгоритму и дает на выходе битовую строку, длина которой задана заранее. Не вдаваясь в подробности сложных алгоритмов, так это и работает: Массив данных на вход (файл); Магия внутри; Контрольная сумма на выходе! Как рассчитать контрольную сумму? Будем использовать криптографическую функцию MD5. Скачиваем утилиту WinMD5Sum по ссылке: https://sourceforge.net/projects/winmd5sum/. Установите ее и идем дальше. Итак, вот мой заветный дистрибутив. Лежит в папке: Запускаем WinMD5Sum: Тут все предельно просто. Просто в поле File Name выбираем наш дистрибутив и нажимаем кнопку Calculate. Зачастую, как только вы выберите файл в поле File Name через кнопку поиску (три точки), то подсчет хэша начнется без нажатия на кнопку Calculate. Огонь. Копируйте значение из поля MD5 Sum и сохраняйте себе отдельно. Теперь, по легенде, мы берем этот файл и отправляем другу/партнеру/коллеге. Выкладываем файл на FTP, а контрольную сумму передаем ему отдельно – по смс, емаил, в чате. Далее, давайте рассмотрим процесс с точки зрения получателя файла. Как сверить контрольную сумму? Мы получили файл и его контрольную сумму. Как ее проверить? Все так же, как и при расчете контрольной суммы! Сначала считаем контрольную сумму скачанного файла: С одним лишь отличием. Теперь мы берем контрольную сумму которая была посчитана ранее, вставляем ее в поле Compare и нажимаем кнопку Compare: Вот и все. Наша контрольная сумма совпала, а это значит, что файл во время загрузки поврежден не был. Иначе, мы бы получили вот такое значение:
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59