Linux可执行文件做成系统服务

 

通过Putty工具远程连接腾讯云服务器,编写好程序编译链接成可运行程序以后在终端中可运行。若是断开Putty,相当于关闭终端。当前运行的程序就不再运行了。相当于终端的进行被释放了。此时若想程序继续运行可以将可执行文件作为系统服务项,类似于mysql数据库一样,开机启动,关机停止。下面是具体做法:

    新建程序,编译连接运行后,进入/etc/init.d/目录下,新建服务脚本文件:vim remote-logins 

#!/bin/bash

SERVERNAME="remote-login"

start()
{
    echo "start $SERVERNAME"
        nohup /usr/sbin/$SERVERNAME & //关闭终端后继续运行需要用到nohup命令
    echo "start $SERVERNAME ok!"
    exit 0;
}

stop()
{
    echo "stop $SERVERNAME"
    killall $SERVERNAME
    echo "stop $SERVERNAME ok!"
}

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    stop
    start
    ;;
*)
    echo "usage: $0 start|stop|restart"
    exit 0;
esac
exit

保存后退出。注意:可执行文件需要复制到/usr/sbin下 该目录下均为可执行文件

nohup /usr/sbin/$SERVERNAME & //关闭终端后继续运行需要用到nohup 

改变服务脚本文件权限:

chmod +x remote-logins  //改变文件读写权限

之后就可以使用命令启动服务了。

 service remote-logins start

现在程序可以一直在后台运行了,但是若是服务器断电重启需要手动开启服务,因此还需要建立软连接实现开机自启动

ln -s /etc/init.d/remote-logins /etc/rc5.d/S90remote-logins //建立软连接
ln -s /etc/init.d/remote-logins /etc/rc5.d/K90remote-logins //建立软连接

该命令 可自动在/etc/rc5.d/下生成一个S90remote-logins的文件。其中/etc/rc5.d是Linux的启动顺序。

    S90remote-logins 中 S表示启动 90表示启动优先级 若有依赖项如数据库mysql,则启动优先级应该小于mysql服务  数值越大 表示优先级越低

    K90remote-logins 中 K表示系统关闭是退出服务优先级

你可能感兴趣的:(Linux学习,Linux,腾讯云)