我有一個在Ubuntu上運行的SHOUTcast服務器。服務器進程運行良好,但我似乎無法讓守護進程腳本正常運行。以下幾個教程,我發現我想出了這個: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的東西 - 這是我現在明白保持了程序運行的「沉默」的背景 - 我得到這個消息,該程序關閉:
[email protected]:/etc/init.d# service sc32d start
Starting SC...
[email protected]:/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
[email protected]:/etc/init.d#
[email protected]:/etc/init.d# ps -C sc_serv
PID TTY TIME CMD
[email protected]:/etc/init.d#
我還在過程研究究竟是什麼的/ dev/null的做了,爲什麼,所以我想跑與手都在/ dev/null的東西,我做到了這些命令,而這也正是我得到了某種錯誤代碼:
[email protected]:/etc/init.d# /home/apps/shout32/sc_serv /home/apps/shout32/sc_plex.conf > /dev/null 2>&1 &
[2] 2261
[email protected]:/etc/init.d#
[2]- Exit 255 /home/apps/shout32/sc_serv /home/apps/shout32/sc_plex.conf > /dev/null 2>&1
[email protected]:/etc/init.d# ps -C sc_serv
PID TTY TIME CMD
不幸的是,從簡短的研究數量來看,我聽起來像'退出225'就像是一個全面的代碼錯誤代碼,超出了可接受的代碼範圍。
整個問題的有趣的部分是這樣的:當我瀏覽到/ home /應用/ shout32 /文件夾,然後運行命令在那裏,不完整的路徑...該死的東西的工作原理:
[email protected]:/home/apps/shout32# ./sc_serv sc_plex.conf > /dev/null 2>&1 &
[2] 2245
[email protected]:/home/apps/shout32#
[email protected]:/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 /家庭/應用/ 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
我得到這個:
[email protected]:/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
[email protected]:/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
是的,在我的OP後我自己的故障排除中,我確定這是與/ logs有關的事情。確實有一個/home/apps/shout32/logs/sc_serv.log我試着改變文件夾/文件的權限和內容......但是你的建議並沒有超出我的想法。我如何直接將腳本操作,就好像它在X目錄中一樣? –
哦!我看到你在說什麼,只需用cd/home/apps/shout32啓動腳本....讓我現在就去試試吧! –
我更新了OP的結果,沒有運氣。也許我很嚴重誤解你的建議。 –