我正在运行一个无头树莓派系统,它最终将成为一个生成音乐播放器。我现在试图让 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 $?