在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/sbinif [ -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
關於解除安裝。
如果在開機啟動腳本里面加入了 開機啟動,請自行刪除掉。
如果服務正在執行請停止
然後刪除掉所在服務目錄即可