предотвратить приостановку из запускаемого cron сценария оболочки

Я записываю трансляцию ATSC (наземное телевидение США) со сценарием. Я хотел бы автоматизировать сценарий с помощью crontab, чтобы он мог записывать телешоу без присмотра. Сценарий включает команду gnome-session -hibit, чтобы остановить переход компьютера в спящий режим во время выполнения сценария. Это работает нормально, если я запускаю его в окне терминала bash (я использую Ubuntu 18.04). Запись начинается и продолжается, даже если запись длится дольше, чем время простоя системы, которое вызывает приостановку. (Например, я открываю окно терминала и выполняю сценарий для записи шоу в течение 1,5 часов. Компьютер не дремлет, даже если для параметра питания задано значение «1». В дальнейшем компьютер все еще остается в спящем режиме. .)

Проблема в том, что когда я вызываю скрипт из crontab, компьютер не бодрствует. Запись начинается, но затем компьютер переходит в спящий режим, когда достигается время простоя, как будто я вообще не использовал команду gnome-session-запретить. Процесс такой:

  1. Разбудить компьютер с помощью etherwake от моего маршрутизатора (это работает)
  2. Выполнить скрипт tv-recording.sh через crontab моего рабочего стола
[ 117] Вот мой сценарий. Это модифицированная версия скрипта, найденная на https://www.linuxtv.org/wiki/index.php/Zap#Exiting_after_tuning

#!/bin/bash
# record ATSC transport stream
# e.g. ./tv-recording.sh WJWFOX 3600
# gnome-session-inhibit keeps the computer awake until all the commands complete
# the -r sets azap for recording and -p makes the file pretty for vlc

echo "[ ./.tv-recording.sh channel=$1 seconds=$2 show name=$3]"
PREFIX=`date +%F` # part of filename
FNAME=/dvr/${PREFIX}_$3.ts

   echo "..Selecting channel $1"
   ( /usr/bin/azap -r -p $1 > /dev/null 2>&1 )&
   ps1=$!

   echo "..Starting recording of ${FNAME}"
   ( /bin/cat /dev/dvb/adapter0/dvr0 > ${FNAME} )&
   ps2=$!

   echo ..Recording for $2 seconds.
   echo ..Inhibiting Suspend during recording
   ( /usr/bin/gnome-session-inhibit --inhibit suspend --inhibit-only)&
   ps3=$!

   sleep $2

# exit the processes, with the suspend inhibitor last

   echo All done 
   kill $ps2  $ps1 $ps3
#

Что мне нужно сделать по-другому сделать эту работу в хрон?

0
задан 27 April 2019 в 20:13

0 ответов

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

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