진부한 표현:

진부한 표현:

저는 결국 생성 음악 플레이어가 될 헤드리스 Raspberry Pi 시스템을 실행하고 있습니다. 이제 부팅 시 jackd를 실행하려고 시도 중이지만 어떻게 실행되는지 완전히 모르겠습니다.

명령을 실행할 수 있어요

jackd -R -dalsa

잭은 대단한 활약을 펼쳤습니다. 그러나 이로 인해 콘솔에서 더 이상 명령을 실행할 수 없게 됩니다. 마지막 몇 줄은 다음과 같습니다.

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

나는 또한 jackd를 init.d 스크립트에 넣었지만 같은 문제가 발생했습니다. 내가 원하는 것은 jackd가 별도의 프로세스에서 시작되는 방법이거나 다른 시작 스크립트나 사용자에게 "제어"를 다시 제공하는 방법입니다.

남 데몬을 시작하고 싶다는 점에서 질문이 댓글과 다릅니다. (이전에는 몰랐는데 지금은 합리적인 선택인 것 같습니다)

답변1

배포판 및 버전에 따라 다음을 수행할 수 있습니다(레거시 기술에서 최신 기술까지).

진부한 표현:

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

새로운 방법:

vi /etc/init.d/jack

(이것을 붙여넣은 다음 경로 등을 수정하세요.):

#!/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

이제 위의 내용을 저장하고 다음을 수행하십시오.

chkconfig --help

(사용정보를 반환해야 함)

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

이제 시작할 준비가 되었습니다.

진부한 표현:

/etc/init.d/jackd start

새로운 방법:

service jackd start

답변2

init.d에서 로깅 데몬을 시작하는 기존 스크립트를 찾아 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 $?

관련 정보