저는 결국 생성 음악 플레이어가 될 헤드리스 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 $?