树莓派:最好的安排

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派:最好的安排相关的知识,希望对你有一定的参考价值。

利用cron来开机启动 

 

利用/etc/init.d开机启动

在树莓派下的/etc/init.d文件夹下有很多脚本,比如我们已经了解了的cron。这个cron脚本把cron这个守护进程包装成了一个服务,定义了它在启动、重启和终止时的具体行为。这样,用户在启用相应的服务时,就不需要进行太复杂的设置。当服务终止时,操作系统也能根据脚本的定义,自动地回收相关资源。用户还能把重要的服务设置成开机启动,省了手动开启的麻烦。因此,我们在/etc/init.d中内看到很多默默工作的服务,如ssh、bluetooth、rsync等。

 

服务脚本遵循特定的格式:

 

#!/bin/sh
# Start/stop the cron daemon.
#
### BEGIN INIT INFO
# Provides:          cron
# Required-Start:    $remote_fs $syslog $time
# Required-Stop:     $remote_fs $syslog $time
# Should-Start:      $network $named slapd autofs ypbind nscd nslcd winbind
# Should-Stop:       $network $named slapd autofs ypbind nscd nslcd winbind
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Regular background program processing daemon
# Description:       cron is a standard UNIX program that runs user-specified 
#                    programs at periodic scheduled times. vixie cron adds a 
#                    number of features to the basic UNIX cron, including better
#                    security and more powerful configuration options.
### END INIT INFO

# 省略部分

case "$1" in
start)  log_daemon_msg "Starting periodic command scheduler" "cron"
        start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
        log_end_msg $?
        ;;
stop)   log_daemon_msg "Stopping periodic command scheduler" "cron"
        killproc -p $PIDFILE $DAEMON
        RETVAL=$?
        [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
        log_end_msg $RETVAL
        ;;
restart) log_daemon_msg "Restarting periodic command scheduler" "cron"
        $0 stop
        $0 start
        ;;
reload|force-reload) log_daemon_msg "Reloading configuration files for periodic command scheduler" "cron"
        # cron reloads automatically
        log_end_msg 0
        ;;
status)
        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
        ;;
*)      log_action_msg "Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}"
        exit 2
        ;;
esac
exit 0

 

 

/etc/init.d/myscript还不能随机启动。Linux在开机启动时,真正检查的是/etc/rcN.d文件夹,执行其中的脚本。这里的N代表了运行级别。比如说在运行级别2时,Linux会检查/etc/rc2.d文件夹,执行其中的脚本。Unix系统可以在不同运行模式下工作,如单用户模式、多用户模式,每种模式就称为一个运行级别。大多数UNIX系统遵照: 

运行级别:
0 停机,关机
1 单用户,无网络连接,不运行守护进程,不允许非超级用户登录
2 多用户,无网络连接,不运行守护进程
3 多用户,正常启动系统
4 用户自定义
5 多用户,带图形界面
6 重启

 

我们需要把/etc/init.d中的服务复制到或者建立软连接到/etc/rcN.d,才能服务在该运行级别的开机启动。不过,我们可以利用chkconfig命令更便利地进行:

chkconfig --add myscript            # 建立脚本软链接到默认级别
chkconfig --level 35 --add myscript # 建立脚本软链接到3和5级别
chkconfig --del myscript            # 删除软链接

 

利用/etc/rc.local开机启动

树莓派官网上给出了修改/etc/rc.local的方法,来在树莓派开机时执行用户自定义的任务。比如在该文件中执行date命令:

#!/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.

# time
date > /tmp/rc.local.log

exit 0

但这种启动方式不推荐。/etc/rc.local是在系统初始化的末尾执行的一个脚本。如果把太多的任务加入到这个脚本中,不但会拖慢开机的速度,还会造成管理上的混乱。因此,/etc/rc.local往往只用于修改一些在启动过程需要设定的参数,而不涉及具体的任务启动。如果想随开机启动某些服务,应该避免使用/etc/rc.local。

 

以上是关于树莓派:最好的安排的主要内容,如果未能解决你的问题,请参考以下文章

我正在使用我在网上找到的一些代码来运行树莓派温度传感器,但我不是最好的编码器

树莓派 python 如何将本地文件上传到指定的服务器页面上

基于深度学习的口罩规范佩戴检测树莓派+PC训练测试

基于深度学习的口罩规范佩戴检测树莓派+PC训练测试

树莓派怎么安装安卓系统?

树莓派支持哪些系统?有啥推荐?