首页 > 代码库 > 树莓派:最好的安排

树莓派:最好的安排

利用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" instart)  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        ;;esacexit 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            # 删除软链接

 

<style></style>

利用/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.# timedate > /tmp/rc.local.logexit 0

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

 

树莓派:最好的安排