私は最終的に作成音楽プレーヤーになるヘッドレス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 $?