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

转载 2007年09月24日 22:22:00

http://soft.zdnet.com.cn/software_zone/2007/0909/497347.shtml

 

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

K

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

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

number决定执行的顺序

 

3. 启动脚本示例

 

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

 

 

代码: 
#!/bin/bash 

source /etc/sysconfig/rc 
source $rc_functions 

case "" 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:  " 
                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,是因为它不在命令行上等待输入而只是执行脚本程序。 

举报

相关文章推荐

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

Linux有自己一套完整的启动体系,抓住了Linux启动的脉络,Linux的启动过程将不再神秘。 阅读之前建议先看一下附图。 本文中假设inittab中设置的init tree为:...

在Linux系统如何让程序开机时自动启动

核心提示:系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”-->“所有程序”-->“启动”里面放个快捷方式就行,那L...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Linux系统--程序开机自启动

Linux系统下,使程序开机自动启动的方法:   1)将执行程序脚本的命令行写入/etc/rc.d/rc.local,Linux开机加载完所有服务,会执行这个脚本。 一般用户自己编写...

linux系统下设置oracle开机自动启动

在Linux系统中,安装好oracle数据库服务后,并不像在Windows系统下一样,oracle服务在默认情况下会随时系统的启动自动启动。Linux系统中,是需要用户去手动进行设置,才能实现orac...

Linux系统开机自动挂载文件fstab介绍

Linux系统开机自动挂载文件fstab介绍 一、fstab简介 fstab文件中包含了各种各样的文件系统描述信息,它可以被特殊的工具修改,fstab中每一个文件系统描述占一行,每一行是...

win下开机不登陆系统自动运行程序

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。 Jet的电脑可以定时开机了,但是他希望XP系统启动后在不登陆用户的情况下运行锐捷...

Linux中开机自动运行普通用户程序

Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法:   方案一:   1.因为其中的rc.local是在完成所有初始化之后...

在Linux中开机自动运行普通用户脚本程序

[摘要] 在Linux启动时,自动运行位于普通用户test1根目录下的脚本程序test.py,该程序会在每次执行时自动向本地日志文件追加一条记录... [关键字] Linux 开机 自动...

Java程序如何正确打包并正常运行在Linux系统中

需求:将本地Java程序部署到linux服务器并执行,首先要将本地Java程序打成jar包,然后拷贝到服务器后运行java -jar xx.jar 问题:该程序本地运行正常,服务端运行报错找不到第三...
  • dodott
  • dodott
  • 2016-11-14 18:34
  • 1499

Linux系统下运行java程序(安装JDK环境)

一. 下载jdk5.0 for linux(现在应该有新版本了)   到sun的主页 http://java.sun.com/j2se/1.5.0/download.jsp 下载jdk安装文件 二...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)