Как убить, перезапустить программу в #Linux

Серия Linux

# plank restart

sleep 35s # ожидаем запуск

kill -9 $(pidof plank) # убиваем процесс по айди

# kill -1 $(`ps -A | grep -w plank | awk '{ print $1}'`)

sleep 2s # ждём завершения kill

plank

#где plank имя программы. если нет такой, попробуй на блокноте или калькуляторе.


предложите свои варианты в комментариях ?

GNU/Linux

1.2K постов15.6K подписчиков

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

0
Автор поста оценил этот комментарий

Там выше приведен не плохой скрин (черного цвета). Я сильно не вчитывался, но это примерно такой подход будет правильным.


Посмотрите там, как запускаются процессы.


Если хотите, я ваш подход раскритикую по каждому пункту, с разных точек зрения, сделав ответ на ваш пост.


Мы на Пикабу, но я постараюсь без мата. Там вообще можно много чего сказать, но учтите, я люблю плюсики )


Если есть время и вы готовы к критике...

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

окей давайте. плюсиков не жалко. хоть все отдам.
тот черный скрин я вообще не понял.

показать ответы
3
Автор поста оценил этот комментарий

Для статьи про kill -9 на Пикабу? В самый раз.


И в

>> kill -9 $(pidof plank)

У вас весьма известная потенциальная ошибка, даже две.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

расскажите пожалуйста подробнее
какая у меня известная потенциальная
ошибка в kill -9 $(pidof plank) ???

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

показать ответы
1
Автор поста оценил этот комментарий

killall -9 <name>

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

в скрипте не сработает. при ручном вводе в консоль работает.
верно ?

показать ответы
1
Автор поста оценил этот комментарий

угу. доля линукса на PC 4%. пропадет Линус, и как быстро сольют линух? останется только на серваках?
да и зачем развивать свое комьюнити, когда новичкам проще сваливать на реддит или любой зарубежный форум (сразу и английский прокачают)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

у windows с её галопом системных
требований и кучи ПО,
обычному человеку на ненужными,
со старта отъедающими 4гб(win10) озу ,
нет будущего.
win12- уже десятки гб и 16ядер цпу .

0
Автор поста оценил этот комментарий
#!/bin/bash
# имя процесса для kill (можно указать $1 если нужно отправлять имя процесса аргументом)
# например ./script.sh htop для убийства htop ./script.sh plank для убийства plank
PROCESS_NAME="htop"
#PROCESS_NAME=$1

# Получаем PID(ы) процесса
PIDS=$(pidof "$PROCESS_NAME")

# Проверка, что процесс(ы) существует(ют)
if [ -z "$PIDS" ]; then
echo "Процесс '$PROCESS_NAME' не найден."
exit 1
fi

# Цикл по убийству процесса
for PID in $PIDS
do
echo "Мягкое завершение процесса $PROCESS_NAME с PID $PID"
# При убийстве отлавливаем ошибку недостатка прав пользователя
PERM_ERROR=$(kill "$PID" 2>&1)
sleep 2 # ждём завершение процесса (основываясь на времени, которое требуется процессу для корректного выключения, можно подкорректировать)
if kill -0 "$PID" 2>/dev/null
then
echo "Процесс $PID не завершился. Принудительное завершение (SIGKILL)..."
kill -9 "$PID"
sleep 2 # ждём завершение процесса

if kill -0 "$PID" 2>/dev/null
then
echo "Процесс $PID всё ещё жив. Не удалось завершить."
else
echo "Процесс $PID принудительно завершён."
fi
else
# Проверяем, была ли проблема с доступом
if echo "$PERM_ERROR" | grep -q "Operation not permitted"
then
echo "Недостаточно прав для завершения процесса $PID (запустите через sudo)"
exit 1
fi
echo "Процесс $PID успешно завершён мягко."
fi
done
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

благодарю. интересный вариант, универсальный.

показать ответы
1
Автор поста оценил этот комментарий
Нет существенной разницы, запустил ты kill в терминале или запустил .sh в котором прописан kill. Единственно, может не хватать переменных окружения в некоторых случаях. Какая проблема у тебя возникает с kill в скрипте?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

если без ид он тупо не работает.
попробуйте зацементированную строчку вводить в терминал,
затем использовать её в скипте баш.

затем ту что не комментирована также.
сможете лично убедиться.

показать ответы
1
Автор поста оценил этот комментарий

Не понимаю, зачем вам это нужно, но если вы хотите стартовать программу, затем её убить и запустить заново, то можно использовать "timeout":


timeout 35s plank

plank


timeout запустит plank и убъет её через 35 сек (регулируется), затем стартует plank.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

1
Автор поста оценил этот комментарий
Не обязательно дело в сохранении данных приложения, некоторые приложения могут сохранять за собой, к примеру, данные запуска приложения, PID файлы и т.д. и если данные файлы удаляются при обычном завершении то всё нормально, а если нет, то для повторного запуска уже приходится всё это вычищать. А параметр это -15 или просто kill без параметра по умолчанию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий

Да тут чел не может закрыть терминал после исполнения скрипта, а ТС ему помогает. #comment_350061244

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

Тот чел не сподобился консоль и эмулятор терминала настроить по инструкциям в интернет и свои конфигурации не показал.

0
Автор поста оценил этот комментарий

Ок, часов через шесть. Там много букв будет.

Я пингану.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий
Зачем сразу -9? Почему сначало не пробовать "вежливое" завершение процесса (Sigterm)?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

потому что нет надобности сохранить данные приложения.
и я не помню номер сигнала Sigterm

показать ответы
1
Автор поста оценил этот комментарий

Вы не обработали ситуацию, когда нет ни одного запущенного процесса, и когда запущенных процессов больше одного (К примеру, его запустил другой пользователь).


Вторая: Вы раскрываете переменную без двойных кавычек. В зависимости от релиза могут быть разные варианты, но раскрывать лучше все-таки ставить кавычки. Тогда у вас будет гарантированный аргумент в это месте. Тут это не сильно критично, но вот был такой сбой с Solaris, там бизнес много потерял на этом. (Нужно выделить переменную, присвоить ей результат pidof plank, а затем в двойных кавычках подставить в вызов kill -9).


Есно, нужно проверить , что эта временная переменная не пуста и она имеет числовое значение.


P.S. Вы не могли за это время выкурить всю документацию :D

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

у меня процесс гарантированно один,
это программа в автозапуске при входе единственного пользователя.

благодарю. мой опыт улучшился благодаря вашей заметке.

допилю, чтобы был универсальный способ.

показать ответы
1
Автор поста оценил этот комментарий

#comment_350162230

запускать процесс можно, как-то, по разному и завершать тоже?

не советую вам никогда делиться, можно отправлять или даже вникать во что-то)

tecmint.com/run-repeat-linux-command-every-x-seconds

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

вы крут ) . благодарю за напоминание об watch утилите.

скажите пожалуйста, как вы изменили бы стартовый скрипт ?

показать ответы
1
Автор поста оценил этот комментарий
А подтверждение не будет?
А что-то удалял и мне ubuntu выдало что-то типа
Вы хотите удалить очень важные файлы, если вы уверены и ОСОЗНАЁТЕ что делаете введите ниже
Я ОСОЗНАЮ ЧТО ДЕЛАЮ
И нажмите enter
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Avenir.Sirgun

0 секунд назад

эта операция опасна и не в тему.

5
Автор поста оценил этот комментарий

Вроде это проще:

rm -rf /

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

эта операция опасна и не в тему.

показать ответы
1
Автор поста оценил этот комментарий

watch -n .997 <plank>

killall -help

зачем именно kill?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

оно первым подвернулось на глаз :)
если знаете другие способы, пожалуйста поделитесь ?

показать ответы
0
Автор поста оценил этот комментарий

Если запускают без параметров, то ругается. С одним параметром - запускает команду killall с этим парамером. Если параметров 2 и второй "!", то запускает команду killall -9 c первым параметром. Т.е. fuck_you plank запустит killall plank, а fuck_you plank ! - killall -9 plank.

раскрыть ветку (1)
Автор поста оценил этот комментарий

hard_fuck также ? как это сделать проще для понимания

1
Автор поста оценил этот комментарий

Так?

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

объясните пожалуйста что делает скрипт из вашего скриншота ?

показать ответы
0
Автор поста оценил этот комментарий

пропишите killall с полным путем или sudo killall, зависит от скрипта и как вы его запускаете.

раскрыть ветку (1)
Автор поста оценил этот комментарий

пожалуйста снизойдите до , напишите пример ?

показать ответы
4
Автор поста оценил этот комментарий

Убить программу по имени (не нужен pid): killall plank

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

показать ответы
7
Автор поста оценил этот комментарий

cat << EOF > /usr/bin/fuck_you

>#/bin/sh

>killall -9 /$1

>EOF


chmod +x /usr/bin/fuck_you


fuck_you plank

раскрыть ветку (1)
Автор поста оценил этот комментарий

благодарю.
гораздо интереснее hard_fuck_u ))

14
nalog.ru
Автор поста оценил этот комментарий

ждем с нетерпением пост, как подтирать жопу

раскрыть ветку (1)
Автор поста оценил этот комментарий

когда случилась опа, то есть разные методы подтереть.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества