12
返回列表 发新帖
楼主: 菩提祖师
收起左侧

[系统] pon方式上网,如何在X登录时自动运行?

[复制链接]
菩提祖师
 楼主| 发表于 2013-10-14 17:28:41 | 显示全部楼层
woodelf 发表于 2013-10-14 17:21
是的,在启动过程中,rc.local是最后才被读取并执行的内容,所以我说不如写个init脚本,加入到启动服务中 ...

我的grub4dos的menu.lst中并没有指定splash
  1. kernel /vmlinuz root=/dev/sda2
复制代码
以上就是启动选项,没有别的,开机和关机的时候都会显示一大串的信息,就是在那里没看到,启动后tty1因为sleep依然保持着启动时的输出信息,但并没有看到echo输出的东西.
woodelf
发表于 2013-10-14 17:32:32 | 显示全部楼层
菩提祖师 发表于 2013-10-14 17:28
我的grub4dos的menu.lst中并没有指定splash以上就是启动选项,没有别的,开机和关机的时候都会显示一大串的 ...

那你就试试这个脚本吧,sleep后面的时间可以短一点,比如2或3。反正我测试的时候因为upstart太快,来不及看清就已经滚屏滚过去了。
菩提祖师
 楼主| 发表于 2013-10-14 17:52:44 | 显示全部楼层
woodelf 发表于 2013-10-14 17:32
那你就试试这个脚本吧,sleep后面的时间可以短一点,比如2或3。反正我测试的时候因为upstart太快,来不及 ...

pon在rc.local工作正常(貌似输出也像echo那样,并没有显示)
现在的疑问集中于echo,我增加了足够时长的sleep,确保不会因为现实太快跳过,但并没有发现echo的输出.
woodelf
发表于 2013-10-14 20:12:32 | 显示全部楼层
本帖最后由 woodelf 于 2013-10-14 20:23 编辑
菩提祖师 发表于 2013-10-14 17:52
pon在rc.local工作正常(貌似输出也像echo那样,并没有显示)
现在的疑问集中于echo,我增加了足够时长的sle ...

重新写了个init服务脚本:
  1. #!/bin/sh

  2. ### BEGIN INIT INFO
  3. # Provides:        pon
  4. # Required-Start:  $network $syslog
  5. # Required-Stop:   $network $syslog
  6. # Default-Start:   2 3 4 5
  7. # Default-Stop:    1
  8. # Short-Description: Start pon daemon
  9. ### END INIT INFO

  10. PATH=/sbin:/bin:/usr/sbin:/usr/bin

  11. . /lib/lsb/init-functions

  12. DAEMON=/path/to/foo
  13. PIDFILE=/var/run/pon.pid

  14. test -x $DAEMON || exit 5

  15. if [ -r /etc/default/pon ]; then
  16.             . /etc/default/pon
  17. fi

  18. LOCKFILE=/var/lock/pon

  19. lock_pon() {
  20.             if [ -x /usr/bin/lockfile-create ]; then
  21.                     lockfile-create $LOCKFILE
  22.                     lockfile-touch $LOCKFILE &
  23.                     LOCKTOUCHPID="$!"
  24.             fi
  25. }

  26. unlock_pon() {
  27.             if [ -x /usr/bin/lockfile-create ] ; then
  28.                     kill $LOCKTOUCHPID
  29.                     lockfile-remove $LOCKFILE
  30.             fi
  31. }

  32. case $1 in
  33.             start)
  34.                     log_daemon_msg "Starting pon service" "pond"
  35.                     lock_pon
  36.                     start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- -p $PIDFILE $NTPD_OPTS
  37.                     status=$?
  38.                     unlock_pon
  39.                     log_end_msg $status
  40.                     ;;
  41.             stop)
  42.                     log_daemon_msg "Stopping pon service" "pond"
  43.                     start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
  44.                     log_end_msg $?
  45.                     rm -f $PIDFILE
  46.                     ;;
  47.             restart|force-reload)
  48.                     $0 stop && sleep 2 && $0 start
  49.                     ;;
  50.             try-restart)
  51.                     if $0 status >/dev/null; then
  52.                     $0 restart
  53.                     else
  54.                     exit 0
  55.                     fi
  56.                     ;;
  57.             reload)
  58.                     exit 3
  59.                     ;;
  60.             status)
  61.                     status_of_proc $DAEMON "pon status"
  62.                     ;;
  63.             *)
  64.                     echo "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
  65.                     exit 2
  66.                     ;;
  67. esac
复制代码
复制下来以后放到/etc/init.d,命名为pon并赋予执行权限。其中,第16行DAEMON后面的路径填你的拨号程序的绝对路径。第46行的$DAEMON后面可以跟你要的参数。
然后,分别在/etc/rc{2-5}.d下面,做一个类似下面的软链接:
  1. ln -s ../init.d/pon S20pon
复制代码
在/etc/rc1.d/下面也做一个:
  1. ln -s ../init.d/pon K80pon
复制代码
数字的含义我解释过了。
这样子一来,你的pon服务就加入init了,而且也会像其他daemon一样在/var/log/boot.log有记录,屏幕上也会打印出启动信息。看你前面的回复,似乎你想要的就是服务启动时屏幕有输出信息,所以用init服务脚本比rc.local要更好。
菩提祖师
 楼主| 发表于 2013-10-14 20:22:55 | 显示全部楼层
woodelf 发表于 2013-10-14 20:12
重新写了个init服务脚本:复制下来以后放到/etc/init.d,命名为pon并赋予执行权限。其中,第16行DAEMON后 ...

呃...懂了,想起rc.local是在系统启动后才运行的.
因此,rc.local中的命令才并没有当作启动信息输出?
那输出到哪里去了呢?
woodelf
发表于 2013-10-14 20:26:07 | 显示全部楼层
菩提祖师 发表于 2013-10-14 20:22
呃...懂了,想起rc.local是在系统启动后才运行的.
因此,rc.local中的命令才并没有当作启动信息输出?
那输 ...


按理是输出到tty的,但是echo这条命令本身需要登录shell才能打印出信息来,而rc.local的执行时间是在用户登录,分配shell之前,所以是到黑洞里去了。

评分

参与人数 2经验 +7 人气 +1 收起 理由
菩提祖师 + 1 感谢解答: )
woxihuan2011 + 7 感谢解答: )

查看全部评分

菩提祖师
 楼主| 发表于 2013-10-15 23:36:31 | 显示全部楼层
woodelf 发表于 2013-10-14 20:26
按理是输出到tty的,但是echo这条命令本身需要登录shell才能打印出信息来,而rc.local的执行时间是在用 ...

"黑洞"是什么?"/dev/null"吗?
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-13 07:55 , Processed in 0.102254 second(s), 14 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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