Как остановить скрипт в linux
Перейти к содержимому

Как остановить скрипт в linux

  • автор:

Как остановить процесс в shell скрипте?

Мне нужно написать shell-скрипт. Его суть сводится к цикличной загрузке модуля драйвера, запуска тестового приложения, если приложение не упало в течении трех секунд, остановки его и последующей выгрузки драйвера. Пока что написал следующее:

#!/bin/sh for((i=0; i log & sleep 3 kill pid rmmod mali rmmod ump done 

Как я понимаю, нужно воспользоваться командой kill, но как передать ей id процесса? Ну, т.е. нужно «грепнуть» jobs -l по имени процесса, но grep ведь вернет строчку, а не число.

Отслеживать
Андрей Солодовников
задан 5 апр 2018 в 13:09
Андрей Солодовников Андрей Солодовников
718 5 5 серебряных знаков 23 23 бронзовых знака

grep ведь вернет строчку, а не число вот эту строку и передавай в kill. У тебя в скрипте все абы числа — они строки (да и весь скрипт — сплошь текст), и ничего.

5 апр 2018 в 13:18

под «строчкой, а не числом», я имел ввиду не различие в концепциях string и int, а в том, что в этой строке будет еще много разного мусора: [3]+ 233 Stopped ./cube 1>&log из которого мне нужно только число 233.

5 апр 2018 в 13:29

А еще есть команда killall которая в качестве параметра принимает как раз имя процесса. killall cube должен помочь

5 апр 2018 в 13:33

@Mike, Боже, почитайте документацию что ли. $! после запуска будет содержать PID. И никогда не используйте killall в скриптах.

6 апр 2018 в 8:02

пробовали: timeout 3s cube &>log (что остановит cube после 3 секунд, но может раньше вернуться, если cube раньше завершится)

Остановить выполнение скрипта

Запрет на повторное выполнение скрипта в bash
Добрый день! Как можно запретить выполнятся скрипту, если прошлый его запуск был с ошибкой?

Выполнение локального скрипта на удаленной машине средствами Expect, Bash, SSH
Уважаемые знатоки! Есть задача, выполнить небольшой скрипт на удаленных машинах. Соединение ssh.

Как остановить выполнение команды в терминале?
бесконечно летит трафик, выполнила команду tcpdump, как остановить??

Эксперт по компьютерным сетямЭксперт NIX

12935 / 7340 / 785
Регистрация: 09.09.2009
Сообщений: 28,711

exit

Регистрация: 06.03.2014
Сообщений: 3,066

1 2 3 4
if [ -n "$(ps h -C ffmpeg)" ]; then sudo exit echo "Останавливаем выполнение скрипта" fi

Условие проходит, но выполнение скрипта не останавливается. Система дальше читает код.
Регистрация: 03.05.2020
Сообщений: 50

Лучший ответ

Сообщение было отмечено Gerd199 как решение

Решение

1 2 3 4
if [ -n "$(ps h -C ffmpeg)" ]; then echo "Останавливаем выполнение скрипта" fi exit $?

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Уддаленное выполнение скрипта
QQ Банальный вопрос, но некомпетентность не позволяет решить задачу самостоятельно. Есть 8.

Выполнение скрипта при старте иксов
Написал скрипт для запуска тачпада, поместил его в /etc/init.d ссылку на него в /etc/rc5.d. .

Выполнение скрипта в файле PHP на сервере
Такая ситуация: на сервере лежит файл (к прим. mail.php) почтового сервиса, который делает.

Автоматическое выполнение скрипта при старте Ubuntu
Доброго времени суток. Хочу что бы при старте ubuntu выполнялось несколько команд. добавляю их в.

Как в sudoers добавить выполнение скрипта без ввода пароля?
Здравствуйте. Надо дать юзеру права root на выполнение определённого скрипта. Выполняю: visudo.

Как остановить выполнение скрипта
Я на vds через cron запустил php скрипт который работает безконечно(в цикле), как мне его завершить?

Простые советы в примерах по PHP, MySQL, HTML, CSS, JS и LINUX

Простые советы разработки сайтов и приложений. Вы найдете ответы на вопросы, которые нельзя найти где-то ещё.

Как остановить PHP скрипт в Linux

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Вот простой совет по остановке процесса выполнения php-скрипта на Linux.

Вы запустили скрипт на сервере Linux и вам нужно его остановить? Не беда, решение есть.

  1. Для начала вам нужно вывести список всех работающих php-скриптов.
  2. Затем вам нужно просто убить процесс.

Выводим все работающие php-скрипты:
ps aux | grep «php»
Далее, находим в списке ваш запущенный php-скрипт:

USER PID %CPU %MEM VSZ RSS STAT START TIME COMMAND
user4816 1167 4.2 0.6 192880 79252 S+ 10:26 0:17 /usr/bin/php -c setting/php.ini myscript.php
user4816 20017 0.0 0.0 11724 820 S+ 10:35 0:00 grep —colour=auto php

Находим там наш скрипт: mysqcript.php, узнаем его PID. Обычно, это вторая колонка, следующая за колонкой user. PID = 1167

Выполняем команду:
kill 1167

Все. Процесс остановлен.

В итоге мы выполнили две комнады:

ps aux | grep «php» и kill 1167

Linux, PHP

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

Как преобразовать строку в массив в ClickHouse / How to transform string to array in ClickHouse

Сегодня я столкнулся с проблемой, что в документации ClickHouse нет функции преобразования строки в массив. Поискав в StackOverflow , я тоже ничего внятно не нашел. Попробую объяснить на примере: У вас есть некая колонка data типа String, которая хранит JSON: <"user_id":123456,"item_ids": [1203,1204,1205] ,"count":5>Вы хотите преобразовать поле item_ids в массив, чтобы в дальнейшем с ним производить любые функции по работе с массивами ( ссылка на документацию в конце поста ). Как преобразовать строку в массив из JSON Строка может содержать не в отдельной колонке, а, например, в поле json. Пример ниже продемонстрирует как этого добиться: С помощью функции visitParamExtractRaw достать значение поля item_ids в сыром виде: visitParamExtractRaw( data , ‘item_ids’ ) С помощью функции trim убрать лишние квадратные скобки по краям: trim ( BOTH ‘[]’ FROM visitParamExtractRaw( data , ‘reward_ids’ )) p.s. Можно также убрать и фигур

Как разложить массив на несколько строк в ClickHouse

Изображение

Иногда возникает ситуация, когда нужно разложить поле, содержащее столбец-массив на несколько строк, то есть вынести в столбец каждый отдельный элемент массива. Другими словами: как разгруппировать колонку в несколько строк. Например, разложить колонку room_number на несколько строк. В примере ниже мы разложили колонку room_number на несколько строк для consumer_id = 1694953573. Получаем следующий результат: Как видим из примера выше, каждый элемент массива room_numbers теперь на отдельной строке. Делается это при помощи конструкции ARRAY JOIN. Синтаксис следующий: [ LEFT ] ARRAY JOIN < array >Вместо вы должны указать колонку или выражение, которое возвращает массив. Для нашего примера запрос будет таким: SELECT consumer_id, room_number, order_date FROM orders ARRAY JOIN room_numbers as room_number WHERE consumer_id = 1694953573; Profit! Приветствуются конструктивные комментарии. Спасибо. P.S. А если поле у вас не массив, а строка, т

Экспорт одной таблицы базы данных или mysqldump одной таблицы (MySQL)

Как экспортировать одну таблицу из базы данных MySQL, используя mysqldump Например, Вам нужно произвести экспорт всего одной таблицы из всей базы данных MySQL, существует довольно простая утилита mysqldump . Синтаксис довольно прост: mysqldump —user= [имя пользователя] —host= [имя хоста или ip-адрес] —password= [пароль] [имя базы данных] [имя таблицы] > имя-файла.sql Например: mysqldump —user-root —host=127.0.0.1 —pasword=mypassword mydbname table1 > report1.sql Вот и все, все оказалось просто. Весь дамп текущей таблицы, будет находиться в файле: report1.sql Экспорт структуры таблицы MySQL Если Вам нужно экспортировать только структуру таблицы базы данных, а сами данные не нужны, то нужно просто добавить флаг —no-data . Вот пример: mysqldump —user-root —host=127.0.0.1 —pasword=mypassword —no-data mydbname table1 > report2.sql Теперь в файле report2.sql будет только структура таблицы table1. Экспорт нескольких таблиц базы дан

Как прервать выполнение процесса в скрипте

Как прервать выполнение процесса в скрипте, как по Ctrl+C ?

anonymous
28.06.04 01:33:54 MSD

Re: Как прервать выполнение процесса в скрипте

man 1 kill если надо точно также как по Ctrl+C, то по этому сочетанию процессу посылаеться сигнал SIGINT, тоесть сигнал №3 Тогда соответственно или

kill -SIGINT $PID

где $PID номер процесса

А еще более правильно

kill -SIGINT -$GID

то есть группе процессов, так как Ctrl+C посылает сигнал не одному процессу,а группе

anonymous
( 28.06.04 01:58:17 MSD )
Ответ на: Re: Как прервать выполнение процесса в скрипте от anonymous 28.06.04 01:58:17 MSD

Re: Re: Как прервать выполнение процесса в скрипте

Немного не так поставил вопрос. Скрипт запускает процесс на выполнение. И соответственно пока он не остановиться, невозможно выполнить следующую команду. Как его остановить?

anonymous
( 28.06.04 13:12:07 MSD )
Ответ на: Re: Re: Как прервать выполнение процесса в скрипте от anonymous 28.06.04 13:12:07 MSD

Re: Re: Re: Как прервать выполнение процесса в скрипте

Поправлюсь:
Немного не так поставил вопрос. Скрипт запускает процесс на выполнение. И соответственно пока этот процесс не остановиться, невозможно выполнить следующую команду в скрипте. Как его остановить?

anonymous
( 28.06.04 13:13:39 MSD )
Ответ на: Re: Re: Re: Как прервать выполнение процесса в скрипте от anonymous 28.06.04 13:13:39 MSD

Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

> Скрипт запускает процесс на выполнение. И соответственно пока этот процесс не остановиться, невозможно выполнить следующую команду в скрипте. Как его остановить?

А зачем запускать процесс, который вообще не нужен (ты ж его сразу грохать «как по ^C» собрался)?

Die-Hard ★★★★★
( 28.06.04 13:54:41 MSD )
Ответ на: Re: Re: Re: Как прервать выполнение процесса в скрипте от anonymous 28.06.04 13:13:39 MSD

Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

Запускай процесс в фоне 🙂

а потом если захочешь его убить

anonymous
( 28.06.04 15:12:33 MSD )

Re: Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

>>А зачем запускать процесс, который вообще не нужен (ты ж его сразу грохать «как по ^C» собрался)?

Чего то меня последнее время напрягаю вопросы типа «А зачем»

Может ему этот процесс надо на пару секунд

anonymous
( 28.06.04 15:54:26 MSD )

Re: Re: Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

> Чего то меня последнее время напрягаю вопросы типа «А зачем» Может ему этот процесс надо на пару секунд

А в твоем примере PID=$1 или PID=$! ?

А kill -9 или kill -2 (SIGINT)?

А твоя фамилия не Ностердамус?

Die-Hard ★★★★★
( 28.06.04 16:11:12 MSD )

Re: Как прервать выполнение процесса в скрипте

форкнуться на два процесса парент-чайлд, потом следить по таймаутам, например, чего и как. Или сделать 2 канала (парент-чайлд и чайлд-парент) между процессами для обмена информацией.

vilfred ☆☆
( 28.06.04 16:47:05 MSD )
Ответ на: Re: Как прервать выполнение процесса в скрипте от anonymous 28.06.04 01:58:17 MSD

Re: Re: Как прервать выполнение процесса в скрипте

Этот процесс не работает в фоне. 🙁

anonymous
( 28.06.04 17:00:58 MSD )
Ответ на: Re: Re: Как прервать выполнение процесса в скрипте от anonymous 28.06.04 17:00:58 MSD

Re: Re: Re: Как прервать выполнение процесса в скрипте

>>Этот процесс не работает в фоне. 🙁

Он читает что-то с терминала?

anonymous
( 28.06.04 17:04:39 MSD )

Re: Как прервать выполнение процесса в скрипте

Ты что, издеваешься, или решил в «Что?Где?Когда?» поиграть?

Сформулируй, наконец, свой вопрос.

Die-Hard ★★★★★
( 28.06.04 17:23:25 MSD )
Ответ на: Re: Как прервать выполнение процесса в скрипте от Die-Hard 28.06.04 17:23:25 MSD

Re: Re: Как прервать выполнение процесса в скрипте

Togda esli znaesh kak on budet nazyvat'sya mozhno sdelat' tak: #/bin/tcsh sleep 2; kill -9 `ps aux | grep my_process | awk ` & my_process No togda kill ub'et _VSE_ processy gde budet vstrechat'sya imya tvoego processa.

anonymous
( 28.06.04 19:21:28 MSD )
Ответ на: Re: Re: Как прервать выполнение процесса в скрипте от anonymous 28.06.04 19:21:28 MSD

Re: Re: Re: Как прервать выполнение процесса в скрипте

>>No togda kill ub’et _VSE_ processy gde budet vstrechat’sya imya tvoego processa.

Ну тогда сразу killall -9 my_process, чего мелочиться!! 😉

Кстати, никто не пробывал посылать из под рута SIGKILL иниту?

Nesk
( 28.06.04 19:49:44 MSD )
Ответ на: Re: Re: Re: Как прервать выполнение процесса в скрипте от Nesk 28.06.04 19:49:44 MSD

Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

Nesk (*) (28.06.2004 19:49:44):

> Кстати, никто не пробывал посылать из под рута SIGKILL иниту?

Стандартный вопрос «на засыпку» 🙂

Можешь смело посылать, ничего не будет: init не имеет обработчиков сигналов.

Die-Hard ★★★★★
( 28.06.04 20:10:02 MSD )

Re: Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

> init не имеет обработчиков сигналов. сорри, чувствую себя полным занудой, но не могу не поправить :) у init'а есть обработчики сигналов, но -9 его действительно не потревожит. потому, что в linux для процесса с pid == 1 SIG_DFL означает SIG_IGN. см kernel/signal.c:get_signal_to_deliver() вот эти строчки: /* Init gets no signals it doesn't want. */ if (current->pid == 1) continue;

idle ★★★★★
( 28.06.04 20:46:46 MSD )

Re: Re: Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

2idle (*) (28.06.2004 20:46:46):

Странно. Может, это — новый Деним Торнадо Автешейв?

У меня в linux-2.4.19.SuSE/kernel/ никакого упоминания о get_signal_to_deliver не содержится.

С другой стороны, man 2 kill:

It is impossible to send a signal to task number one, the init process, for which it has not installed a signal handler. This is done to assure the system is not brought down accidentally.

Die-Hard ★★★★★
( 28.06.04 23:06:20 MSD )
Ответ на: Re: Как прервать выполнение процесса в скрипте от Die-Hard 28.06.04 17:23:25 MSD

Re: Re: Как прервать выполнение процесса в скрипте

Спасибо всем, вроде немного разобрался.

anonymous
( 28.06.04 23:48:09 MSD )

Re: Re: Re: Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

> Странно. Может, это -- новый Деним Торнадо Автешейв? а что это такое? > У меня в linux-2.4.19.SuSE/kernel/ никакого упоминания > о get_signal_to_deliver не содержится. это в 2.6, в 2.4 это в arch/i386/kernel/signal.c:do_signal(): if (ka->sa.sa_handler == SIG_DFL) < /* Init gets no signals it doesn't want. */ if (current->pid == 1) continue; > It is impossible to send a signal to task number one, the > init process, for which it has not installed a signal handler. послать можно, но доставлен он не будет. ~$ perl -e 'kill 9, 1 or die "$!\n"' Operation not permitted ~$ su - Password: ~# perl -e 'kill 9, 1 or die "$!\n"' ~# собственно, что я придрался к тому, что: > init не имеет обработчиков сигналов. он, конечно, имеет. как минимум, SIGCHLD

idle ★★★★★
( 29.06.04 12:43:48 MSD )

Re: Re: Re: Re: Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

> послать можно, но доставлен он не будет. точнее, он даже будет доставлен в том смысле, что init будет прерван/разбужен, но SIG_DFL, повторю, превращается в SIG_IGN.

idle ★★★★★
( 29.06.04 14:39:38 MSD )

Re: Re: Re: Re: Re: Re: Re: Re: Как прервать выполнение процесса в скрипте

idle (*) (29.06.2004 12:43:48):

>собственно, что я придрался к тому, что:

>> init не имеет обработчиков сигналов.

Ну, я никогда в ядро на эту тему не лазил, просто верил цитированным строчкам из мануала:

> . for which it has not installed a signal handler.

Чой-то я не могу найти исходников init’а.

Из ядерного кода я понял только, что в ините не выставляются обработчики по умолчанию:

if (ka->sa.sa_handler == SIG_DFL)

/* Init gets no signals it doesn’t want. */

if (current->pid == 1)

Наверное, это и имеется в виду: init имеет только те обработчики, которые САМ выставил.

>> Странно. Может, это — новый Деним Торнадо Автешейв?

> а что это такое?

Бессмертные строчки из рекламы лосьона посте бритья!

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

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