Процесс уничтожения скрипта linux bash и запуск его снова после уничтожения

На моем компьютере запущено несколько браузеров Chrome с разными профилями. Профили называются «prof1», «prof2» и «prof3». Теперь мне нужно сделать скрипт, который убивает определенный процесс хрома и снова перезапускает его.

Я не могу использовать команду killall, потому что мне нужно указать, какой браузер Chrome я хочу убить, и если я использую команду kill, сценарий завершается после команды kill.

Я пробовал что-то вроде этого:

#!/bin/bash

kill -9 `ps ax | grep -i prof1 | awk '{print $1}'` &
sleep 2

export DISPLAY=:0.0

/usr/bin/chromium-browser --restore-last-session --user-data-dir=/path/to/prof1/ %U &

Этот скрипт работает хорошо, но после команды kill он завершается (с надписью «Убит»), и браузер больше никогда не запускается. Команда kill не имеет «тихой» опции. Нет смысла пытаться 2>&1, потому что вывод «Killed» поступает из терминала, а не из stderr/stdout. Я пробовал "set -e" и многие другие вещи, но безуспешно.

Любая помощь/советы кому-нибудь?


person user3647376    schedule 28.07.2014    source источник
comment
export DISPLAY=:0.0; /usr/bin/chromium-browser --restore-last-session --user-data-dir=/path/to/prof1/ %U & работает один?   -  person konsolebox    schedule 28.07.2014
comment
Не используйте ps | grep, используйте pgrep. Я подозреваю, что вы можете найти и убить себя.   -  person Etan Reisner    schedule 28.07.2014


Ответы (1)


Что вы можете использовать, так это флаг --full/-f pkill, который будет соответствовать всей командной строке:

$ sleep 1d &
[1] 23335
$ pkill -f 'sleep 1d'
[1]+  Terminated              sleep 1d

И вам не следует использовать kill -9.

person l0b0    schedule 28.07.2014