我有一个a.out
我希望在BeagleBone启动时运行。它实际上是一个套接字服务器,我想在BeagleBone启动后立即启动它。我试着把它放在/etc/init.d
中,但它没有帮助。我写了一个shell脚本来运行这个可执行文件,但即使这样也无济于事。
如果脚本在启动后立即运行,我该怎么办?
答案 0 :(得分:8)
我花了很长时间才弄明白这一点,但经过大量的研究,我终于找到了我想要的东西。
编译所需的代码。
创建一个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
(所有积分都归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