如何将 icecast 作为服务并重新启动它?
How to make icecast as service and restart it?
我使用 direct download 在我的服务器上安装了 Icecast 2.4.3 以获得最新版本。
这样,我没有使用我的发行版(debian 8)分发的版本,因此默认情况下没有激活守护进程。
我找到了一个脚本,修改了我对应的路径,但是执行出错
脚本icecast.sh
:
#!/bin/bash
#
# Init file for Icecast server daemon
#
# chkconfig: 345 55 25
# description: Icecast streaming mp3 server daemon
#
# processname: icecast
# config: /etc/icecast.xml
# pidfile: /var/run/icecast.pid
# source function library
# . /etc/rc.d/init.d/functions : returns an error on debian 8
. /lib/lsb/init-functions
# pull in sysconfig settings
[ -f /etc/sysconfig/icecast ] && . /etc/sysconfig/icecast
RETVAL=0
prog="icecast"
# Some functions to make the below more readable
PREFIX=/usr/local
PATH=$PATH:$PREFIX/bin
PIDFILE=/icecast/icecast.pid
CONF_FILE=/icecast/conf/icecast.xml
[ -f $PREFIX/bin/icecast ] || ( echo Failed to locate icecast binary: $PREFIX/bin/icecast && exit )
[ -f $CONF_FILE ] || ( echo Failed to locate icecast configuration file: $CONF_FILE && exit )
OPTIONS="-b -c $CONF_FILE"
start()
{
echo -n $"Starting $prog:"
ulimit -c unlimited # dump core for debugging purposes
ulimit -n 32768
daemon icecast icecast $OPTIONS
RETVAL=$?
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/icecast
echo
pidof icecast > $PIDFILE
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog:"
killproc icecast -TERM
RETVAL=$?
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/icecast
echo
rm -f $PIDFILE
return $RETVAL
}
reload()
{
echo -n $"Reloading $prog:"
killproc icecast -HUP
RETVAL=$?
echo
return $RETVAL
}
condrestart()
{
[ -e /var/lock/subsys/icecast ] && restart
return 0
}
case "" in
start)
start
;;
stop)
stop
;;
restart)
stop
# wait for listening sockets to clear
echo "Waiting 5 seconds before restarting..."
sleep 5
start
;;
reload)
reload
;;
condrestart)
condrestart
;;
status)
status icecast
RETVAL=$?
;;
*)
echo $"Usage: [=10=] {start|stop|restart|reload|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
我在做 sh icecast.sh status
时遇到的错误:
# sh icecast.sh status
icecast.sh: line 93: status : unknow command
Q1: 我该如何解决这个错误?
Q2:如何获得像icecast restart service
这样的功能命令?
Q3: 如果服务器自动重启,我应该怎么做才能自动重启Icecast?
答案是使用来自 debian backports or if you e.g. need TLS support the package from official Xiph.org repositories.
的 proper 包
这保证您将收到包更新,而无需自己监控版本并找出必要的更改。
另请注意,目前 Linux/Unix 的最新版本是 2.4.2,如 2.4.3是 Windows 唯一的版本。如果为 Linux/Unix.
编译,代码是相同的
- 从您的发行版安装一个软件包(
apt-get install icecast2
、yum install icecast
,随便)。通常 pakage manager 也会安装 init 脚本,让你 start/stop Icecast.
- 使用
which icecast
或 whereis icecast
获取您的 Icecast 路径
- 下载 Icecast,从源代码构建它(比如如果您需要用 Icecast-kh 分支替换官方 Icecast 或使用您自己的编译标志)。
- 将 (2) 中的原始 icecast 二进制文件替换为您构建的二进制文件。不过,最好备份原始版本。
/etc/inid/icecast restart
或 systemctr restart icecast
现在应该可以与您的 Icecast 版本一起使用了。
- 确保您的 Icecast 将在重启后启动 运行
systemctl enable icecast
我使用 direct download 在我的服务器上安装了 Icecast 2.4.3 以获得最新版本。
这样,我没有使用我的发行版(debian 8)分发的版本,因此默认情况下没有激活守护进程。
我找到了一个脚本,修改了我对应的路径,但是执行出错
脚本icecast.sh
:
#!/bin/bash
#
# Init file for Icecast server daemon
#
# chkconfig: 345 55 25
# description: Icecast streaming mp3 server daemon
#
# processname: icecast
# config: /etc/icecast.xml
# pidfile: /var/run/icecast.pid
# source function library
# . /etc/rc.d/init.d/functions : returns an error on debian 8
. /lib/lsb/init-functions
# pull in sysconfig settings
[ -f /etc/sysconfig/icecast ] && . /etc/sysconfig/icecast
RETVAL=0
prog="icecast"
# Some functions to make the below more readable
PREFIX=/usr/local
PATH=$PATH:$PREFIX/bin
PIDFILE=/icecast/icecast.pid
CONF_FILE=/icecast/conf/icecast.xml
[ -f $PREFIX/bin/icecast ] || ( echo Failed to locate icecast binary: $PREFIX/bin/icecast && exit )
[ -f $CONF_FILE ] || ( echo Failed to locate icecast configuration file: $CONF_FILE && exit )
OPTIONS="-b -c $CONF_FILE"
start()
{
echo -n $"Starting $prog:"
ulimit -c unlimited # dump core for debugging purposes
ulimit -n 32768
daemon icecast icecast $OPTIONS
RETVAL=$?
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/icecast
echo
pidof icecast > $PIDFILE
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog:"
killproc icecast -TERM
RETVAL=$?
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/icecast
echo
rm -f $PIDFILE
return $RETVAL
}
reload()
{
echo -n $"Reloading $prog:"
killproc icecast -HUP
RETVAL=$?
echo
return $RETVAL
}
condrestart()
{
[ -e /var/lock/subsys/icecast ] && restart
return 0
}
case "" in
start)
start
;;
stop)
stop
;;
restart)
stop
# wait for listening sockets to clear
echo "Waiting 5 seconds before restarting..."
sleep 5
start
;;
reload)
reload
;;
condrestart)
condrestart
;;
status)
status icecast
RETVAL=$?
;;
*)
echo $"Usage: [=10=] {start|stop|restart|reload|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
我在做 sh icecast.sh status
时遇到的错误:
# sh icecast.sh status
icecast.sh: line 93: status : unknow command
Q1: 我该如何解决这个错误?
Q2:如何获得像icecast restart service
这样的功能命令?
Q3: 如果服务器自动重启,我应该怎么做才能自动重启Icecast?
答案是使用来自 debian backports or if you e.g. need TLS support the package from official Xiph.org repositories.
的 proper 包这保证您将收到包更新,而无需自己监控版本并找出必要的更改。
另请注意,目前 Linux/Unix 的最新版本是 2.4.2,如 2.4.3是 Windows 唯一的版本。如果为 Linux/Unix.
编译,代码是相同的- 从您的发行版安装一个软件包(
apt-get install icecast2
、yum install icecast
,随便)。通常 pakage manager 也会安装 init 脚本,让你 start/stop Icecast. - 使用
which icecast
或whereis icecast
获取您的 Icecast 路径
- 下载 Icecast,从源代码构建它(比如如果您需要用 Icecast-kh 分支替换官方 Icecast 或使用您自己的编译标志)。
- 将 (2) 中的原始 icecast 二进制文件替换为您构建的二进制文件。不过,最好备份原始版本。
/etc/inid/icecast restart
或systemctr restart icecast
现在应该可以与您的 Icecast 版本一起使用了。- 确保您的 Icecast 将在重启后启动 运行
systemctl enable icecast