2015-05-15 2 views
-1

Я пытаюсь добавить новый crontab, который открывает окно экрана и выполняет команду php внутри этого окна.Запустить экран и команду crontab

То, что я пытаюсь:

sudo crontab -e 
10 0 * * * * screen -d -m php /var/www/script.php 

Это не создает экран, но, если я удалю после -m, создает нормальный. Этот код возвращает, что я должен работать на терминале

10 0 * * * * screen -d 

Как я могу это сделать? Возможно?

Спасибо.

Редактировать

Разобрался. То, что я должен был сделать, это отправить несколько команд подключенного экрана, например:

screen -S sessionname -X stuff 'command'`echo -ne '\015'` 

echo -ne '\015' эмулирует нажатия на клавише Enter.

Это было упомянуто здесь: https://superuser.com/a/274071

ответ

1

Аналогичный вопрос был задан в How do I use crontab to start a screen session?

В хрон, у вас нет терминала (смотри, например, Linux: Difference between /dev/console , /dev/tty and /dev/tty0). экран хочет работать в терминале. Для его запуска в этой ситуации требуется специальная обработка.

Согласно мнениям documentation, сочетание -d и -m вариантов рассматривается специально:

-d -m

Начало экрана в режиме "отделенной". Это создает новый сеанс, но не привязаны к нему. Это полезно при запуске системы скриптов.

В вашем примере,

php /var/www/script.php 

представляет собой команду для запуска. Он может полагаться на переменные среды, которые должны быть настроены для обеспечения правильной работы (например, PATH). Принятый ответ в другом вопросе показывает, как можно инициализировать оболочку (.profile), например, для установки среды. Ваша оболочка может использовать .bash_profile и т. Д., Но принцип тот же.

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