myshansun Опубликовано 1 февраля, 2007 Жалоба Поделиться Опубликовано 1 февраля, 2007 Здравствуйте! Как узнать запущен ли скрипт на bash из самого скрипта? Нужно для предотвращения повторного запуска из другого терминала. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Hans R. Steiner Опубликовано 1 февраля, 2007 Жалоба Поделиться Опубликовано 1 февраля, 2007 ps Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
myshansun Опубликовано 1 февраля, 2007 Автор Жалоба Поделиться Опубликовано 1 февраля, 2007 Нет это не подходит... Поскольку запускается из самого скрипта вылезает много строчек, причем каждый раз по-разному... Нет ли другого способа, например определить pid скрипта. Через pidof не получается тоже. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Hans R. Steiner Опубликовано 1 февраля, 2007 Жалоба Поделиться Опубликовано 1 февраля, 2007 man ps ps -C bash -o pid= Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
SignFinder Опубликовано 1 февраля, 2007 Жалоба Поделиться Опубликовано 1 февраля, 2007 проще использовать lock файл. Скрипт при запуске создает файл blabla.lck а при останове удаляет его. А другим скриптам нужно просто смотреть есть файл lck или нет. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
myshansun Опубликовано 1 февраля, 2007 Автор Жалоба Поделиться Опубликовано 1 февраля, 2007 Dr.Spectre писал(а) Thu, 01 February 2007 17:03 проще использовать lock файл. Скрипт при запуске создает файл blabla.lck а при останове удаляет его. А другим скриптам нужно просто смотреть есть файл lck или нет. Пробовал ваш вариант, хороший, НО.... скрипт могут прервать в любой момент и тогда лок-файл будет висеть неудаленным! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Legalizer Опубликовано 1 февраля, 2007 Жалоба Поделиться Опубликовано 1 февраля, 2007 Просто предположение (не знаю, так ли работает grep). А что если сделать ps | grep <script> и смотреть exit code отработавшего grep? Т.е. если он найдет, то по моей логике должен вернуть 0, а если нет - еще чего-нибудь. еще раз повторюсь, это просто предположение, сам я и двух строчек в жизни не написал Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ineu Опубликовано 1 февраля, 2007 Жалоба Поделиться Опубликовано 1 февраля, 2007 myshansun писал(а) Thu, 01 February 2007 16:29 Dr.Spectre писал(а) Thu, 01 February 2007 17:03 проще использовать lock файл. Скрипт при запуске создает файл blabla.lck а при останове удаляет его. А другим скриптам нужно просто смотреть есть файл lck или нет. Пробовал ваш вариант, хороший, НО.... скрипт могут прервать в любой момент и тогда лок-файл будет висеть неудаленным! Ну вообще-то перехват сигналов еще никто не отменял. А если проще - то действительно лучше пользоваться ps. Куча строчек очень просто лечится grep'ом Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
allez Опубликовано 1 февраля, 2007 Жалоба Поделиться Опубликовано 1 февраля, 2007 myshansun писал(а) Thu, 01 February 2007 21:29 скрипт могут прервать в любой момент и тогда лок-файл будет висеть неудаленным! А на этот случай lock-файлы создаются либо в виде "name.lck.<PID процесса>", либо этот самый PID содержится внутри lock-файла. При необходимости поводится простая проверка вида "ps ax | grep <PID>" и если такого процесса нет, файл удаляется. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Hans R. Steiner Опубликовано 1 февраля, 2007 Жалоба Поделиться Опубликовано 1 февраля, 2007 Люююдиии, зачем grep? Я же дал строку... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
myshansun Опубликовано 2 февраля, 2007 Автор Жалоба Поделиться Опубликовано 2 февраля, 2007 Спасибо всем! Нашел комплексное решение - lock-файлы + ps -C Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.