`
gcgmh
  • 浏览: 348528 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
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之前运行的是系统脚本

2. 关于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

[1] [2] 下一页 

                ;;
                
        *)
                echo "Usage: $0 {startstoprestartstatus}"
                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,是因为它不在命令行上等待输入而只是执行脚本程序。


信息来源:http://linux.sheup.com/linux/39/linux23662.htm
分享到:
评论

相关推荐

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

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

    如何让Linux系统的程序在开机时自动运行

    Linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。本文介绍了让Linux系统的程序在开机时自动运行的方法。

    修改程序开机是否自动运行demo

    修改注册表使程序开机是否自动运行

    基于Qt的开机自启动(二)(Linux)

    基于Qt的开机自启,适用于Linux 环境下的程序自启动,易于重用

    SUSE Linux下开机自动运行脚本命令的方法

    以openSUSE 11和10 sp2启动文件的设置为例,开机设置程序自动执行

    linux让程序开机自动运行最简单的方法

    在本篇文章里小编给大家整理的是一篇关于linux让程序开机自动运行最简单的方法以及相关代码,需要的朋友们学习下。

    如何实现Linux操作系统的自动登录

    开机自动登录Linux,并自动运行XWindow应用程序,有其特殊的应用背景,如基于Linux平台的监控系统,Linux启动后不需要身份验证,而直接运行监控程序等等。本文以Redhat7.2为平台,结合Linux启动过程,介绍了如何避免...

    如何实现Linux操作系统的自动登录功能

    开机自动登录Linux,并自动运行XWindow应用程序,有其特殊的应用背景,如基于Linux平台的监控系统,Linux启动后不需要身份验证,而直接运行监控程序等等。本文以Redhat7.2为平台,结合Linux启动过程,介绍了如何避免...

    linux上的socket代理服务程序

    linux上的socket代理服务程序,支持开机自动启动,service proxy {start|stop|restart|status} 和linux上其他服务类似,有对应的配置文件。 此程序在redhat Enterprises 5.0 、 ubuntu、ubuntu arm linux 上编译...

    如何在Linux实现自动运行程序?

     Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。  init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d ( /etc/rc?.d) 目录下的脚本文件,可以使...

    LINUX安装与配置简明手册

    本书详细介绍如何在个人电脑上安装配置Caldera和Red Hat两种发行版本的Linux操作系统,并能帮助用户解决安装和配置过程中出现的各种问题。本书既能指导你进行基本的安装步骤,也能指导你定制独具特色的Linux 操作...

    linux安装与配置简明手册

    本书详细介绍如何在个人电脑上安装配置Caldera和Red Hat两种发行版本的Linux操作系统,并能帮助用户解决安装和配置过程中出现的各种问题。本书既能指导你进行基本的安装步骤,也能指导你定制独具特色的Linux 操作...

    Linux下Python脚本自启动和定时启动的详细步骤

    一、Python开机自动运行 假如Python自启动脚本为 auto.py 。那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 在exit 0上面编辑启动脚本的命令 /usr/bin/python3 /home/...

    Linux管理员指南

    开机和关机 91 7.1 LILO 91 7.2 配置LILO 91 7.2.1 附加的LILO参数 93 7.2.2 添加引导用的新内核 94 7.3 运行LILO 95 7.4 开机引导的步骤 95 7.4.1 rc命令脚本程序 96 7.4.2 编写自己的rc...

    linux 平台socket代理程序(完整版)

    linux上的socket代理服务程序,支持开机自动启动,service proxy {start|stop|restart|status} 和linux上其他服务类似,有对应的配置文件。 此程序在redhat Enterprises 5.0 、 ubuntu、ubuntu arm linux 上编译...

    LINUX 24学时教程

    24学时每次1小时的课程能使你迅速掌握Linux各方面的内容,简单易懂,通俗实用。本书在美国十分畅销,其作者是美国资深计算机书作家。本书适合初、中级读者阅读。 目 录 前言 第一部分 安装和配置 第1学时 准备...

    vmtools-linux.iso

    但如果你嫌麻烦,我们就需要让vmware-toolbox实现开机自动运行.点击 Ubuntu菜单:System→首选项→会话→Startup Programs,Add一个Name叫"vmware-toolbox",Command是"/usr/bin/vmware-toolbox"的启动 ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    此外,可以直接检查 /var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号。 (3)查找挂接点 在决定将设备挂接之前,先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来...

    WinSetupFromUSB(制作U盘安装操作系统) v1.7.zip

    第一步,安装WinSetupFromUSB,安装完后,运行桌面上的WinSetupFromUSB快捷方式,打开WinSetupFromUSB程序窗口,首先对U盘进行格式化,点击HP format tool(P format too)按钮. 第二步,在弹出的HP USB Disk Storage...

Global site tag (gtag.js) - Google Analytics