Debian 使用BeagleBone Black在启动时执行脚本

Debian 使用BeagleBone Black在启动时执行脚本,debian,startup,beagleboneblack,Debian,Startup,Beagleboneblack,我有一个a.out,我想在开机时运行它。它实际上是一个套接字服务器,我想在BeagleBone通电后立即启动它。我试着把它放在/etc/init.d中,但没有用。我编写了一个shell脚本来运行这个可执行文件,但即使这样也没有帮助 我该怎么做才能让脚本在启动后立即运行?我花了很长时间才弄明白这一点,但经过大量研究,我终于找到了我想要的东西 编译所需的代码 创建一个bash脚本,该脚本将在引导/启动时启动代码 cd /usr/bin/ 键入nano scriptname.sh #!/bin/ba

我有一个
a.out
,我想在开机时运行它。它实际上是一个套接字服务器,我想在BeagleBone通电后立即启动它。我试着把它放在
/etc/init.d
中,但没有用。我编写了一个shell脚本来运行这个可执行文件,但即使这样也没有帮助


我该怎么做才能让脚本在启动后立即运行?

我花了很长时间才弄明白这一点,但经过大量研究,我终于找到了我想要的东西

  • 编译所需的代码

  • 创建一个bash脚本,该脚本将在引导/启动时启动代码

    cd /usr/bin/
    
    键入
    nano scriptname.sh

    #!/bin/bash
    /home/root/name_of_compiled_code
    
    保存并授予执行权限

    chmod u+x /usr/bin/scriptname.sh
    
  • 创建服务

    nano /lib/systemd/scriptname.service
    
  • 根据需要编辑上述文件,以调用网络等不同功能。仅当代码需要该特定服务时才启用这些。禁用不需要的,以减少启动时间

    [Unit]
    Description=description of code
    After=syslog.target network.target
    [Service]
    Type=simple
    ExecStart=/usr/bin/scriptname.sh
    [Install]
    WantedBy=multi-user.target
    
  • 创建一个符号链接,让设备知道服务的位置

    cd /etc/systemd/system/
    ln /lib/systemd/scriptname.service scriptname.service
    
  • 使systemd重新加载配置文件,立即启动服务(帮助查看服务是否正常运行),并启用命令行中指定的单元文件

    systemctl daemon-reload
    systemctl start scriptname.service
    systemctl enable scriptname.service
    
  • 立即重新启动BBB,查看其是否按预期运行

    reboot
    

  • (全部归功于)

    我按照7个步骤创建了一个服务,但它对我不起作用,然后我把我的shellscript命令放在/etc/rc.local中运行我的程序,结果成功了

    #!/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.
    
    cd /home/my_program_directory
    /home/my_program_directory/my_executable
    
    exit 0
    

    欢迎来到堆栈溢出!我已经改写了你的问题,这样很容易挑出,我已经链接到了董事会,以防有人不熟悉。你在BBB上使用的Debian发行版(和版本)到底是什么?我在问,因为你首先需要弄清楚的是,你的发行版使用的是什么。就我所记得的,BBB的一些版本是随附的。如果是您的情况,您需要弄清楚如何为systemd创建init脚本,或者用sysv init替换它。另外,请参阅。我找到了一个解决方案,我在/lib/systemd中编写了一个服务,在通电时运行我的a.out文件,它工作正常。无论如何,谢谢你的帮助,山姆