Liunx设置脚本开机启动办法

-- liunx和windows机制不太相同,为了达到如重启后不再手动启动对应的内容的话 我们可以做到如下几方面来实现开启动免去手动启用自己的应用

  • 使用crontab任务

cron 在系统中有一个运行着的守护进程,当系统时间符合某一条规划记录时, 守护进程就会启动相应的任务。可以通过crontab -e来查看任务,

    sudo crontab -e -u root
    可以修改root用户的crontab,换成其他用户就可以修改对应的crontab。
    在这里,使用@reboot 选项来设置开机启动。比如开机执行下面的auto.sh脚本。
   @reboot  /root/script/auto.sh &
  • 使用 /etc/rc.local

/etc/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 eror。

这个文件是系统初始化的末尾执行的一个脚本,启动任务需要加在“exit 0”之前。rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。但是太多的任务加入这个脚本中, 不但会拖慢开机速度, 还会造成管理上的混乱。如果要想随开机启动某些服务,我们再来看下一种方法。

  • /etc/init.d 来实现自动开机

    /etc/init.d文件夹包含很多脚本,作用是把进程包装成了一个服务, 定义了它在启动、 重启和终止时的具体行为,用户在启用相应服务时, 就不用进行太复杂的设置。比如service mysql restart/stop/start/status来开启、停止和查看数据库mysql的状态。我们来看一下rc3.d(即命令行模式)目录:



    /etc/init.d/mysql 还不能随开机启动,Linux 在开机启动时, 真正检查的是/etc/rcN.d文件夹, 执行其中的脚本, 这里的 N 代表了运行级别。需要把中的服务复制到或者建立软连接到/etc/rcN.d 上, 才能让该服务在 N 运行级别开机时启动。不过, 我们可以利用update-rc.d 命令更方便地进行。
    如在默认的运行级别建立软链接:

     update-rc.d mysql defaults

    删除默认运行级别下的软链接:

    update-rc.d cron remove
  • 最后一种笨办法 那么就是建立startup.d目录 ,使开启时遍历下如下开机脚本

从/etc/profile文件得到灵感,建立脚本或者服务startup,用上面的三种方法来开机启动startup,然后读取/home/root/startup.d目录下的脚本,遍历执行目录下的脚本,这样就可以将需要开启启动的脚本放置于这个目录下,方便使用与维护。

脚本或服务内容为:

if [ -d /home/root/startup.d ]; then
  for i in /home/root/startup.d/*.sh; do
    if [ -r $i ]; then
     . $i
    fi
  done
  unset i
fi
  • 结语

方法有很多种 有的还使用环境变量里面的文件来做开机启动的,但环境变量会引起操作上的混乱。像有些bash运行的也会运行一次。所以这引起一定程序的混乱。结合自己实际环境,方法有很多种,合适自己的那种就是最正确的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容