在 tty 里添加一个开机自启动的任务管理器
{ 撰文/upsuper }
每当感觉到系统卡的时候,最好的方法无外乎进入 tty,登入,打开一个 top 监视。可是每次到了需要的时候才去开,打开的效率自然不敢恭维。于是便想,每次开机的时候,记起来就跑到 tty 下面去先开起来。不过这件事情总归是麻烦的,于是才有了现在的方案。
既然 tty 那么多,那我们就把他利用一下吧~让他开机自动在某个 tty 里面启动 top 无疑最方便了~
首先呢,我找到了 Ubuntu 里面 tty 配置存放的地方 /etc/init/ttyX.conf,其中的 X 便是 tty 的编号,我这里选择了 tty6.conf。打开这个文件,结构简单极了,看到里面
exec /sbin/getty -8 38400 tty6
就知道,肯定和 getty 有关系。man getty 里面查到可以通过 -l 参数设置登入程序替代 /bin/login。查了一下 man login,发现可以通过 -f username 的方式不进行验证地登入。
于是我就在 /bin 下面新建了一个 autologin 文件(其实理论上放哪里都可以,不过最好要用 root 权限创建,不然可以乱改就不好了),里面写上
#!/bin/sh
/bin/login -f upsuper
给这个文件加上可执行属性,接着将 /etc/init/tty6.conf 里面刚才那一行改成
exec /sbin/getty -8 -l '/bin/autologin' 38400 tty6
重启。
进入 tty6 发现没有效果,还是提示用户名,无语……于是输入了用户名 upsuper,结果发现没有要求密码,直接进入了。我退出登入,再输入 root,发现依然没有要求密码而直接进入了 upsuper 权限。
再查查 man getty,发现那个请求用户名是 getty 输出的,里面提到了 -n 参数,可以消除对用户名的请求,以及 -i 参数,不输出请求前的文字(在我的 Ubuntu 里面就是“Ubuntu 9.10”)。于是上面那行被改成了
exec /sbin/getty -8in -l '/bin/autologin' 38400 tty6
重新启动,发现已经可以自动进入。
不过我要的不是这个效果~
其实简单地说,我那个要实现也不难,按照现在的情况,就是在 ~/.bashrc 里面加上一行判断的事情了。不过我可不想这样。这样的话如果退出了 top 就会进入命令行。我的想法是,永远不让他进入命令行,这样看过去比较爽~
于是我就倒腾起了 login 程序的 FAKE_SHELL,如果在 autologin 脚本里改变环境变量,根本影响不了 login 程序,无论我改 FAKE_SHELL,还是 SHELL,都没有用,login 仍然义无反顾地进入了 bash……
最后我就想,唉,其实 autologin 脚本就是一正常脚本,只不过在登入的时候以 root 权限运行嘛,那我直接在里面运行 top 不久行了~考虑到权限因素,就是用 su 把权限改一下,不就解决问题了么?
于是最终版的 autologin 就出炉了:
#!/bin/sh
su -c '/usr/bin/top' upsuper
这个最后效果是什么样的呢?就是 top 以我的用户权限运行,然后点击 q 退出就会重新启动一个 top。这就是我要得效果了~很好很强大~算是合理的利用了一个 tty 了。现在只要点击 Ctrl-Alt-F6 就可以有现成的任务管理器了~
其实根据这个思路,tty 可以做的事情还很多。本来那个什么 -l 啦,-n 什么的,是拿来做自定义登入验证方式的,我觉得这个也大有文章可做~最后再感叹一下,Linux 实在太强大了~
{ Source. Thanks upsuper. }
Read More:
咦!试试……看着挺不错……
呵呵,这个想法不错。
htop更强大
不知道改用户的shell 可行不,修改/etc/passwd
@hmy: 那样就变成所有的 tty 进去都是 top 啦……
@simon: htop 貌似资源耗用比 top 大很多……
@upsuper:
呵呵,不错。修改用户shell你可以单分一个用户嘛
类似是事情以前做过,不过不是监视,是不用登录管理器,自动用startx方式来进入X,当时我用的是mingetty,因为当时我不知道系统默认的getty也能过自动登录。
1:2345:respawn:/sbin/getty 38400 tty1 直接把/sbin/getty改成/usr/bin/top不行?这个倒真没试过。
不过我比较喜欢退出top后进入shell,这样还能查下其他东西。
@walkerxk: 那样 top 是 root 权限……你敢么……至于 shell 我主要是因为这个作为一个常驻的任务管理器,其他的 tty 还可以照常用嘛……
@muxueqz: 单独分一个用户不久没意义了……什么都管理不了
@upsuper: 其他tty是下面的行设置的,和这行没关系,而且就一个top,又不是rm什么的,使用root权限又没关系,如果一个sudo的进程卡死了你的桌面,你用一般的top还杀不死呢。
[url=http://www.proemtechnologies.com/]Proem Technologies[/url]