玩转树莓派

    返回首页    发表留言
本文作者:李德强
          第四节 开机启动服务
 
 

        有时候我们编写了一个shell脚本或是编写了一个可执行程序并希望它能在开启时就运行。我们可以有多种办法实现这一功能。

        一、使用/etc/rc.local文件

        编辑/etc/rc.local文件,并在其末尾exit 0之前加入你要执行的程序脚本或命令:

sudo vim /etc/rc.local
#!/bin/sh -e
# rc.local
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# 自定义启动程序
/data/shell/startup.sh

exit 0

        保存并退出即可。

        需要注意的是,如果你新加入的程序是一个不会自动结束或退出的程序,比如带有无限循环逻辑时,需要在你的程序后加入一个&符号,表示此采用非阻塞方式运行程序,并使其在另外一个新线程中运行。例如:

# 自定义启动程序
/data/shell/startup.sh &

     

        二、采用服务形式

        我们可以编写一个服务脚本程序将其命名为myservice并将其保存在/etc/init.d/目录下:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          myservice
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start or stop my service.
### END INIT INFO
case $1 in
    start)
        /data/shell/myservice.sh
        ;;
    stop)
        killall myservice
        ;;
*)
echo "Usage: $0 (start|stop)"
;;
esac

        这样我们就创建了一个叫myservice的服务脚本,还需为其加入可执行权限:

sudo chmod +x /etc/init.d/myservice

        之后我们就可以通过执行命令来让这个服务启动或停止:

sudo service myservice start
sudo service myservice stop

        最后,为了能让我们的服务随开机而启动,我们需要执行下面命令:

sudo update-rc.d myservice defaults

        如果需要取消服务开机启动仅需执行:

sudo update-rc.d -f myservice remove
    返回首页    返回顶部
#1楼  ViT  于 2017年07月21日17:16:52 发表
 
这篇文章对于入门的来说没讲明白有些操作,对于知道的人来说没有太大指导。
#2楼  李德强  于 2017年07月24日09:36:13 发表
 
非常感谢您的建议!我会针对您据说的问题做一些修改。
#3楼  若墨  于 2017年11月12日13:01:01 发表
 
能留下您的QQ吗!有些问题想请教您!

#4楼  李德强  于 2017年11月13日15:18:49 发表
 
感谢您的支持,如果有问题可以给我写邮件lideqiang83@163.com

或加入微信技术交流群

加微信号sandloves验证内容为:我想加入交流群
  看不清?点击刷新

 

  Copyright © 2015-2023 问渠网 辽ICP备15013245号