ps внутри crontab не видит запущенного процесса

У меня есть этот робот worker.py, который я просто запускаю как:

python worker.py --details

С этим роботом много проблем, поэтому он продолжает снижаться каждые 30 минут.

] Когда робот работает, ps aux | grep worker.py дает мне вывод:

root      3870  6.2 11.7 997960 59052 pts/0    Sl   10:47   0:32 python worker.py --details
root      4030  0.0  0.4   9752  2312 pts/0    S+   10:55   0:00 grep --color=auto worker

Итак, я установил мой cron для работы каждые 10 минут с помощью этой команды:

cd /path/to/boot && if [ 2 -gt `ps aux | grep worker.py | wc -l` ]; then python worker.py --detail &> /dev/null ; fi

проблема:

Если я просто запускаю команду выше прямо в командной строке, она отлично работает (если робот работает, ничего не происходит, если робот не работает, он снова встает). Когда cron запускает команду, он создает новый процесс каждые 10 минут (борясь с моей базой данных), потому что он не видит текущий процесс, я полагаю. *

Все выше сделано как root, Я думаю, что речь идет не о проблемах пользователя.

Спасибо

1
задан 21 June 2016 в 17:23

1 ответ

cron не может найти процесс с ps aux, ps COLUMNS по умолчанию - 80. ie вывод команды ps усечен до 80 COLUMNS.

ps -aef before column set:
admin    28695     1  0 08:37 ?        00:00:00 /usr/bin/python /home/admin/MyP

ps -aef after column set:
admin    28695     1  0 08:37 ?        00:00:00 /usr/bin/python /home/admin/MyPython/test.py

Добавить столбцы в начало crontab, начиная как ниже, и это исправит проблему.

crontab ниже:

SHELL=/bin/bash
COLUMNS=160
37 08 * * * /home/admin/MyPython/test.py >>  /home/admin/MyPhon/test.py.log 2>&1 &

test.py содержит ниже:

cmd1="ps -aef >> /home/admin/MyPython/test_ps.txt; echo COLUMNS: ${COLUMNS} ${Shell}>> /home/admin/MyPython/test_ps.txt;"
print cmd1
os.system(cmd1)

Надеюсь, он ответит. [ ! d4]

0
ответ дан 23 May 2018 в 09:03

Другие вопросы по тегам:

Похожие вопросы: