LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: mygod100

请教如何在.sh里改变某个程序的runlevel?[基本解决]

[复制链接]
发表于 2004-4-12 09:53:46 | 显示全部楼层
最初由 mygod100 发表
唉,看来真的是没办法了嘛
我每次重装linux的时候都要做一些必做之事,所以想做一个.sh,一步到位啊。

兄弟经常重装?:ask
 楼主| 发表于 2004-4-12 16:43:05 | 显示全部楼层
呵呵,是啊,由于我太爱玩系统了
上回就是用了QNX(一张软盘的操作系统)的启动了一下我的机子,结果,linux分区就挂了,虽然分区号还是83,但是却不能访问了,后来用explorerfs,好像是报分区的第二扇区什么什么错误,我也忘了...就这样,只好重装了,幸好我的Solaris 10 和BeOS还没有任何损伤,要不然麻烦可就大了,唉
发表于 2004-4-12 17:15:46 | 显示全部楼层
最初由 home_king 发表
to devel:
脚本粗糙冗长了点,而且存在bugs,比如权限问题(只有root才能写inittab)。:p
况且,无需写脚本,在grub界面按下e,把kernel选项行添上n(3-5)即可。因为默认运行级别没必要经常改动,一般安装NV驱动时用到而已。


:rolleyes: 谢谢!!我一直没有注意。。任何脚本都需要检查这一步的。我改了改,看还有需要修改的地方吗?

  1. #!/bin/bash
  2. # change the run level at the boot time.
  3. if [ `echo $USER` != root ] ; then #检查当前用户是否是root.
  4.      echo "Current user is not root" ; exit 0
  5. fi
  6. tempfile="1"
  7. while [ -e $tempfile ] ; do # 检查临时文件是否存在。
  8. tempfile=$(($tempfile+1))
  9. done
  10. grep id /etc/inittab
  11. echo "Are you want change the runlevel at the boot ? (y/n) "
  12. read num
  13. if [ $num == "y" ] ; then
  14.      if [ -e /etc/inittab ] ; then
  15.          echo 'Input a number for runlevel at system boot:'
  16.          read level
  17.          if [[ $level = ^[0-6] || ${#level} > 1 ]] ; then #检查输入是否是 0到6的数字
  18.              echo "The number is wrong."
  19.          else
  20.              sed 's/id:[12345]:in/id:'$level':in/' /etc/inittab >$tempfile&&cat $empfile>/etc/inittab
  21.              rm -f $tempfile&&chmod 644 /etc/inittab
  22.          fi
  23.      else echo "File not found!"
  24.      fi
  25. else echo "The run level have not change!"
  26. fi
  27. grep id /etc/inittab
复制代码
发表于 2004-4-12 17:23:09 | 显示全部楼层
最初由 home_king 发表
to devel:
脚本粗糙冗长了点,而且存在bugs,比如权限问题(只有root才能写inittab)。:p
况且,无需写脚本,在grub界面按下e,把kernel选项行添上n(3-5)即可。因为默认运行级别没必要经常改动,

有道理~~~,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表