老套:

老套:

我正在运行一个无头树莓派系统,它最终将成为一个生成音乐播放器。我现在试图让 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 在单独的进程中启动的一种方法,或者一种将“控制权”交还给其他启动脚本或用户的方法。

M 问题与评论的问题不同,因为我想启动一个守护进程(我以前不知道这一点,但现在似乎是明智的选择)

答案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 $?

相关内容