|
|
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Интересует, как это реализовать в shell или perl-скрипте. Хотелось бы что-нибудь типа -- Попробовать установить семафор с уникальным именем -- Если не удалось установить, значит скрипт уже кем-то запущен. выругаться и аварийно завершить скрипт. p.s. скрипт может выполняться разными пользователями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 15:22 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
0xffИнтересует, как это реализовать в shell или perl-скрипте. Хотелось бы что-нибудь типа -- Попробовать установить семафор с уникальным именем -- Если не удалось установить, значит скрипт уже кем-то запущен. выругаться и аварийно завершить скрипт. p.s. скрипт может выполняться разными пользователями. Например в скрипте, в начале проверять некий файл. Если есть - exit, если нет - создать файл и выполнять скрипт. В конце удалить этот файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 16:29 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Sleeping Daemon0xffИнтересует, как это реализовать в shell или perl-скрипте. Хотелось бы что-нибудь типа -- Попробовать установить семафор с уникальным именем -- Если не удалось установить, значит скрипт уже кем-то запущен. выругаться и аварийно завершить скрипт. p.s. скрипт может выполняться разными пользователями. Например в скрипте, в начале проверять некий файл. Если есть - exit, если нет - создать файл и выполнять скрипт. В конце удалить этот файл. Не подходит, ненадежно: -- скрипт запускается, создает файл-семафор и начинает работать -- скрипт убивается через kill / выдергивается шнур из розетки (утрирую, конечно ;) -- при следующем запуске скрипт увидит файл-семафор и подумает, что предыдущий экземпляр работает, хотя это не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 16:44 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
при запуске в файл кладется pid, проверяем есть такой pid (ps-м или kill -0) в линуксе удобно checkproc startproc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 17:01 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
в шел скрипте пид вычисляется так: echo $$ > /tmp/script_name.pid ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 17:03 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Журавлев Дениспри запуске в файл кладется pid, проверяем есть такой pid (ps-м или kill -0) в линуксе удобно checkproc startproc скрипт может выполняться под разными пользователями. есть ли гарантия, что по заданному pid можно определить, что процесс запущен, даже если он запущен из-под другого пользователя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 17:09 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Журавлев Денисв шел скрипте пид вычисляется так: echo $$ > /tmp/script_name.pid спасибо, как раз хотел погуглить по этому вопросу ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 17:13 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
0xffЖуравлев Дениспри запуске в файл кладется pid, проверяем есть такой pid (ps-м или kill -0) в линуксе удобно checkproc startproc скрипт может выполняться под разными пользователями. есть ли гарантия, что по заданному pid можно определить, что процесс запущен, даже если он запущен из-под другого пользователя?pid это номер процесса, без разницы от кого он запущен. А вообще ps доступен? Может можно и без файлика обойтись просто искать ps -ef|grep nameofsh|grep -v $$|wc -l ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 17:22 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис wrote: > просто искать ps -ef|grep nameofsh|grep -v $$|wc -l и покажет ли ps процессы другого юзера не под рутом? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 19:22 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Kochmin_Alexandr Журавлев Денис wrote: > просто искать ps -ef|grep nameofsh|grep -v $$|wc -l и покажет ли ps процессы другого юзера не под рутом? В нормальной системе покажет. -ef или aux показывают вообще все процессы, даже init В ненормальной системе возможно что вообще ничего не покажет. А если 500 тыс. процессов то ps будет работать час. Поэтому универсальный способ это: pid в файлик, kill -0 `cat файлик` ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 20:38 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2009, 02:02 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисПоэтому универсальный способ это: pid в файлик, kill -0 `cat файлик` shell'овский kill вернёт одинаковый результат, если нет процесса и если нет прав доступа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2009, 04:49 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисА вообще ps доступен? Может можно и без файлика обойтись просто искать ps -ef|grep nameofsh|grep -v $$|wc -l Да, ps доступен. Но способ не особенно понравился из-за Журавлев ДенисА если 500 тыс. процессов то ps будет работать час . Час не час, но если есть возможность обойтись без потенциальных задержек (pid в файл+kill), наверное, так и стоит делать. Денис, спасибо за информацию! Relic Hunter Код: plaintext Просто супер, спасибо! lockfile и буду использовать, есть в системе + понравилось возможность легко поставить retries ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2009, 09:11 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
ЁшЖуравлев ДенисПоэтому универсальный способ это: pid в файлик, kill -0 `cat файлик` shell'овский kill вернёт одинаковый результат, если нет процесса и если нет прав доступа нифига либо нет такого процесса либо нет разрешения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2009, 09:12 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисЁшЖуравлев ДенисПоэтому универсальный способ это: pid в файлик, kill -0 `cat файлик` shell'овский kill вернёт одинаковый результат, если нет процесса и если нет прав доступа нифига либо нет такого процесса либо нет разрешения Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2009, 13:27 |
|
||
|
(linux) Предотвращение повторного запуска скрипта
|
|||
|---|---|---|---|
|
#18+
ЁшЖуравлев ДенисЁшЖуравлев ДенисПоэтому универсальный способ это: pid в файлик, kill -0 `cat файлик` shell'овский kill вернёт одинаковый результат, если нет процесса и если нет прав доступа нифига либо нет такого процесса либо нет разрешения Код: plaintext 1. 2. 3. 4. 5. 6. я понимаю что код возврата один тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2009, 14:22 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=36080099&tid=1485679]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 291ms |
| total: | 577ms |

| 0 / 0 |
