Chinaunix首页 | 论坛 | 博客
  • 博客访问: 177169
  • 博文数量: 36
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-04 12:39
文章分类

全部博文(36)

文章存档

2010年(1)

2009年(35)

我的朋友

分类: LINUX

2009-04-09 13:43:55

我使用校园网,所以,每次开机的时候都需要手动登录drcom,非常麻烦,如果能设置一下开机自动登录,关机自动登出就好了。

Linux的启动分为n(0-6常用,但是也有个等级S,表示默认启动等级,看man文档的说明,似乎是指3,5这样的常用等级)个等级,其中0和6表示停机和重启,其余分别表示单用户,多用户,X登录等等。我觉得可以这样理解Linux的等级,假如Linux是不关机(power off)的,那么这个系统在任何时候所处的状态必然是上述几种等级中的一种,比如
停机──不提供服务
重启──重新加载内核
多用户──允许多人同时登录
X──允许用户使用X窗口登录(X是一种窗口协议)
。。。

将6个等级简单分类,0是关机,6是重启,其余都是开机。
在/etc/rc*.d/文件夹中,都有很多类似K??filename and S??filename 的文件,该文件一个softlink到/etc/init.d/文件夹下对应执行文件的。K表示关闭,S表示开启(内部是以参数start和stop实现的,可以看看init.d里面的文件就明白了)

现在我们就来写自己的启动文件,linux输入法在汉英间切换太麻烦了,下面有些地方就直接使用E了
1) implement our command file with template file
$cd /etc/init.d/ ;must create file in this folder, this is ubuntu-specific
$cp skeleton drcom ; name our program as "drcom"
2) open drcom and tail it for our purpose
$sudo vim drcom

最后我的drcom文件如下:
#! /bin/sh
### BEGIN INIT INFO
# Provides: drcom login
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop: 0 6
# Short-Description: login in education network in China
# Description:
### END INIT INFO
#下面这句话/usr/local/bin是本文用到的drcomd的执行路径,所以必须填写,
#否则会提示command cannot found,你可以在这里添加所有你需要执行的文件的查找路径
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
. /lib/init/vars.sh

. /lib/lsb/init-functions

umask 022

case "$1" in
start)
# No-op
sudo drcomd #这就是登录过程
drcomc login
;;
restart|reload|force-reload)
echo "Error: no this options, only start or stop supported!" >&2
exit 3
;;
stop)
drcomc logout #登出
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac

:

3) 好,到了关键的一步了,我们不能直接在/etc/rc*.d/里面建立到我们上面的创建的drcom文件的连接,
那是无效的,我们必须使用update-rc.d的一个utility来创建

$sudo update-rc.d drcom start 75 2 3 4 5 S . stop 25 0 1 6 .

上面的命令说,将/etc/init.d/drcom添加softlink到2,3,4,5,S中(自动启动),到0,1,6中(自动关闭)。75 和25表示相对于其他自启动程序的顺序。

至此,drcom就可以自动运行和关闭了。

 
阅读(2044) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~