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

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

Модератор: Bizdelnick

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

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

Сообщение Bizdelnick »

MiK13 писал:
11.04.2023 23:00
А как?
Я писал выше, с помощью pkill. Приводить пример смысла не вижу, потому что это не избавляет от остальных недостатков и не является приемлемым решением.
MiK13 писал:
11.04.2023 23:00
Это уже решает автор. Вопрос принципов именования профилей.
Нет, это вопрос раздолбайского или ответственного подхода к написанию скриптов (и вообще любого кода). При ответственном подходе недопустимо полагаться на то, что входные данные (в данном случае — командная строка произвольного процесса, запущенного в системе) будут соответствовать представлениям автора кода об их правильности. Надо допускать все теоретически возможные варианты.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1180
ОС: Linux Debian

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

Сообщение MiK13 »

Bizdelnick писал:
11.04.2023 23:13
Приводить пример смысла не вижу, потому что это не избавляет от остальных недостатков и не является приемлемым решением.
Если браузер запускается командой /usr/bin/firefox-esr -p 'f0',
то какие могут быть недостатки у команды pkill -xf "/usr/bin/firefox-esr -p $1"?
Bizdelnick писал:
11.04.2023 23:13
Надо допускать все теоретически возможные варианты.
А есть ли смысл делать это в программах, которые автор делает для личного пользования работает не под рутом?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

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

Сообщение Bizdelnick »

MiK13 писал:
16.04.2023 03:53
Если браузер запускается командой /usr/bin/firefox-esr -p 'f0',
то какие могут быть недостатки у команды pkill -xf "/usr/bin/firefox-esr -p $1"?
Такие, что процессов, подходящих под шаблон (даже не конкретно этот, а вообще любой), может быть много, а убить надо ровно один. Причём для нас не составляет проблемы узнать его PID.
Кстати:

Shell

% pgrep -a firefox-esr
854450 /usr/lib/firefox-esr/firefox-esr
%
Ой, а чего это он не в /usr/bin?
MiK13 писал:
16.04.2023 03:53
Bizdelnick писал:
11.04.2023 23:13
Надо допускать все теоретически возможные варианты.
А есть ли смысл делать это в программах, которые автор делает для личного пользования работает не под рутом?
В этом есть смысл всегда.
Во-первых, если автор пишет скрипт для личного пользования, это не значит, что ему пофиг, что происходит в его системе. Во-вторых, время, потраченное на разбирательство, почему вдруг возник тот или иной глюк, или на восстановление утраченных данных, оттого что это личное время, а не рабочее, менее ценным не становится. В-третьих, если человек не просто пишет пишет скрипты для себя, а заодно и учится, то ему надо учиться сразу делать всё правильно. В-четвёртых, если даже человек что-то там уже умеет и представляет, как надо делать правильно, но в скриптах «для личного пользования» позволяет себе раздолбайство, то он привыкнет к подходу «ну а чо, работает же», и будет так же относиться к коду, который пишет для десятков/сотен/тысяч пользователей. И в-пятых, открою страшную тайну, при рассмотрении резюме я частенько заглядываю в скрипты кандидата «для личного пользования», выложенные на гитхабе или ещё где-нибудь, и по ним сужу о его компетентности. И так делаю отнюдь не только я один.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

Всем привет!
Мои скрипты по остановке / запуску Firefox [с защитой от повторного запуска профилей] :

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

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

set -x

profiles=(f0)

DIR="/tmp"

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

}

prof="${profiles[0]}"

if ! [ -f "${DIR}/${prof}.pid" ];  then

	startfirefox0 "${prof}" &

fi

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

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

set -x

DIR="/tmp"

kill $(cat "$DIR/f0.pid")

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

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

set -x

profiles=(f1)

DIR="/tmp"

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

}

prof="${profiles[0]}"

if ! [ -f "${DIR}/${prof}.pid" ];  then

	startfirefox1 "${prof}" &

fi

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

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

set -x

DIR="/tmp"

kill $(cat "$DIR/f1.pid")

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

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

set -x

profiles=(7601)

DIR="/tmp"

startfirefox2() {
	local PID prof
	prof=$1
        /opt/firefox/7601/firefox/firefox-bin -p '7601' -n "${prof}" &
	PID=$!
	echo ${PID} >"${DIR}/${prof}.pid"
       	ls "${DIR}/${prof}.pid"
	wait
	rm "${DIR}/${prof}.pid"

}

prof="${profiles[0]}"

if ! [ -f "${DIR}/${prof}.pid" ];  then

	startfirefox2 "${prof}" &

fi

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

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

set -x

DIR="/tmp"

kill $(cat "$DIR/7601.pid")

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

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

set -x

profiles=(50)

DIR="/tmp"

startfirefox3() {
	local PID prof
	prof=$1
        /opt/firefox/50/firefox/firefox-bin -p '50' -n "${prof}" &
	PID=$!
	echo ${PID} >"${DIR}/${prof}.pid"
       	ls "${DIR}/${prof}.pid"
	wait
	rm "${DIR}/${prof}.pid"

}

prof="${profiles[0]}"

if ! [ -f "${DIR}/${prof}.pid" ];  then

	startfirefox3 "${prof}" &

fi

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

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

set -x

DIR="/tmp"

kill $(cat "$DIR/50.pid")

C универсальным скриптом запуска не получилось пока, к сожалению.
Добавлено (13:58):

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

#!/bin/sh
#2023xxxx Ver. 0. Cкрипт: script_nvf.sh для запуска новых версий Firefox

"$HOME/f0.bash"

"$HOME/f1.bash"

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

#!/bin/sh
#2023xxxx Ver. 0. Cкрипт: k_script_nvf.sh для завершения работы новых версий Firefox

"$HOME/k_f0.bash"

"$HOME/k_f1.bash"

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

#!/bin/sh
#2023xxxx Ver. 0. Cкрипт: script_ovf.sh для запуска старых версий Firefox

"$HOME/7601.bash"

"$HOME/50.bash"

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

#!/bin/sh
#2023xxxx Ver. 0. Cкрипт: k_script_ovf.sh для завершения работы старых версий Firefox

"$HOME/k_7601.bash"

"$HOME/k_50.bash"

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

#!/bin/sh
#2023xxxx Ver. 0. Cкрипт: script_ovf_nvf.sh для запуска старых и новых версий Firefox

"$HOME/7601.bash"

"$HOME/50.bash"

"$HOME/f0.bash"

"$HOME/f1.bash"

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

#!/bin/sh
#2023xxxx Ver. 0. Cкрипт: k_script_ovf_nvf.sh для завершения работы старых и новых версий Firefox

"$HOME/k_7601.bash"

"$HOME/k_50.bash"

"$HOME/k_f0.bash"

"$HOME/k_f1.bash"

Добавлено (14:08):
Скажите, пожалуйста: уже лучше, чем в прошлый раз было?
Спасибо сказали:
countmein
Сообщения: 56

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

Сообщение countmein »

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

$(cat "$DIR/f0.pid")
Можно упростить до

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

$(< "$DIR/f0.pid")
Лишнюю программу не запускать.
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1379
ОС: Slackware

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

Сообщение UnixNoob »

igor@igor
А стоит дублировать код, с одинаковым функционалом, в отдельные файлы? Мне кажется стоит подумать об аргументах командной строки в этом случае.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

UnixNoob писал:
17.04.2023 16:55
igor@igor
А стоит дублировать код, с одинаковым функционалом, в отдельные файлы? Мне кажется стоит подумать об аргументах командной строки в этом случае.
Конечно нет.
Мне ormorph "рецепт" дал по уменьшению кода: один стартующий скрипт должен
быть...
Но у меня не получается реализовать пока, к сожалению.
=> Нужно ешё пробовать...
...
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

Жаль только для любителей скриптов, теперь нет такого как kommander под старыми кедами. Теперь только под TDE остался. Это попытка совместить дизайнер форм и скрипты. Эта штука активно используется в веб редакторе quanta+, для всяких диалогов.
Spoiler
Изображение
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

ormorph писал(а):
17.04.2023 21:40
Жаль только для любителей скриптов, теперь нет такого как kommander под старыми кедами. Теперь только под TDE остался. Это попытка совместить дизайнер форм и скрипты. Эта штука активно используется в веб редакторе quanta+, для всяких диалогов.
А мне как поможет? Скажите, пожалуйста.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

igor@igor писал:
17.04.2023 22:39
А мне как поможет? Скажите, пожалуйста.
Если на каждую кнопку навесить скрипт, то вполне поможет запускать и убивать нажатием кнопки.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

ormorph писал(а):
17.04.2023 22:46
Если на каждую кнопку навесить скрипт, то вполне поможет запускать и убивать нажатием кнопки.
Cпасибо!
Но я с универсальным скриптом запуска пока "балуюсь"!))))
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

А что там с ними баловаться. Вот универсальный для убивания.
Spoiler

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

#!/bin/bash

profiles=($@)

DIR="/tmp/xtermpids"

for prof in "${profiles}"
do
	if [ -f "${DIR}/${prof}.pid" ] ; then
		kill $(cat "${DIR}/${prof}.pid")
	fi
done
Универсальный для запуска там вообще просто, я уже говорил как. Там немного изменить тот пример который я выкладывал. Вот пример видюшка. Там на кнопки навешан запуск скриптов типа:

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

#!/bin/bash
$HOME/<путь>/script.sh < profile or list profile >
Это всё довольно просто.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

Да давали примеры. Только я "криво" похоже сделал. У меня в универсальном скрипте выводится:

.pid

А должно:

[название профиля].pid

Мои скрипты:

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

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

set -x

#profiles=(f1)

profiles=($@)

DIR="/tmp"

startfirefox1() {
	local PID prof
	prof=$1
#        /usr/bin/firefox-esr -p "f1" -n "${prof}" &

#        /usr/bin/firefox-esr -p "$@" -n "${prof}" &

#        /usr/bin/firefox-esr -p "" -n "${prof}" &

        /usr/bin/firefox-esr -p  -n "${prof}" &


	PID=$!
	echo ${PID} >"${DIR}/${prof}.pid"
        ls "${DIR}/${prof}.pid"
	wait
	rm "${DIR}/${prof}.pid"

}

#prof="${profiles[0]}"

prof="${profiles[@]}"

if ! [ -f "${DIR}/${prof}.pid" ];  then

	startfirefox1 "${prof}" &

fi

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

#!/bin/sh

"$HOME/f1.bash"

./prof.sh <профиль>

И ...

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

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

set -x

DIR="/tmp"

#kill $(cat "$DIR/f1.pid")

kill $(cat "$DIR/$@.pid")

Я скрипты изменил...

В итоге, что я не так делаю? Скажите, пожалуйста.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

Для xterm такой пример:
Spoiler

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

#!/bin/bash

profiles=($@)
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
	if ! [ -f "${DIR}/${prof}.pid" ] ;  then
		startXterm "${prof}" &
	fi
done
Для firefox по идее должна быть такая команда:

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

firefox-esr -P "${prof}" &
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

Cпасибо!
Буду пробовать ...
...
Добавлено (01:53):
ormorph писал(а):
18.04.2023 00:50
Для firefox по идее должна быть такая команда:
Cовершенно верно. Только "до ума" универсальный скрипт запуска довести нужно...
...
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

igor@igor писал:
18.04.2023 01:04
Только "до ума" универсальный скрипт запуска довести нужно...
Знать бы ещё какой смысл вы в это вкладываете.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

ormorph писал(а):
18.04.2023 09:39
Знать бы ещё какой смысл вы в это вкладываете.
Как это какой смысл? Элементарно: правильный запуск / остановка ПО .
У меня Fluxbox . И ярлычки с кнопочками для запуска софта я "прикручивать" не хочу.
=> Всё со скриптов запускаю...
Я лучше своё время на написание правильных скриптов потрачу, чем на флажки и галочки.)))))
Добавлено (11:25):
Не понимаю в чём дело? Запускаю:
$HOME/firefox_nn.sh < f1 >
Получаю ошибку:
bash: синтаксическая ошибка рядом с неожиданным маркером «newline»

Содержимое скрипта [сжал до предела. И однострочник делал. Все разрывы строк убрал...] :

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

#!/bin/bash
# shellcheck disable=SC2034  # Unused variables left for readability
# shellcheck disable=SC2046
set -x
profiles=( "$@" )
DIR="/tmp"
startfirefox()
{
local PID prof
prof=$1
firefox-esr -P "${prof}" &
PID=$!
echo -e 'start' ${PID} >"${DIR}/${prof}.pid"
ls "${DIR}/${prof}.pid"
wait
rm -f "${DIR}/${prof}.pid"
}
prof="${profiles[0]}"
if ! [ -f "${DIR}/${prof}.pid" ]
then
startfirefox "${prof}" &
fi

Что не так? Скажите, пожалуйста.
Добавлено (11:30):
Также, dos2unix , shellcheck использовал...
...
cat -A / -v firefox_nn.sh
Использовал...
...
Спасибо сказали:
countmein
Сообщения: 56

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

Сообщение countmein »

igor@igor писал:
18.04.2023 11:08
Не понимаю в чём дело? Запускаю:
$HOME/firefox_nn.sh < f1 >
Получаю ошибку:
bash: синтаксическая ошибка рядом с неожиданным маркером «newline»
Угловые скобки -- это чтение и запись файла. Просто так в командной строке они не должны присутствовать. А из кода скрипта зря убрали отступы, без них хуже видно, где что.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

countmein писал:
18.04.2023 11:55
Угловые скобки -- это чтение и запись файла. Просто так в командной строке они не должны присутствовать. А из кода скрипта зря убрали отступы, без них хуже видно, где что.
Да точно. Без угловых у меня профиль запускался. Но только один. А вот два уже нет, к сожалению. Как быть?
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

igor@igor писал:
18.04.2023 12:12
А вот два уже нет, к сожалению. Как быть?
Если вы при создании в названии профиля использовали угловые скобки, то надо бы в команде вызова их заключить в кавычки, раз уж уже додумались заключить $@ в кавычки то дело за малым:

Shell

$ cat test.sh
#!/bin/bash

profiles=("$@")
echo "${profiles[0]}"
echo "${profiles[1]}"

Shell

./test.sh f0 "< f1 >"
f0
< f1 >
igor@igor писал:
18.04.2023 11:08
Как это какой смысл?
Ну так вы мои ожидания полностью оправдали, к сожалению:
countmein писал:
18.04.2023 11:55
А из кода скрипта зря убрали отступы, без них хуже видно, где что.
Добавлено (12:36):
Вам надо было исправить совсем немного, только названия функций изменить и команду вызова и путь к pid файлам, а вы всё равно всё расфигачили, убрали цикл перебора профилей зачем то.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

ormorph писал(а):
18.04.2023 12:31
А из кода скрипта зря убрали отступы, без них хуже видно, где что.
У меня старая версия скрипта есть.
Добавлено (12:57):
ormorph писал(а):
18.04.2023 12:31
Ну так вы мои ожидания полностью оправдали, к сожалению:
В смысле?
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

igor@igor писал:
18.04.2023 12:53
У меня старая версия скрипта есть.
Я вам дал уже готовое решение, вам только осталось изменить там команду запуска вместо xterm, и всё будет работать. А вы всё равно что то мудрите.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

ormorph писал(а):
18.04.2023 12:31
Вам надо было исправить совсем немного, только названия функций изменить и команду вызова и путь к pid файлам, а вы всё равно всё расфигачили, убрали цикл перебора профилей зачем то.
Так а цикл перебора профилей вроде незачем. Или я опять, Вас, не так пару сообщений назад понял?
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

igor@igor писал:
18.04.2023 13:04
Так а цикл перебора профилей вроде незачем.
Вам же нужно было несколько профилей одновременно запускать.

Shell

$ ./script.sh prof1 prof2
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

ormorph писал(а):
18.04.2023 13:07
Вам же нужно было несколько профилей одновременно запускать.
Иногда, но не всегда...
...
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

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

Сообщение ormorph »

igor@igor писал:
18.04.2023 13:14
Иногда, но не всегда...
На то он и универсальный скрипт, что запустит столько профилей сколько надо. Такой же и универсальный скрипт для убивания процессов, убьет столько, сколько профилей запущено(точнее указано в параметрах запуска скрипта).
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

ormorph писал(а):
18.04.2023 12:31
Если вы при создании в названии профиля использовали угловые скобки, то надо бы в команде вызова их заключить в кавычки, раз уж уже додумались заключить $@ в кавычки то дело за малым:
Я в кавычки заключил, чтобы shellcheck "не ругался")))))
Добавлено (13:23):
ormorph писал(а):
18.04.2023 13:17
На то он и универсальный скрипт, что запустит столько профилей сколько надо. Такой же и универсальный скрипт для убивания процессов, убьет столько, сколько профилей запущено(точнее указано в параметрах запуска скрипта).
Получается мне цикл возвращать опять?
Спасибо сказали:
countmein
Сообщения: 56

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

Сообщение countmein »

Если профиль один, то цикл один раз и сработает.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

countmein писал:
18.04.2023 13:25
Если профиль один, то цикл один раз и сработает.
А понял. Спасибо!
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

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

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

Окончательно [может быть пока] :

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

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

set -x

profiles=($@)

DIR="/tmp"

startfirefox() {
	local PID prof
	prof=$1

        firefox-esr -P "${prof}" &

	PID=$!
	echo ${PID} >"${DIR}/${prof}.pid"
        ls "${DIR}/${prof}.pid"
	wait
	rm "${DIR}/${prof}.pid"

}

for prof in "${profiles[@]}"

do

	if ! [ -f "${DIR}/${prof}.pid" ] ; then

	startfirefox "${prof}" &

	fi

done

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

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

set -x

profiles=($@)

DIR="/tmp"

for prof in "${profiles}"
do
	if [ -f "${DIR}/${prof}.pid" ] ; then
		kill $(cat "${DIR}/${prof}.pid")
	fi
done

Спасибо сказали:
Ответить