gpt4 book ai didi

shell - SHOUTcast 守护程序脚本无法正常运行

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:45 25 4
gpt4 key购买 nike

我有一个在 Ubuntu 上运行的 SHOUTcast 服务器。服务器进程运行良好,但我似乎无法让守护程序脚本正常运行。按照几个教程,我发现我想到了这个:

#!/bin/sh

CONFIG="/home/apps/shout32/sc_plex.conf"
DAEMON="/home/apps/shout32/sc_serv"

case "$1" in
start)
echo "Starting SC..."
$DAEMON $CONFIG > /dev/null 2>&1 &
;;
stop)
echo "Stopping SC..."
kill -9 `ps -C sc_serv -o pid --no-headers`
;;
restart)
echo "Rebooting SC..."
kill -9 `ps -C sc_serv -o pid --no-headers`
$DAEMON $CONFIG > /dev/null 2>&1 &
;;
*)
echo "usage: service sc32d {start | stop | restart}"
exit 1
;;
esac

然而,这是行不通的。我不知道很多这意味着什么,所以我开始逐行分解它。如果我删除/dev/null 的东西——据我所知,这会让程序在后台“静默”运行——我收到这条消息,程序关闭:

root@streams3:/etc/init.d# service sc32d start
Starting SC...
root@streams3:/etc/init.d# 2013-05-21 14:41:50 E msg:<***> logger could not open file logs/sc_serv.log
2013-05-21 14:41:50 I msg:<***> Logger shutdown

root@streams3:/etc/init.d#
root@streams3:/etc/init.d# ps -C sc_serv
PID TTY TIME CMD
root@streams3:/etc/init.d#

我仍在研究/dev/null 到底做了什么以及为什么,所以我想手动运行这些命令和所有/dev/null 的东西,我做到了,这就是我得到某种东西的地方错误代码:

root@streams3:/etc/init.d# /home/apps/shout32/sc_serv /home/apps/shout32/sc_plex.conf > /dev/null 2>&1 &
[2] 2261
root@streams3:/etc/init.d#
[2]- Exit 255 /home/apps/shout32/sc_serv /home/apps/shout32/sc_plex.conf > /dev/null 2>&1
root@streams3:/etc/init.d# ps -C sc_serv
PID TTY TIME CMD

不幸的是,从我所做的少量研究来看,“Exit 225”听起来像是一个包罗万象的错误代码,适用于超出可接受代码范围的代码。

整个问题中有趣的部分是:当我导航到/home/apps/shout32/文件夹并在那里运行命令时,没有完整路径......该死的东西有效:

root@streams3:/home/apps/shout32# ./sc_serv sc_plex.conf > /dev/null 2>&1 &
[2] 2245
root@streams3:/home/apps/shout32#
root@streams3:/home/apps/shout32# ps -C sc_serv
PID TTY TIME CMD
2245 pts/0 00:00:00 sc_serv

所以,是不是因为脚本文件在/etc/init.d/中而不是应用程序所在的文件夹中,所以有些事情搞砸了?据我所知,我按照已发布的教程中的每一步在 Ubuntu 中设置 SHOUTcast,然后制作守护进程……我认为我没有遗漏任何内容。我有一种感觉,解决方案要么直接盯着我看,要么是某种让我有点头疼的模糊权限问题。

但如果有任何帮助,我们将不胜感激!


因此,根据下面的回答,我将 cd/home/apps/shout32/添加到脚本中的 START 命令,还添加了 pwd 和 ls... 以查看我们是否可以消除脚本无法执行的事实找到/log/目录。

现在我的脚本是:

CONFIG="/home/apps/shout32/sc_plex.conf"
DAEMON="/home/apps/shout32/sc_serv"

cd /home/apps/shout32/

case "$1" in
start)
echo "Starting SC..."
cd /home/apps/shout32/
pwd
ls
$DAEMON $CONFIG &
;;
stop)
echo "Stopping SC..."
kill -9 `ps -C sc_serv -o pid --no-headers`
;;
restart)
echo "Rebooting SC..."
kill -9 `ps -C sc_serv -o pid --no-headers`
$DAEMON $CONFIG &
;;
*)
echo "usage: service sc32d {start | stop | restart}"
exit 1
;;
esac

我明白了:

admin@streams3:/etc/init.d$ service sc32d start
Starting SC...
/home/apps/shout32
changes.txt readme.txt sc_serv_debug.conf
config_builder sc_plex.conf sc_serv_public.conf
control sc_serv sc_serv_relay.conf
docs sc_serv2_linux_07_31_2011.tar sc_serv_simple.conf
logs sc_serv_basic.conf tos.txt
admin@streams3:/etc/init.d$ 2013-06-05 17:52:08 E msg:<***> logger could not open file logs/sc_serv.log
2013-06-05 17:52:08 I msg:<***> Logger shutdown

最佳答案

您的第二个代码段包含 logger could not open file logs/sc_serv.log。因此它尝试写入一个文件 sc_serv.log 它期望或想要在目录 logs 中创建它期望在 current directory。这也解释了当您先 cd 到/home/apps/shout32/时它会起作用。我想有一个文件 /home/apps/shout32/logs/sc_serv.log

你能配置那个文件的位置吗?不能在脚本开头添加一些 cd ... 吗?

关于shell - SHOUTcast 守护程序脚本无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16677906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com