Iniciando o jackd na inicialização [duplicado]

0

Eu estou executando um sistema headless pi de framboesa, que acabará por ser um reprodutor de música generativa. Agora estou tentando fazer com que o jackd rode na inicialização, mas não tenho certeza de como.

Eu posso executar o comando

jackd -R -dalsa

E o jack funciona bem. No entanto, isso me impede de poder executar mais comandos no console, com as últimas linhas sendo

ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback

Eu coloquei o jackd em um script init.d também, no entanto, o mesmo problema aparece. O que eu gostaria é de uma maneira de o JackD iniciar em um processo separado, ou uma maneira de entregar "o controle" de volta a outros scripts de inicialização ou ao usuário.

M problema é diferente que o comentado em que eu gostaria de iniciar um daemon (eu não sabia disso antes, mas agora parece ser a opção sensata)

    
por jackdoff 07.02.2018 / 02:07

2 respostas

0

Dependendo da distribuição e versão, você pode fazer o seguinte (da velha escola à última técnica):

VELHA ESCOLA:

vi /etc/rc.local
cd /path/where/jackd/
jackd -R dalsa &>/dev/null &

MODO MAIS NOVO:

vi /etc/init.d/jack

(cole isso em seguida, modifique os caminhos, etc.):

#!/bin/sh
#
# Startup script for Jack Daemon
#
# chkconfig: 2345 08 92
# description: Sample jackd init.d script.
# processname: jackd
# pidfile: /var/run/jackd/jackd.pid
# config: /etc/jackd.conf

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

[ -x /usr/sbin/jackd ] || exit 0

# Local jackd config
# test -f /etc/sysconfig/jackd && . /etc/sysconfig/jackd

# See how we were called.
case "$1" in
  start)
        echo -n "Starting Jack Daemon: "
        daemon jackd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/jackd
        ;;
  stop)
        echo -n "Stopping Jack Daemon: "
        killproc jackd
        rm -f /var/run/jackd/jackd.pid
        RETVAL=$?
        echo
### heres the fix... we gotta remove the stale files on restart
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/jackd
        ;;
  status)
        status jackd
        RETVAL=$?
        ;;
  restart|reload)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
  condrestart)
        [ -e /var/lock/subsys/jackd ] && $0 restart
        RETVAL=$?
        ;;
  *)
        echo "Usage: jackd {start|stop|status|restart|reload|condrestart}"
        exit 1
esac

exit $RETVAL

Agora, salve os itens acima e faça o seguinte:

chkconfig --help

(deve retornar informações de uso)

chkconfig --add jackd
chkconfig --level 2345 jackd on

agora você está pronto para iniciá-lo:

Escola antiga:

/etc/init.d/jackd start

Nova maneira:

service jackd start
    
por 07.02.2018 / 03:35
0

Eu encontrei um script preexisiting dentro do init.d que estava iniciando o daemon de log e o adaptei para iniciar o jackd.

#!/bin/sh
    #
    # Start jackd
    #

    [ -x /usr/bin/jackd ] || exit 0

    start() {
        printf "Starting JACKD: "
        start-stop-daemon -b -S -m -p /var/run/jackd.pid --exec usr/bin/jackd -- -R -dalsa
        echo "JACK OK"
    }

    stop() {
        printf "Stopping JACKD: "
        start-stop-daemon -K -q -p /var/run/jackd.pid
        echo "JACK STOPPED OK"
    }

    case "$1" in
      start)
        start
        ;;
      stop)
        stop
        ;;
      restart|reload)
        stop
        start
        ;;
      *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
    esac

    sleep 1

    exit $?
    
por 07.02.2018 / 16:25

Tags