Завершить процесс (Например, браузера)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Завершить процесс

Сообщение igor@igor »

Всем привет!
У меня установлен браузер Firefox с отдельными профилями [f0 ; f1]
Профили запускаю со сприптов f0.sh ; f1.sh из эмулятора терминала...
Сами скрипты:

Код: Выделить всё


#!/bin/sh
#Cкрипт f0.sh для запуска ПО: браузера Firefox и профиля f0

/usr/bin/firefox-esr -p 'f0'

Код: Выделить всё


#!/bin/sh
#Cкрипт f1.sh для запуска ПО: браузера Firefox и профиля f1

/usr/bin/firefox-esr -p 'f1'

Понятно, что можно "жестко прибить" с помощью ctrl+c любой из профилей лисы: f0 / f1
pkill 'профиль' не помогает( [для мягкого завершения процесса]
pkill PID процесса - "убиваю" [процесс] - гуд!
pkill firefox - завершаю все профили [а мне надо один профиль из двух, например. Без указания PID процесса]
...

Вопрос: как быть?
Скажите, пожалуйста.
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1379
ОС: Slackware

Re: Завершить процесс

Сообщение UnixNoob »

Видимо городить что-то подобное, используя wmctrl: раз, два
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

Сохранять PID в файл и брать оттуда для завершения. И не pkill, а kill.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

Можно так же убивать профили через kill. Просто записывать pid в файл или ещё куда.

Код: Выделить всё

#!/bin/sh
#Cкрипт f0.sh для запуска ПО: браузера Firefox и профиля f0

/usr/bin/firefox-esr -p 'f0' &
PID=$!
echo ${PID} >/путь/pidfile0
профили так же будут убиваться по отдельности по pid через kill.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Cпасибо всем!
Буду разбираться...
...
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

"Причесал" скрипты:

Код: Выделить всё


#!/bin/sh
#2023xxxx Ver. 1. Cкрипт f1.sh для запуска ПО: браузера Firefox ESR и профиля f1

/usr/bin/firefox-esr -p 'f1' &

PID=$!

echo ${PID} >"$HOME/f0001"

Код: Выделить всё


#!/bin/sh
#2023xxxx Ver. 0. Cкрипт k_f1.sh для завершения ПО: браузера Firefox ESR и профиля f1

while read -r a; do
    printf '\nПроцесс браузера Firefox ESR и профиля f1 %s'"$a"' завершён.\n\n'
    kill "$a"
done < 'f0001'

Скрипты протестировал.
Всё чётко..!
...
Добавлено (07:49):
Нужно с остальным ПО / процессами побаловаться...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

Теперь задачка: что будет, если Firefox завершится, а файл останется? Тот же PID может быть присвоен другому процессу.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1180
ОС: Linux Debian

Re: Завершить процесс

Сообщение MiK13 »

Можно попробовать такой вариант.
С помощью pgrep -la firefox | grep $PROFIL найти нужный firefox, затем из этой строки через awk или cut выделить PID (первое слово) и потом выдать на него kill
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

Bizdelnick писал:
07.04.2023 11:50
Теперь задачка: что будет, если Firefox завершится, а файл останется? Тот же PID может быть присвоен другому процессу.
Проверку то не долго организовать.

Shell

ps -p <PID>|grep -q firefox && kill <PID>
grep если совпадение найдено возвращает 0, если нет то 1, по этому его можно прописывать непосредственно в операторе if вместо условия.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

MiK13 писал:
07.04.2023 12:21
Можно попробовать такой вариант.
С помощью pgrep -la firefox | grep $PROFIL найти нужный firefox, затем из этой строки через awk или cut выделить PID (первое слово) и потом выдать на него kill
Какой ужас.
Это всё можно сделать одной командой pkill. Но не нужно. Вообще не стоит использовать в скриптах pgrep/pkill/killall и т. п., добром это не заканчивается.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

ormorph писал(а):
07.04.2023 13:08
Bizdelnick писал:
07.04.2023 11:50
Теперь задачка: что будет, если Firefox завершится, а файл останется? Тот же PID может быть присвоен другому процессу.
Проверку то не долго организовать.

Shell

ps -p <PID>|grep -q firefox && kill <PID>
А если там другой процесс firefox будет?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

Bizdelnick писал:
07.04.2023 13:21
А если там другой процесс firefox будет?
Это довольно редкий случай, но тут проверку можно и по профилю сделать:

Shell

$ ps -C firefox-esr -o pid,cmd|grep "\-p f0" |grep -q <PID> && kill <PID>
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

ormorph писал(а):
07.04.2023 14:07
Это довольно редкий случай
Про закон Мерфи слышали, не?
ormorph писал(а):
07.04.2023 14:07
проверку можно и по профилю сделать
Костыли, костыли… Ладно, даю правильное решение: pid-файл надо удалить по завершении firefox.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Bizdelnick писал:
07.04.2023 13:20
Это всё можно сделать одной командой pkill. Но не нужно. Вообще не стоит использовать в скриптах pgrep/pkill/killall и т. п., добром это не заканчивается.
Эх! А я предполагал, что pkill можно(
...
Тогда, мне все свои скрипты по завершению процессов "перепиливать" нужно((((
Добавлено (19:48):
Bizdelnick писал:
07.04.2023 18:40
Костыли, костыли… Ладно, даю правильное решение: pid-файл надо удалить по завершении firefox.
Да ещё какие костыли( Мне аж плохо от таких конструкций стало((((((((((((
У меня была мысль: удаление файла организовать... [Интуиция меня редко подводит)))]
Тогда, во всех скриптах по завершению процессов, нужно корректное удаление файлов PID организовать...
...
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

Bizdelnick писал:
07.04.2023 18:40
Костыли, костыли… Ладно, даю правильное решение: pid-файл надо удалить по завершении firefox.
Если процесс завершается скриптом то да, так можно. Если в ручную завершается, то запускающий скрипт должен ещё проверять наличие процесса через определенное время, и как только процесс завершается удалять файл.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

ormorph писал(а):
07.04.2023 21:43
Если процесс завершается скриптом то да, так можно. Если в ручную завершается, то запускающий скрипт должен ещё проверять наличие процесса через определенное время, и как только процесс завершается удалять файл.
Проверять? Что проверять?

Код: Выделить всё

wait
rm -f "$pidfile"
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Bizdelnick писал:
07.04.2023 22:03
Проверять? Что проверять?
А я немного не так в новых версиях скриптов сделал...
Добавлено (22:28):

Код: Выделить всё

#!/bin/sh
#2023xxxx Ver. 1. Cкрипт k_f0.sh для завершения ПО: браузера Firefox ESR и профиля f0

while read -r b; do
    printf '\nПроцесс браузера Firefox ESR и профиля f0 %s'"$b"' завершён.\n\n'
    kill "$b"
done < 'f0000'

rm f0000

Код: Выделить всё

#!/bin/sh
#2023xxxx Ver. 1. Cкрипт k_f1.sh для завершения ПО: браузера Firefox ESR и профиля f1

while read -r a; do
    printf '\nПроцесс браузера Firefox ESR и профиля f1 %s'"$a"' завершён.\n\n'
    kill "$a"
done < 'f0001'

rm f0001

На всякий пожарный случай [для перестраховки] :
pgrep -l f [в терминале]

Если лисы в процессах нет, то гуд! :)
Добавлено (22:41):
=> С такой политикой партии!
Нужно все скрипты завершения процессов "перепилить"!)))))))))))
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Код: Выделить всё

#!/bin/sh
#2023xxxx Ver. 1. Скрипт: xterm.sh для запуска эмулятора терминала xterm

/usr/bin/xterm &

PID=$!

echo ${PID} >"$HOME/xterm0"

Код: Выделить всё

#!/bin/sh
#2023xxxx Ver. 1. Скрипт: k_xterm.sh для завершения работы эмулятора терминала xterm

while read -r e; do
    printf '\nПроцесс xterm %s'"$e"' завершён.\n\n'
    kill "$e"
done < 'xterm0'

rm xterm0


А вот с несколькими xterm такой трюк не прокатит, по завершению работы, ибо коллизия переменной( [c одним ещё прокатит] Вангую нужен дин. массив...
Или?
Вообще, как быть? Скажите, пожалуйста.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

igor@igor, так не годится. Файл надо удалять и в том случае, если firefox завершён не скриптом (крестиком, Ctrl+Q или ещё как). Сделать это можно только из запускающего скрипта. Так, как я написал выше.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

igor@igor писал:
08.04.2023 00:07
А вот с несколькими xterm такой трюк не прокатит, по завершению работы, ибо коллизия переменной( [c одним ещё прокатит]
Всё нужное уже прописано выше, дело только в фантазии.
Spoiler

Код: Выделить всё

#!/bin/bash
profiles=(xterm0 xterm1)
DIR="/tmp/xtermpids"
if ! [ -d "${DIR}" ] ; then
	mkdir "${DIR}"
fi

startXterm() {
	local PID prof
	prof=$1
	xterm -xrm 'XTerm.vt100.allowTitleOps: false' -n "${prof}" &
	PID=$!
	echo ${PID} >"${DIR}/${prof}.pid"
	wait
	rm "${DIR}/${prof}.pid"
}

for prof in "${profiles[@]}"
do
	startXterm "${prof}" &
done
Spoiler

Код: Выделить всё

#!/bin/bash

DIR="/tmp/xtermpids"

for pidfile in "${DIR}"/*
do
	kill $(cat $pidfile)
done
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Bizdelnick писал:
08.04.2023 02:05
igor@igor, так не годится. Файл надо удалять и в том случае, если firefox завершён не скриптом (крестиком, Ctrl+Q или ещё как). Сделать это можно только из запускающего скрипта. Так, как я написал выше.
Действительно не годится. Поэтому, я запилил три новых версии...
...
Добавлено (12:28):
ormorph писал(а):
08.04.2023 07:28
Всё нужное уже прописано выше, дело только в фантазии.
Спасибо огромное! :)
Добавлено (12:37):

Код: Выделить всё

#!/bin/sh
#2023xxxx Ver. 2. Cкрипт f1.sh для запуска ПО: браузера Firefox ESR и профиля f1

while read -r a; do
    printf '\nФайл f0001 процесса браузера Firefox ESR и профиля f1 : %s'"$a"' удалён.\n\n'
    wait
    rm -f "f0001"
done < 'f0001'

sleep 2

/usr/bin/firefox-esr -p 'f1' &

PID=$!

echo ${PID} >"$HOME/f0001"


Код: Выделить всё

#!/bin/sh
#2023xxxx Ver. 2. Cкрипт k_f1.sh для завершения ПО: браузера Firefox ESR и профиля f1

while read -r a; do
    printf '\nПроцесс браузера Firefox ESR и профиля f1 : %s'"$a"' завершён.\n\n'
    kill "$a"
done < 'f0001'

rm -f f0001


Код: Выделить всё

#!/bin/sh
#2023xxxx Ver. 2. Cкрипт k2_f1.sh для удаления файла процесса ПО: браузера Firefox ESR и профиля f1

while read -r a; do
    printf '\nФайл f0001 процесса браузера Firefox ESR и профиля f1 : %s'"$a"' удалён.\n\n'
    wait
    rm -f "f0001"
done < 'f0001'


Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

igor@igor писал:
08.04.2023 12:25
Действительно не годится. Поэтому, я запилил три новых версии...
Вам же уже готовые примеры дали, а вы всё равно что то мудрите, добавили wait там где это не нужно, и много лишнего. Команда wait ожидает завершения фонового процесса, после этого выполняется следующая команда, а у вас она просто так для красоты. Фоновый процесс это где после команды прописан знак &. Я не зря выбрал в скрипте каталог /tmp для pid, так как после перезагрузки всё содержимое из него исчезает. Вам же Bizdelnick уже написал где её(wait) нужно прописывать:
Bizdelnick писал:
08.04.2023 02:05
Сделать это можно только из запускающего скрипта. Так, как я написал выше.
Прочтите внимательно пример что я дал и попытайтесь разобраться что к чему. У меня можно любой терминал закрыть в ручную, после этого файл с pid сам автоматически будет удалён запускающим скриптом.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

ormorph писал(а):
08.04.2023 13:16
Вам же уже готовые примеры дали, а вы всё равно что то мудрите, добавили wait там где это не нужно, и много лишнего. Команда wait ожидает завершения фонового процесса, после этого выполняется следующая команда, а у вас она просто так для красоты. Фоновый процесс это где после команды прописан знак &. Я не зря выбрал в скрипте каталог /tmp для pid, так как после перезагрузки всё содержимое из него исчезает. Вам же Bizdelnick уже написал где её(wait) нужно прописывать:
Как всегда я - "дурак полный!"(((((((((((((((
...
Добавлено (21:10):
ormorph писал(а):
08.04.2023 13:16
Прочтите внимательно пример что я дал и попытайтесь разобраться что к чему. У меня можно любой терминал закрыть в ручную, после этого файл с pid сам автоматически будет удалён запускающим скриптом.
Прочитаю! Разбирусь! Виноват! Исправлюсь!
...
Спасибо, Вам, ещё раз..!
...
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Без дураков: :)

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 3. Cкрипт f0.bash для запуска ПО: браузера Firefox ESR и профиля f0

profiles=(f0)
DIR="/tmp/firefox0"
if ! [ -d "${DIR}" ] ; then
	mkdir "${DIR}"
fi

startfirefox0() {
	local PID prof
	prof=$1
        /usr/bin/firefox-esr -p 'f0' -n "${prof}" &
	PID=$!
	echo ${PID} >"${DIR}/${prof}.pid"
	wait
	rm "${DIR}/${prof}.pid"
}

for prof in "${profiles[@]}"
do
	startfirefox0 "${prof}" &
done

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 3. Cкрипт k_f0.bash для завершения ПО: браузера Firefox ESR и профиля f0
# shellcheck disable=SC2046

DIR="/tmp/firefox0"

for pidfile in "${DIR}"/*
do
	kill $(cat "$pidfile")
done

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 3. Cкрипт f1.bash для запуска ПО: браузера Firefox ESR и профиля f1

profiles=(f1)
DIR="/tmp/firefox1"
if ! [ -d "${DIR}" ] ; then
	mkdir "${DIR}"
fi

startfirefox1() {
	local PID prof
	prof=$1
        /usr/bin/firefox-esr -p 'f1' -n "${prof}" &
	PID=$!
	echo ${PID} >"${DIR}/${prof}.pid"
	wait
	rm "${DIR}/${prof}.pid"
}

for prof in "${profiles[@]}"
do
	startfirefox1 "${prof}" &
done

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 3. Cкрипт k_f1.bash для завершения ПО: браузера Firefox ESR и профиля f1
# shellcheck disable=SC2046

DIR="/tmp/firefox1"

for pidfile in "${DIR}"/*
do
	kill $(cat "$pidfile")
done

=> Нужно все скрипты в таком стиле перепилить...
...
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

igor@igor писал:
09.04.2023 05:05
Нужно все скрипты в таком стиле перепилить...
Так же много лишнего. Если вам нужно обязательно запускать каждый запускающий скрипт отдельно, то это не годится. Для начала если профили разные, то каталог можно использовать один и тот же. Так же удаление, если заранее известен профиль и удаление отдельным скриптом и убивается отдельный процесс, то не надо использовать цикл для поиска, так как pid профиля уже известен, это будет просто команда:

Код: Выделить всё

kill $(cat "$DIR/<профиль>.pid")
Так же в запускающий скрипт вам нужно добавить проверку, чтобы нельзя было запустить один и тот же профиль в тот момент, когда он уже запущен. Это не тяжело, так как тут идет проверка на наличие pid файла, это конструкция:

Код: Выделить всё

if ! [ -f "${DIR}/${prof}.pid" ] ;  then
Куда её прикрепить думайте уже сами.
Кроме того так как вам нужно каждый раз запускать разный профиль отдельно, то хватит одного универсального скрипта. Просто в запускающем скрипте приведите строчку profiles к такому виду:

Код: Выделить всё

profiles=($@)
а запускать уже скрипт можно будет такой командой:

Shell

$ ./script.sh <профиль1> <профиль2> <профиль3>
сколько профилей укажете, столько и запустит.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

ormorph писал(а):
09.04.2023 08:09
Так же много лишнего. Если вам нужно обязательно запускать каждый запускающий скрипт отдельно, то это не годится. Для начала если профили разные, то каталог можно использовать один и тот же. Так же удаление, если заранее известен профиль и удаление отдельным скриптом и убивается отдельный процесс, то не надо использовать цикл для поиска, так как pid профиля уже известен, это будет просто команда:
Эх! А я предполагал, что в этот раз у меня "крутые" скрипты..! :)
!Но...
Добавлено (10:38):
ormorph писал(а):
09.04.2023 08:09
Так же в запускающий скрипт вам нужно добавить проверку, чтобы нельзя было запустить один и тот же профиль в тот момент, когда он уже запущен. Это не тяжело, так как тут идет проверка на наличие pid файла, это конструкция:
Хорошо.
...
Добавлено (10:42):
ormorph писал(а):
09.04.2023 08:09
Куда её прикрепить думайте уже сами.
Спасибо! Подумаю...
Добавлено (10:44):
ormorph писал(а):
09.04.2023 08:09
Кроме того так как вам нужно каждый раз запускать разный профиль отдельно, то хватит одного универсального скрипта. Просто в запускающем скрипте приведите строчку profiles к такому виду:
Понял. Сделаю.
Добавлено (10:48):
ormorph писал(а):
09.04.2023 08:09
а запускать уже скрипт можно будет такой командой:
И всего то)
Добавлено (10:51):
ormorph писал(а):
09.04.2023 08:09
сколько профилей укажете, столько и запустит.
Как просто! :)
...
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

igor@igor писал:
09.04.2023 10:36
Эх! А я предполагал, что в этот раз у меня "крутые" скрипты..!
По сравнению с тем что было, оно на много лучше конечно и работу свою выполняют. Но тут нужно думать для чего вам это нужно и из этого исходить. Для универсального скрипта сложные конструкции это нормально, а для простого где запускается только один профиль нет смысла запускать функцию startfirefoxX в цикле, если она выполняется всего один раз.
Спасибо сказали:
MiK13
Сообщения: 1180
ОС: Linux Debian

Re: Завершить процесс

Сообщение MiK13 »

Bizdelnick писал:
07.04.2023 13:20
MiK13 писал:
07.04.2023 12:21
Можно попробовать такой вариант.
С помощью pgrep -la firefox | grep $PROFIL найти нужный firefox, затем из этой строки через awk или cut выделить PID (первое слово) и потом выдать на него kill
Какой ужас.
В чём именно?
Bizdelnick писал:
07.04.2023 13:20
Вообще не стоит использовать в скриптах pgrep/pkill/killall и т. п., добром это не заканчивается.
А какие могут возникнуть проблемы?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

MiK13 писал:
11.04.2023 18:58
В чём именно?
В том, что
  • это можно сделать намного проще, одной командой вместо четырёх
  • возможны нежелательные совпадения с совсем другими процессами (например, если профиль называется f1, совпадут процессы, запущенные с профилем f10, либо те, которым в командной строке был указан URL, содержащий "f1")
  • совместное использование опций -l и -a для pgrep лишено смысла
  • переменные надо заключать в двойные кавычки на случай наличия в них спецсимволов
MiK13 писал:
11.04.2023 18:58
А какие могут возникнуть проблемы?
Случайно убьёте процесс, который не надо было убивать, см. выше.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1180
ОС: Linux Debian

Re: Завершить процесс

Сообщение MiK13 »

Bizdelnick писал:
11.04.2023 20:46
  • это можно сделать намного проще, одной командой вместо четырёх
А как?
Bizdelnick писал:
11.04.2023 20:46
  • возможны нежелательные совпадения с совсем другими процессами (например, если профиль называется f1, совпадут процессы, запущенные с профилем f10, либо те, которым в командной строке был указан URL, содержащий "f1")
Это уже решает автор. Вопрос принципов именования профилей. Да и для grep можно указать опцию -w
Bizdelnick писал:
11.04.2023 20:46
  • совместное использование опций -l и -a для pgrep лишено смысла
Действительно смысла нет :) Раньше опции -a не было, и я использовал -lf (да и сейчас приходится)
Спасибо за эту информацию
Bizdelnick писал:
11.04.2023 20:46
  • переменные надо заключать в двойные кавычки на случай наличия в них спецсимволов
Ну, это само собой.
Спасибо сказали:
Ответить