2016-08-09 2 views
0

Я создал файл bash, который выполняет скрипт python на существующем экране под названием «cronscreen». Файл Баша содержит следующую строку:linux не может получить доступ к экранам на crontab

screen -S cronscreen -X stuff "python test.py$(printf \\r)" 

При запуске файла из командной строки, он отлично работает, и я вижу, вывод распечатывается, когда я присоединять мой «cronscreen». Тем не менее, я хотел бы, чтобы работать в хронах, поэтому я создал кронтаб следующим образом:

* * * * * myuser /home/myuser/myscript.sh > /home/ec2-user/agg.log 

хроны выполняются, потому что я могу видеть, что файл agg.log регенерируется каждая минута, но когда я придаю «cronscreen», я не вижу выхода, напечатанного там (и agg.log пуст). Почему это? Благодарю.

Update:

Я также попытался изменить сценарий к этому (повторно креплению экрана), но без изменений:

screen -r cronscreen 
screen -S cronscreen -X stuff "python test.py$(printf \\r)" 

ответ

1

экрана нужен TTY активного создать сеанс, который не то, что доступно под cron.

Вы должны разделить это на две части, первая является запуск экрана и сделать его снять - экран -dmS cronscreen, а затем в вашем cronjob прикрепить к сессии экрана с -r cronscreen

+0

вы должны сделать экран отключается от активного сеанса, так что у него есть tty, и вы должны использовать -dmS , чтобы сделать это – Amias

Смежные вопросы