1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

使Linux系统上的程序开机后自动运行

作者:用户 来源:互联网 时间:2016-07-18 16:07:49

脚本apached3.jsoninitcvset*ddrc nginercinit rcrc localndroid init rcrc dndroi dlocal单用户

使Linux系统上的程序开机后自动运行 - 摘要: 本文讲的是使Linux系统上的程序开机后自动运行,    Linux有自己一套完整的启动体系,抓住了Linux启动的脉络,Linux的启动过程将不再神秘。   阅读之前建议先看一下附图。   本文中假设inittab中设置的init tree为

   Linux有自己一套完整的启动体系,抓住了Linux启动的脉络,Linux的启动过程将不再神秘。

  阅读之前建议先看一下附图。

  本文中假设inittab中设置的init tree为:

  /etc/rc.d/rc0.d

  /etc/rc.d/rc1.d

  /etc/rc.d/rc2.d

  /etc/rc.d/rc3.d

  /etc/rc.d/rc4.d

  /etc/rc.d/rc5.d

  /etc/rc.d/rc6.d

  /etc/rc.d/init.d

  1. 关于Linux的启动

  init是所有进程之父

  init读取/etc/inittab,执行rc.sysinit脚本

  (注意文件名是不一定的,有些unix甚至会将语句直接写在inittab中)

  rc.sysinit脚本作了很多工作:

  init $PATH

  config network

  start swap function

  set hostname

  check root file system, repair if needed

  check root space

  ....

  rc.sysinit根据inittab执行rc?.d脚本

  Linux是多用户系统,getty是多用户与单用户的分水岭

  在getty之前运行的是系统脚本

  . 关于rc.d

  所有启动脚本放置在 /etc/rc.d/init.d下

  rc?.d中放置的是init.d中脚本的链接,

  命名格式是:

  S{number}{name}

  K{number}{name}

  S开始的文件向脚本传递start参数

  K开始的文件向脚本传递stop参数

  number决定执行的顺序

  3. 启动脚本示例

  这是一个用来启动httpd的 /etc/rc.d/init.d/apache 脚本:

  代码:

  #!/bin/bash

  source /etc/sysconfig/rc

  source $rc_functions

  case "$1" in

  start)

  echo "Starting Apache daemon..."

  /usr/local/apache2/bin/apachectl -k start

  evaluate_retval

  ;;

  stop)

  echo "Stopping Apache daemon..."

  /usr/local/apache2/bin/apachectl -k stop

  evaluate_retval

  ;;

  restart)

  echo "Restarting Apache daemon..."

  /usr/local/apache2/bin/apachectl -k restart

  evaluate_retval

  ;;

  status)

  statusproc /usr/local/apache2/bin/httpd

  ;;

  *)

  echo "Usage: $0 {start|stop|restart|status}"

  exit 1

  ;;

  esac可以看出他接受start,stop,restart,status参数

  然后可以这样建立rc?.d的链接:

  代码:

  cd /etc/rc.d/init.d &&

  ln -sf ../init.d/apache ../rc0.d/K28apache &&

  ln -sf ../init.d/apache ../rc1.d/K28apache &&

  ln -sf ../init.d/apache ../rc2.d/K28apache &&

  ln -sf ../init.d/apache ../rc3.d/S32apache &&

  ln -sf ../init.d/apache ../rc4.d/S32apache &&

  ln -sf ../init.d/apache ../rc5.d/S32apache &&

  ln -sf ../init.d/apache ../rc6.d/K28apache4. 关于rc.local

  经常使用的 rc.local 则完全是习惯问题,不是标准。

  各个发行版有不同的实现方法,可以这样实现:

  代码:

  touch /etc/rc.d/rc.local

  chmod +x /etc/rc.d/rc.local

  ln -sf /etc/rc.d/rc.local /etc/rc.d/rc1.d/S999rc.local &&

  ln -sf /etc/rc.d/rc.local /etc/rc.d/rc2.d/S999rc.local &&

  ln -sf /etc/rc.d/rc.local /etc/rc.d/rc3.d/S999rc.local &&

  ln -sf /etc/rc.d/rc.local /etc/rc.d/rc4.d/S999rc.local &&

  ln -sf /etc/rc.d/rc.local /etc/rc.d/rc5.d/S999rc.local &&

  ln -sf /etc/rc.d/rc.local /etc/rc.d/rc6.d/S999rc.local5. 关于bash启动脚本

  /etc/profile

  /etc/bashrc

  ~/.bash_profile

  ~/.bashrc

  是bash的启动脚本

  一般用来设置单用户的启动环境,也可以实现开机单用户的程序,但要明确他们都是属于bash范畴而不是系统范畴。

  他们的具体作用介绍如下:

  /bin/bash这个命令解释程序(后面简称shell)使用了一系列启动文件来建立一个运行环境:

  /etc/profile

  /etc/bashrc

  ~/.bash_profile

  ~/.bashrc

  ~/.bash_logout

  每一个文件都有特殊的功用并对登陆和交互环境有不同的影响。

  /etc/profile 和 ~/.bash_profile 是在启动一个交互登陆shell的时候被调用。

  /etc/bashrc 和 ~/.bashrc 是在一个交互的非登陆shell启动的时候被调用。

  ~/.bash_logout 在用户注销登陆的时候被读取

  一个交互的登陆shell会在 /bin/login 成功登陆之后运行。一个交互的非登陆shell是通过命令行来运行的,如[prompt] $/bin/bash。一般一个非交互的shell出现在运行shell脚本的时候。之所以叫非交互的shell,是因为它不在命令行上等待输入而只是执行脚本程序。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索脚本 , apache , d3.json , init , cvset*d , d , rc ngine , rc , init rc , rc local , ndroid init rc , rc d , ndroi d , local 单用户 linux系统运行程序、安卓系统开机运行程序、linux开机运行程序、linux 系统运行时间、linux系统运行级别,以便于您获取更多的相关知识。

linux-红旗Linux如何让程序开机后自启动?

... 我现在自己写了一个程序,用的红旗linux,但是我想让系统启动时就运行我的服务,该如何做? 其他系统如redhat,ubuntu都可以直接放到/etc/init.d目录下,但是红旗系统都没有这个目录, 那么红旗自身的系统服务时怎么做到开...

详解Linux开机启动程序及实现自动启动配置

...内核LILO启动之后,如果你选择了Linux作为准备引导的操作系统,第一个被加载的东西就是内核。请记住此时的计算机内存中还不存在任何操作系统,PC(因为它们天然的设计缺陷)也还没有办法存取机器上全部的内存。因此,内核...

linux启动流程

我们都知道,由于Linux的稳定性,通常被作为服务器系统,要想称为一个PHP的高手,linux是必修之课。那么linux系统从开机到启动,中间到底都发生了什么?本文来简单探讨一下中间的神秘过程。 1、 BIOS加电自检 BIOS是英文"Basic In...

Linux 常用命令使用方法

...  开机提示:Login:输入用户名  password:输入口令   用户是系统注册用户成功登陆后,可以进入相应的用户环境.  退出当前shell,输入:exit  2.useradd netseek 添加一个netseek用户   passwd netseek  给netseek这个用户设置密码.  (/etc/passwd /etc/...

Linux开机自动登录root,并启动应用程序

... #采用界面登陆 ::askfirst:/sbin/getty 115200 console #直接进入系统,无须登陆 console::respawn:/bin/sh 至于开机启动应用程序,最简单的方法是在etc目录下的rc.local 文件中添加应用代码的可执行文件路径。例如开机启动hello应用代码,则...

前三篇
后三篇
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备