debian10居然默认没有开机启动,折腾一晚上终于搞得,实现开机自动运行脚本。
首先恢复debian10开机自动功能rc.loca

1,添加rc-local.service
#以下为一整条命令,一起复制运行

    cat > /etc/systemd/system/rc-local.service <<EOF
    [Unit]
    Description=/etc/rc.local
    ConditionPathExists=/etc/rc.local
    [Service]
    Type=forking
    ExecStart=/etc/rc.local start
    TimeoutSec=0
    StandardOutput=tty
    RemainAfterExit=yes
    SysVStartPriority=99
    [Install]
    WantedBy=multi-user.target
    EOF

2,新建rc-local文件
#以下为一整条命令,一起复制运行

    cat > /etc/rc.local <<EOF
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    # bash /root/bindip.sh
    exit 0
    EOF

3,添加权限并设置开机自启

    chmod +x /etc/rc.local
    systemctl enable rc-local
    systemctl start rc-local.service

检查状态:

    systemctl status rc-local.service

返回Active:active信息,则成功。

最后我们就可以在/etc/rc.loacl里,添加要执行的脚本

    bash /root/autostart.sh

记住添加在exit 0之前。

autostart.sh内容:

    screen_name1=$"worldserver"
    screen -dmS $screen_name1
    cmd1=$"sleep 3s;/server/bin/worldserver";
    screen -x -S $screen_name1 -p 0 -X stuff "$cmd1"
    screen -x -S $screen_name1 -p 0 -X stuff $'\n'
    screen -x -S $screen_name1 -p 0 -X stuff "exit"
    screen_name2=$"authserver"
    screen -dmS $screen_name2
    cmd1=$"sleep 20s;/server/bin/authserver";
    screen -x -S $screen_name2 -p 0 -X stuff "$cmd1"
    screen -x -S $screen_name2 -p 0 -X stuff $'\n'
    screen -x -S $screen_name2 -p 0 -X stuff "exit"

name1和name2名称不能重复,20s是延时启动时间,/server/bin/authserver是脚本里要执行的程序路径。以上是执行2个程序的,更多复制修改即可

最后:更改自启脚本后,需要重新运行一下命令已生效。

    systemctl enable rc-local
    systemctl start rc-local.service