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

时间:2015-03-04 12:37:09

标签: debian startup beagleboneblack

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

如果脚本在启动后立即运行,我该怎么办?

2 个答案:

答案 0 :(得分:8)

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

  1. 编译所需的代码。

  2. 创建一个bash脚本,该脚本将在启动/启动时启动代码

    cd /usr/bin/
    

    输入nano scriptname.sh

    #!/bin/bash
    /home/root/name_of_compiled_code
    

    保存并授予执行权限

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

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

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

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

    systemctl daemon-reload
    systemctl start scriptname.service
    systemctl enable scriptname.service
    
  7. 立即重启BBB以查看它是否按预期运行。

    reboot
    
  8. (所有积分都归http://mybeagleboneblackfindings.blogspot.com/2013/10/running-script-on-beaglebone-black-boot.html

答案 1 :(得分:2)

我按照7个步骤创建了一个服务,但它对我不起作用,然后我把我的shellcript命令运行我的程序,在/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