mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			127 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
### BEGIN INIT INFO
 | 
						|
# Provides:          simple-rtmp-server-api(srs-api)
 | 
						|
# RequiRED-Start:    $all
 | 
						|
# RequiRED-Stop:     $all
 | 
						|
# Default-Start:     2 3 4 5
 | 
						|
# Default-Stop:      0 1 6
 | 
						|
# Short-Description: simple-rtmp-server-api(srs-api)
 | 
						|
# Description:       https://github.com/winlinvip/simple-rtmp-server
 | 
						|
### END INIT INFO
 | 
						|
 | 
						|
# the config of ROOT, user must modify it when start srs from other directory,
 | 
						|
# it's ok to use the script by command ./etc/init.d/simple-rtmp-server
 | 
						|
ROOT="./"
 | 
						|
APP="python ./research/api-server/server.py"
 | 
						|
CONFIG="8085"
 | 
						|
 | 
						|
########################################################################
 | 
						|
# utility functions
 | 
						|
########################################################################
 | 
						|
RED="\\e[31m"
 | 
						|
GREEN="\\e[32m"
 | 
						|
YELLOW="\\e[33m"
 | 
						|
BLACK="\\e[0m"
 | 
						|
POS="\\e[60G"
 | 
						|
 | 
						|
ok_msg(){
 | 
						|
    echo -e "${1}${POS}${BLACK}[${GREEN}  OK  ${BLACK}]"
 | 
						|
}
 | 
						|
 | 
						|
failed_msg(){
 | 
						|
    echo -e "${1}${POS}${BLACK}[${RED}FAILED${BLACK}]"
 | 
						|
}
 | 
						|
 | 
						|
# load process info of srs-api
 | 
						|
# @set variable $srs_api_id to the process id.
 | 
						|
# @return 0, if process exists; otherwise:
 | 
						|
#       1, for srs-api not exists.
 | 
						|
# @set variable $error_msg if error.
 | 
						|
load_process_info() {
 | 
						|
    srs_api_id=`ps aux|grep python|grep research|grep "api-server"|awk '{print $2}'`
 | 
						|
    if [[ -z $srs_api_id ]]; then error_msg="srs-api process does not exists"; return 1; fi
 | 
						|
    
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
 | 
						|
start() {
 | 
						|
    # if exists, exit.
 | 
						|
    load_process_info
 | 
						|
    if [[ 0 -eq $? ]]; then failed_msg "SRS-api started(pid ${srs_api_id}), should not start it again."; return 0; fi
 | 
						|
    
 | 
						|
    # not exists, start server
 | 
						|
    ok_msg "Starting SRS-api..."
 | 
						|
    # TODO: FIXME: set limit by, for instance, "ulimit -HSn 10000"
 | 
						|
    # TODO: FIXME: write log to, for instance, the same dir of log.
 | 
						|
    # TODO: FIXME: support deamon, without nohup.
 | 
						|
    (cd ${ROOT}; nohup ${APP} ${CONFIG} >/dev/null 2>&1 &)
 | 
						|
    
 | 
						|
    # check again after start server
 | 
						|
    load_process_info
 | 
						|
    ret=$?; if [[ 0 -eq $? ]]; then ok_msg "SRS-api started(pid ${srs_api_id})"; return 0; fi
 | 
						|
    
 | 
						|
    failed_msg "SRS-api not started"
 | 
						|
    return $ret
 | 
						|
}
 | 
						|
 | 
						|
stop() {
 | 
						|
    # not start, exit
 | 
						|
    load_process_info
 | 
						|
    if [[ 0 -ne $? ]]; then failed_msg "SRS-api not start."; return 0; fi
 | 
						|
    
 | 
						|
    ok_msg "Stopping SRS-api(pid ${srs_api_id})..."
 | 
						|
    
 | 
						|
    # process exists, kill util stop
 | 
						|
    for((;;)); do
 | 
						|
        load_process_info
 | 
						|
        if [[ 0 -eq $? ]]; then
 | 
						|
            kill -s SIGKILL ${srs_api_id} 2>/dev/null
 | 
						|
            ret=$?; if [[ 0 -ne $ret ]]; then failed_msg "send signal SIGKILL failed ret=$ret"; return $ret; fi
 | 
						|
            sleep 0.1
 | 
						|
        else
 | 
						|
            ok_msg "SRS-api stopped"
 | 
						|
            break;
 | 
						|
        fi
 | 
						|
    done
 | 
						|
    
 | 
						|
    sleep 0.1
 | 
						|
    return 0
 | 
						|
}
 | 
						|
 | 
						|
# get the status of srs-api process
 | 
						|
# @return 0 if srs-api is running; otherwise, 1 for stopped.
 | 
						|
status() {
 | 
						|
    load_process_info
 | 
						|
    ret=$?; if [[ 0 -eq $ret ]]; then echo "SRS-api(pid ${srs_api_id}) is running."; return 0; fi
 | 
						|
    
 | 
						|
    echo "SRS-api is stopped"
 | 
						|
    return 1
 | 
						|
}
 | 
						|
 | 
						|
menu() {
 | 
						|
    case "$1" in
 | 
						|
        start)
 | 
						|
            start
 | 
						|
            ;;
 | 
						|
        stop)
 | 
						|
            stop
 | 
						|
            ;;
 | 
						|
        restart)
 | 
						|
            stop
 | 
						|
            start
 | 
						|
            ;;
 | 
						|
        status)
 | 
						|
            status
 | 
						|
            ;;
 | 
						|
        *)
 | 
						|
            echo "Usage: $0 {start|stop|status|restart}"
 | 
						|
            return 1
 | 
						|
            ;;
 | 
						|
    esac
 | 
						|
}
 | 
						|
 | 
						|
menu $1
 | 
						|
 | 
						|
code=$?
 | 
						|
exit ${code}
 |