Я записываю трансляцию ATSC (наземное телевидение США) со сценарием. Я хотел бы автоматизировать сценарий с помощью crontab, чтобы он мог записывать телешоу без присмотра. Сценарий включает команду gnome-session -hibit, чтобы остановить переход компьютера в спящий режим во время выполнения сценария. Это работает нормально, если я запускаю его в окне терминала bash (я использую Ubuntu 18.04). Запись начинается и продолжается, даже если запись длится дольше, чем время простоя системы, которое вызывает приостановку. (Например, я открываю окно терминала и выполняю сценарий для записи шоу в течение 1,5 часов. Компьютер не дремлет, даже если для параметра питания задано значение «1». В дальнейшем компьютер все еще остается в спящем режиме. .)
Проблема в том, что когда я вызываю скрипт из crontab, компьютер не бодрствует. Запись начинается, но затем компьютер переходит в спящий режим, когда достигается время простоя, как будто я вообще не использовал команду gnome-session-запретить. Процесс такой:
#!/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
#
Что мне нужно сделать по-другому сделать эту работу в хрон?