На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
winhex
Сообщения: 223
ОС: Debian
Сообщение
winhex » 14.10.2011 11:57
Для запуска клиента openvpn используется такая строчка:
Код: Выделить всё
sudo openvpn --daemon --config config.ovpn --askpass passfile
Нужно, чтобы один скрипт при запуске проверял, запущен ли openvpn, и в случае если нет, запускал его, а если запущен, убивал.
Заранее спасибо
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 14.10.2011 12:01
Код: Выделить всё
[ -n "$(pidof openvpn)" ] && kill -9 $(pidof openvpn) || sudo openvpn --daemon --config config.ovpn --askpass passfile
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
winhex
Сообщения: 223
ОС: Debian
Сообщение
winhex » 14.10.2011 12:22
SLEDopit ,спасибо, но я сделал как-то так:
Код: Выделить всё
if [ "$(pidof openvpn)" ]
then
killall openvpn
else
openvpn --daemon --config config.ovpn --askpass passfile
fi
Какой вариант более правильный?
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 14.10.2011 12:43
winhex писал(а): ↑ 14.10.2011 12:22
Какой вариант более правильный?
Оба.
Просто вы полностью расписали конструкцию, а я - нет.
По сути if [ smth ] then comm else comm fi то же самое, что и [ smth ] && comm || comm. Просто разные записи.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux
Сообщение
watashiwa_daredeska » 14.10.2011 12:59
SLEDopit писал(а): ↑ 14.10.2011 12:43
По сути if [ smth ] then comm else comm fi то же самое, что и [ smth ] && comm || comm. Просто разные записи.
Нет, не то же самое.
Shell
$ if true; then false; else echo fail; fi
$ true && false || echo fail
fail
Собственно, конструкцию для перезапуска можно записать так:
Код: Выделить всё
kill $(pidof openvpn) || openvpn --daemon --config config.ovpn --askpass passfile
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE
Сообщение
t.t » 14.10.2011 13:05
SLEDopit писал(а): ↑ 14.10.2011 12:43
winhex писал(а): ↑ 14.10.2011 12:22
Какой вариант более правильный?
Оба.
Просто вы полностью расписали конструкцию, а я - нет.
По сути if [ smth ] then comm else comm fi то же самое, что и [ smth ] && comm || comm. Просто разные записи.
Не совсем то же самое. В Вашем варианте третья команда выполнится, если _любая_ из первых двух завершится с ошибкой:
Код: Выделить всё
t $ if true; then false; else echo 'catch you!'; fi
t $ true && false || echo 'catch you!'
catch you!
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE
Сообщение
t.t » 14.10.2011 13:15
watashiwa_daredeska писал(а): ↑ 14.10.2011 12:59
Нет, не то же самое.
Shell
$ if true; then false; else echo fail; fi
$ true && false || echo fail
fail
Синхронно мыслим. (:
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус
Сообщение
KiWi » 17.10.2011 03:59
watashiwa_daredeska писал(а): ↑ 14.10.2011 12:59
SLEDopit писал(а): ↑ 14.10.2011 12:43
По сути if [ smth ] then comm else comm fi то же самое, что и [ smth ] && comm || comm. Просто разные записи.
Нет, не то же самое.
Shell
$ if true; then false; else echo fail; fi
$ true && false || echo fail
fail
Собственно, конструкцию для перезапуска можно записать так:
Код: Выделить всё
kill $(pidof openvpn) || openvpn --daemon --config config.ovpn --askpass passfile
pkill openvpn
P.S.: если совсем точно -- pkill -x openvpn.
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo
Сообщение
Ленивая Бестолочь » 18.10.2011 10:17
KiWi писал(а): ↑ 17.10.2011 03:59
pkill openvpn
типа не проверяет, вдруг нет такого. типа не круто :-)
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux
Сообщение
watashiwa_daredeska » 18.10.2011 14:46
Ленивая Бестолоч... писал(а): ↑ 18.10.2011 10:17
типа не проверяет, вдруг нет такого. типа не круто :-)
Проверяет. Если такого нет или нет прав на убиение, то возвращает ненулевой статус.
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo
Сообщение
Ленивая Бестолочь » 19.10.2011 13:50
ах ты черт, а я думал он ругнётся.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.