Трудности запуска скрипта при запуске

Я использую Ubuntu 16.04 с подключенным usb-адаптером cec для управления моим телевизором. Я использую модифицированную версию этого скрипта , чтобы запустить cec-server, который принимает и отправляет команды.

Итак, скрипт работает; всякий раз, когда я запускаю его вручную после загрузки. Когда я выпускаю pidof cec-client, он дает мне идентификатор, и я могу отправлять команды в cec-server, которые работают немедленно. Так все прекрасно.

Однако я просто не могу заставить его работать через crontab или через автозагрузку приложений. pidof cec-client не вернет идентификатор, и я не могу отправлять команды.

TL; DR: скрипт работает, когда я запускаю его вручную. Не работает через crontab. Хотите запустить его автоматически после перезагрузки.

РЕДАКТИРОВАТЬ:

Используемый мной crontabline @reboot /home/server/Documents/cecserver.sh

Сам сценарий:

#!/bin/bash
#
# Set up a fifo and connect cec-client to it
#
# Original By Will Cooke.  http://www.whizzy.org

CECLOG="/home/server/Documents/logs/cec.log"
CECDEV="/dev/ttyACM0"
CECFIFO="/home/server/Documents/logs/cec.fifo"
CECCLIENT="/usr/bin/cec-client -d 1 -p 1 -o Codex"

timestamp(){
 date +"%Y-%m-%d %T"
}

log(){
    echo "SERVER $(timestamp):  $1" >> $CECLOG
}

echo "SERVER $(timestamp): File loaded ($1)" >> $CECLOG

log "Starting server.  Since only one server can run at a time, stopping first."
log "Begin shutting down..."
declare -a TAILPIDS=(`ps aux | grep 'tail -f /dev/null' | egrep -v grep | awk '{print $2}'`)
declare -a CATPIDS=(`ps aux | grep 'cat $CECFIFO' | egrep -v grep | awk '{print $2}'`)
if [ ${#TAILPIDS[@]} -gt 0 ]
  then
    log "Found some tail processes..."
    for i in "${TAILPIDS[@]}"
      do
        log "Killing $i"
        kill $i
      done
fi

if [ ${#CATPIDS[@]} -gt 0 ]
  then
      log "Found some cat processes..."
      for i in "${CATPIDS[@]}"
        do
      log "Killing $i"
      kill $i
    done
fi

log "Asking cec-client to stop if it's running..."
killall -s 2 cec-client >> $CECLOG
log "Trying to remove FIFO..."
rm $CECFIFO >> $CECLOG
log "Done shutting down."
log "Done stopping, now starting..."
log "Setting up FIFOs..."
mkfifo $CECFIFO
log "Open pipe for writing..."
tail -f /dev/null > $CECFIFO &
log "Opening pipe for reading and start cec-client..."
(cat $CECFIFO | $CECCLIENT &) > /dev/null
log "Start up complete."

exit 0
1
задан 14 December 2017 в 00:40

0 ответов

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

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