好久没有发帖了,这几天把前段时间忙的一个小活总结下。
前段时间做了一个类似服务器的项目,就是在服务器上写一段代码,主要用处就是数据中转。
用的是ubuntu-10.04服务器版本。
代码写好以后,要让程序开机自启动。以前在嵌入式的cpu上,直接修改inittab文件就可以了。
但是ubuntu上貌似没有这个文件,取而代之的是一堆rcx.d目录。google这几天也用不了。就baidu吧。查看好多帖子。才了解这个原来是linux的启动级别相关的东西。
rc(x).d文件夹下放着相应运行在x级下的服务的脚本链接,即rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d、rc6.d一共六个不同的目录里面分别放着对应的六个运行级别下系统需要执行的脚本。这些目录下的脚本文件好多都是init.d目录下的文件的软连接
- 0 为停机,机器关闭。
- 1 为单用户模式,就像Win9x下的安全模式类似。
- 2 为多用户模式,但是没有NFS支持。
- 3 为完整的多用户模式,是标准的运行级。
- 4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
- 5 就是X11,进到X Window系统了。
- 6 为重启,运行init 6机器就会重启。
在我的机器终端运行 runlevel,显示2,说明现在运行级别是2.然后照着网上提供的例子写了自己的脚本。
在/etc/init.d/目录下建立自己的脚本commu,修改属性添加可执行权限。然后再rc2.d目录下建立这个文件的软连接。ln -s /etc/init.d/commu /etc/rc2.d/S99commu (S为开始执行99为执行顺序commu为文件名)。
然后重启,最后停在登录界面,什么也没有输出。看起来和没有执行一样啊。因为我的代码里有打印一大坨输出啊。开始没有仔细研究,认为自己的程序没有执行。然后又在/etc/rc.d/rc.local文件exit前添加启动脚本。重启,还是一样啊,没有输出。反正我到处添加,就是不执行。后来自己琢磨琢磨。是不是执行了呢,只是没有打印输出吧。
我的代码里有一个自己写的很简单的web配置界面。连接网线,在pc打开ie,输入ip:端口,顺利打开。说明程序已经运行。然后自己又按照刚开始的方法在rc2.d目录下建立脚本文件的软连接。同样,也能运行。说明这个方法是可行的。
但是另外一个问题又来了,打印哪去了啊?我还要看过程呢。
我大概了解是后台运行不具备交互性,然后发现最后出现登录界面用的是tty1,那我让我的程序在脚本里把标准输出和标准出错打印到tty1就应该行了吧。然后在脚本里启动程序后面加上
1 >/dev/tty1 2>/dev/tty1.重启。还是没有,郁闷。
后来又发现这么定义控制台的概念:
控制台是什么?
我们经常说的控制台,就是指控制台终端(/dev/ttyn, console,在UNIX系统中计算机显示器就叫做控制台终端)。通常pc,显示器和键盘构成控制台。
并且控制台终端与一些设备特殊文件关联:tty0、tty1、tty2。。。ttyn
通常情况下/dev/console与tty0关联。
于是在启动脚本里修改启动参数1 >/dev/console 2>/dev/console,重启,打印出现。
继续修改启动参数为1 >/dev/tty0 2>/dev/tty0,重启,也同样出现打印内容。搞定。
阅读(277) | 评论(0) | 转发(0) |