Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Скрипт. Запрет запуска более одной копии.  (Прочитано 4134 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Простой вопрос: Как запретить системе запускать скрипт более одной копии?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт. Запрет запуска более одной копии.
« Ответ #1 : 26 Апреля 2015, 01:24:03 »
1. Проверить наличие имени скрипта в процессах, например командой pgrep
2. В скрипте предусмотреть создание lock-файла (самостоятельно или см. lockfile-progs) и проверять его наличие|отсутствие
« Последнее редактирование: 26 Апреля 2015, 01:29:44 от Azure »
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Re: Скрипт. Запрет запуска более одной копии.
« Ответ #2 : 26 Апреля 2015, 01:33:46 »
Скрипт запускается, работает (ожидание завершения работы программы) но в процессах и pgrep его нет. Это как?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт. Запрет запуска более одной копии.
« Ответ #3 : 26 Апреля 2015, 01:44:23 »
Что и как у Вас в системе знаете только Вы. Для квалифицированного ответа нужно знать что за скрипт, как Вы его запускаете и как ищите.
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Re: Скрипт. Запрет запуска более одной копии.
« Ответ #4 : 26 Апреля 2015, 01:51:34 »
Нужно просто предотвратить повторный (случайный) запуск.
Скрипт вобщем запускает FireFox всегда с чистым и настроенным (предварительно) профилем включая куки. Исправил. Теперь скрипт видит свою директорию)
(Нажмите, чтобы показать/скрыть)

Запускается с рабочего стола симлинком.
« Последнее редактирование: 26 Апреля 2015, 03:26:03 от Grrrrow »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт. Запрет запуска более одной копии.
« Ответ #5 : 26 Апреля 2015, 15:41:28 »
1. Запускаете скрипт, а ищите firefox ?
2. Знаете про firefox --profile <path>   (Start with profile at <path>) ?
3. arh_name="$script_path/mz.zip", не?
4. Вместо ~/Рабочий\ стол work_dir="$(xdg-user-dir DESKTOP)"
5. Зачем искать, потом килять? Что найдется удалится, а нет, то нет.
6. Проверка выполняется 1 командой sha512sum -с mz.zip.sha512, где mz.zip.sha512 файл содержащий строку $sha512sum_arh
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Re: Скрипт. Запрет запуска более одной копии.
« Ответ #6 : 27 Апреля 2015, 02:28:30 »
1. Да нет, ничего не ищу, все и так работает. (или я не понял)
2. Знаю. Просто мне так кажется надежнее, всегда перезаписываемый единственный дефолтный профиль,
чем второй дополнительный.
3. Да, точно. Исправлю.
4. Спасибо, не знал.
5. Не понял. Два килла: Один чтобы убить ФФ перед запуском если тот уже запущен. Второй, если после завершения будет работать еще одна копия процесса ФФ.
6. Знаю, но мне удобней в самом скрипте сумму хранить. Плюс - одним файлом меньше.

Еще есть проблемка: Создание симлинка: Если вместо явного указания имени скрипта указать $0 то ярлык получается не рабочий (с иконкой "!" ) и кавычки не помогают.

Пользователь решил продолжить мысль [time]27 Апрель 2015, 05:36:03[/time]:
Решил проблему с запуском более одной копии с помощью flock

(Нажмите, чтобы показать/скрыть)

Код: (bash) [Выделить]
#!/bin/bash
(
flock -n 9 || exit 1
Код_скрипта
) 9>/var/lock/mylockfile
« Последнее редактирование: 27 Апреля 2015, 05:05:04 от Grrrrrow »

 

Страница сгенерирована за 0.022 секунд. Запросов: 20.