1. 程式人生 > >在ubuntu下用mono-service執行SuperSocket

在ubuntu下用mono-service執行SuperSocket

  最近用開源的SuperSocket 開發了服務端。當要在mono下執行時遇到很多比較麻煩的事讓我走了不少彎路。現在將解決的方法寫出來與大家一起分享,如有不足的地方請告之小白。

  下載江大的SuperSocket上面已經自帶了

  檔案:

  

  在Config檔案裡面檢查下是否存在log4net.unix.config 在mono下執行需要這個。 在mono下可以刪除掉UninstallService.bat 和 InstallService.bat這兩個在linux下無用的。

  在mono下將我寫的bash指令碼儲存為supersocket 注意大小寫和無副檔名 拷貝到 SuperSocket.SocketService.exe 在同一目錄 

  修改SERVICE_PATH的路徑

#!/bin/sh 
# control supersocket like windows service. copy this to your Working directory then ./supersocket {start|stop|restart}
#custom your servicename

SERVICENAME="SuperSocket"
SERVICE_PID=""
SERVICE_PATH="/root/SuperSocket/" #your Working directory

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

if [ -f "/var/run/${SERVICENAME}.pid" ]; then SERVICE_PID=$(cat /var/run/${SERVICENAME}.pid) fi case "$1" in start) if [ -z "${SERVICE_PID}" ]; then mono-service -d:${SERVICE_PATH} -l:/var/run/${SERVICENAME}.pid -m:supersocket.log SuperSocket.SocketService.exe echo "${SERVICENAME} running
" else echo "${SERVICENAME} is already running!" fi ;; stop) if [ -n "${SERVICE_PID}" ]; then kill ${SERVICE_PID} echo "${SERVICENAME} stop success !" else echo "${SERVICENAME} is not running!" fi ;; restart) $0 stop sleep 1 $0 start ;; *) echo "usage: $0 {start|stop|restart}" esac exit 0

  檢查是否擁有指令碼執行許可權如果沒有對這個指令碼修改許可權 0755

  sudo chmod 755 supersocket這個指令碼的路徑

  如果是使用WinSCP直接滑鼠右鍵

  

  通過putty連線到遠端伺服器

  cd 到你服務執行的目錄

  執行下面的命令(確保你是root 如果不是請加 sudo)

  ./supersocket start

  你編寫的supersocket服務就執行起來.

  啟動:./supersocket start  停止:./supersocket stop 重啟:./supersocket restart這個和window下的 service很相似了吧 使用也很簡單。

關於隨著系統自動啟動的方法。

在/etc/rc.local 或類試的開機啟動指令碼中加入下面這一行命令:

自行替換對應的目錄

你服務所在目錄/root/SuperSocket/supersocket start

關於解除安裝。

如果在開機啟動腳本里面加入了 開機啟動,請自行刪除掉。

如果服務正在執行請停止

然後刪除掉所在服務目錄即可