Как создать команду cron, которая будет выполнять команду на отдельном экране?

Я создал экран, но могу ли я теперь как-нибудь выполнить команду, которая будет запускать команды на отдельном экране?

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

Спасибо за ваши усилия.

5
задан 28 November 2010 в 19:00

2 ответа

Примечание. На оригинальном плакате спрашивалось: «Как я могу сделать это в cron?». Я обновил ответ на этот адрес.

  • Получите скрипт 'inscreen' и поместите его в ~/bin/:

    # download 'inscreen' script from https://gist.github.com/1019125
    wget -O ~/bin/inscreen https://gist.github.com/gists/1019125/download
    chmod 755 ~/bin/inscreen
    
  • создайте сеанс экрана с именем ' cronjobs ':

    screen -d -m -S cronjobs

    Вы должны будете организовать это при каждой загрузке или добавить «--new-if-required» к каждой записи в crontab ниже. [ +1117]

  • Добавить записи в cron с помощью inscreen, crontab выглядит так:

    PATH = /home/YOURNAME/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    * * * * * inscreen cronjobs -- sh -c 'echo $(date): start; sleep 30; echo $(date): end; sleep 4'
    0 0 * * 0 inscreen cronjobs --keep-open --title reminder echo ==== CALL YOUR MOM ====
    0 0 * * 1 inscreen cronjobs --window 0 ls /tmp
    

Выше будет:

  • каждую минуту открытия новое окно в сеансе экрана cronjobs, которое записывает дату, спит 30 секунд и затем выходит. Окно закроется при выходе.
  • Каждое воскресенье в полночь открывайте новое окно с заголовком «Напоминание» с надписью «==== ПОЗВОНИТЕ СВОЮ МАМУ ====» и требует от вас нажать «Ввод», чтобы закрыть окно.
  • Каждый понедельник в полночь запускайте 'ls / tmp' в первом окне сеанса 'cronjobs'. Обратите внимание, что никакие другие задания «--window 0» не могут выполняться одновременно.
  • [+1121]
0
ответ дан 28 November 2010 в 19:00

более смелый ответ хорош, но немного сложен. Вы также можете просто упростить это до

screen -d -m -S mysession -t label sleep 1m

с оговоркой, что при выходе из процесса экран просто исчезнет, ​​и вы не сможете увидеть, что он записал на экран. Это может или не может быть хорошо для вашего случая. Вы можете изменить это, установив в .screenrc

defzombie ZZ 

, что будет означать, что экраны зависают после завершения процесса, пока вы не нажмете Z.

0
ответ дан 28 November 2010 в 19:00

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

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