查看: 3005|回复: 16
收起左侧

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

[复制链接]
菩提祖师
发表于 2013-10-11 22:53:25 | 显示全部楼层 |阅读模式
本帖最后由 菩提祖师 于 2013-10-15 23:28 编辑

pon方式上网,如何在X登录时自动运行?
sudo ifconfig eth0 up
sudo pon dsl-provider
以上两个命令放入~/.bashrc也没有自动连接(这个文件只对tty有效吗?)
而且我设置pppoeconf时已经选择boot时自动连接,可是开机之后也没有见自动连接.

另外,不知道为什么,时不时会存在多个ppp,
是通过ifconfig查看,存在多个ppp连接,但是刚刚连接时显示只有一个ppp不知道为什么有多个.
系统是Lubuntu.
woodelf
发表于 2013-10-11 23:04:01 | 显示全部楼层
本帖最后由 woodelf 于 2013-10-11 23:08 编辑

bashrc是用户登录shell即读取并执行的配置文件。但是你给出的命令需要root权限,显然不是普通用户就能执行的,因为无法接受sudo输入密码这一步。
另外,对于运行startx启动图形界面的情况,应当在~/.xinitrc设置环境变量和要启动的程序,而如果是通过gdm,kdm等dm启动的,需要设置的是~/.xprofile。
你可以把需要执行的命令放入/etc/rc.local去,不加sudo,在要执行的最后一行命令上加nohup或&。不过我不确定采用upstart的ubuntu是否也遵循此方法。
PS:pppoeconf似乎是已经废弃了,目前推荐用pppd,可参照下Arch的wiki:https://wiki.archlinux.org/index.php/pppd
个人只在FreeBSD和OpenBSD下面用过用户级的ppp,不过没设置过开机启动,以上所给资料和内容不保证正确性。

评分

参与人数 2经验 +5 人气 +1 收起 理由
a330391 + 5 加分鼓励
菩提祖师 + 1 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-13 04:53:55 | 显示全部楼层
本帖最后由 菩提祖师 于 2013-10-13 04:55 编辑
woodelf 发表于 2013-10-11 23:04
bashrc是用户登录shell即读取并执行的配置文件。但是你给出的命令需要root权限,显然不是普通用户就能执行的 ...


为什么命令后面要加nohup或&,这两个不都是让命令后台运行的方法吗?怕拨号时影响系统启动?
我这里执行了pon dsl-provider之后,没看到有"正在连接之类"的提示,只提示"Plugin rp-pppoe.so loaded".

2013年10月13日04时55分31秒补充:
还有,rc是什么的缩写?为什么自动运行的脚本都包含rc呢?
菩提祖师
 楼主| 发表于 2013-10-13 11:56:50 | 显示全部楼层
woodelf 发表于 2013-10-13 10:28
加nohup或&都是为了防止命令的打印信息输出在屏幕上,干扰后面其他服务的正常启动。这个我是有亲身经历的 ...


我这里在/etc/rc.local添加echo和sleep之后并没有显示echo输出的内容,这是什么原因呢?
而且sleep也并没有延缓系统启动,只是延缓了/dev/tty1(不确定是仅输出停止,后台继续其它命令,还是该shell会话完全被sleep阻塞)
woodelf
发表于 2013-10-13 12:30:43 | 显示全部楼层
菩提祖师 发表于 2013-10-13 11:56
我这里在/etc/rc.local添加echo和sleep之后并没有显示echo输出的内容,这是什么原因呢?
而且sleep也并没 ...

描述太笼统,没有具体的举例,难以判断。
菩提祖师
 楼主| 发表于 2013-10-14 12:08:58 | 显示全部楼层
woodelf 发表于 2013-10-13 12:30
描述太笼统,没有具体的举例,难以判断。

具体举例?就是在/etc/rc.local中添加echo,故意显示输出一段文字,然后用sleep来延时暂停,查看,不够具体吗?
woodelf
发表于 2013-10-14 12:29:23 | 显示全部楼层
菩提祖师 发表于 2013-10-14 12:08
具体举例?就是在/etc/rc.local中添加echo,故意显示输出一段文字,然后用sleep来延时暂停,查看,不够具体吗?

用echo -n来防止打断后续的服务启动,同时sleep这么写(sleep 5 && /path/to/foo)。
你要搞这么复杂的话,不如自己写个init脚本,加到启动服务里面去。
菩提祖师
 楼主| 发表于 2013-10-14 16:57:31 | 显示全部楼层
woodelf 发表于 2013-10-14 12:29
用echo -n来防止打断后续的服务启动,同时sleep这么写(sleep 5 && /path/to/foo)。
你要搞这么复杂的话, ...


呃...我的意思是在/etc/rc.local添加echo,之后sleep,之后并没有看到内容,就好像没有添加一样.(只是tty1有延迟,进入操作系统后还在显示引导信息)
you35851928
发表于 2013-10-14 17:13:31 | 显示全部楼层
上面的回答帮助颇多!!
woodelf
发表于 2013-10-14 17:21:43 | 显示全部楼层
本帖最后由 woodelf 于 2013-10-14 17:26 编辑
菩提祖师 发表于 2013-10-14 16:57
呃...我的意思是在/etc/rc.local添加echo,之后sleep,之后并没有看到内容,就好像没有添加一样.(只是tty1 ...

是的,在启动过程中,rc.local是最后才被读取并执行的内容,所以我说不如写个init脚本,加入到启动服务中。
以下是我按照ubuntu的init脚本语法写的一个示例脚本:
  1. #!/bin/bash
  2. ### BEGIN INIT INFO
  3. # Provides:          pon
  4. # Required-Start:   
  5. # Required-Stop:   
  6. # Default-Start:   
  7. # Default-Stop:      
  8. # Short-Description: Automatically perform PPPoE dial
  9. # Description:      
  10. ### END INIT INFO
  11. case "$1" in
  12.   start)
  13.         echo -n "Starting PPPoE"
  14.         # To launch your process
  15.         sleep 5 && /path/to/command/to/start/your_service
  16.         echo "."
  17.         ;;
  18.   stop)
  19.         echo -n "Stopping your_service"
  20.         # To stop your process
  21.         /path/to/command/to/stop/your_service
  22.         echo "."
  23.         ;;
  24.   *)
  25.         echo "Usage: /sbin/service your_service {start|stop}"
  26.         exit 1
  27. esac
  28. exit 0
复制代码
你可以把它命名为pon,并放入/etc/init.d,然后以root身份运行:
  1. update-rc.d pon defaults 98 02
复制代码
这里,98代表开机服务启动的优先级,数字越大,优先级越高,最高99。02代表关机服务停止的优先级,规则同上。同时要注意,越早启动的服务,在关机时应当越晚结束。
你可以先试试,或者再查查具体ubuntu的init服务资料,我不太擅长写脚本。
另外,Lubuntu默认是以splash启动的,即使要在屏幕上打印信息,你也看不到啊,除非指定nosplash。而且ubuntu的upstart架构启动还是很快的,服务反馈信息基本是一闪就过去了。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-13 08:06 , Processed in 0.134652 second(s), 19 queries .

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

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