debian和centos如何查看用户进程

献给 Debian 和 Ubuntu 用户的一组实用程序 | Linux 中国
通过使用这些工具,用户可以找到哪些程序占用更多磁盘空间,更新系统后需要重新启动哪些服务,在一个软件包中搜索与模式匹配的文件,根据搜索字符串列出已安装的包等等。
编译自 | 
https://www.ostechnix.com/debian-goodies-a-set-of-useful-utilities-for-debian-and-ubuntu-users/
作者 | Sk
译者 | MjSeven 共计翻译:66篇 贡献时间:192 天
你使用的是基于 Debian 的系统吗?如果是,太好了!我今天在这里给你带来了一个好消息。先向 “Debian-goodies” 打个招呼,这是一组基于 Debian 系统(比如:Ubuntu、Linux Mint)的有用工具。这些实用工具提供了一些额外的有用的命令,这些命令在基于 Debian 的系统中默认不可用。通过使用这些工具,用户可以找到哪些程序占用更多磁盘空间,更新系统后需要重新启动哪些服务,在一个软件包中搜索与模式匹配的文件,根据搜索字符串列出已安装的包等等。在这个简短的指南中,我们将讨论一些有用的 Debian 的好东西。
Debian-goodies – 给 Debian 和 Ubuntu 用户的实用程序
debian-goodies 包可以在 Debian 和其衍生的 Ubuntu 以及其它 Ubuntu 变体(如 Linux Mint)的官方仓库中找到。要安装 debian-goodies,只需简单运行:
$ sudo apt-get install debian-goodies
debian-goodies 安装完成后,让我们继续看一看一些有用的实用程序。
1、 checkrestart
让我从我最喜欢的 checkrestart 实用程序开始。安装某些安全更新时,某些正在运行的应用程序可能仍然会使用旧库。要彻底应用安全更新,你需要查找并重新启动所有这些更新。这就是 checkrestart 派上用场的地方。该实用程序将查找哪些进程仍在使用旧版本的库,然后,你可以重新启动服务。
在进行库更新后,要检查哪些守护进程应该被重新启动,运行:
$ sudo checkrestart
[sudo] password for sk:
Found 0 processes using old versions of upgraded files
由于我最近没有执行任何安全更新,因此没有显示任何内容。
请注意,checkrestart 实用程序确实运行良好。但是,有一个名为 needrestart 的类似的新工具可用于最新的 Debian 系统。needrestart 的灵感来自 checkrestart 实用程序,它完成了同样的工作。 needrestart 得到了积极维护,并支持容器(LXC、 Docker)等新技术。
以下是 needrestart 的特点:
? 支持(但不要求)systemd
? 二进制程序的黑名单(例如:用于图形显示的显示管理器)
? 尝试检测挂起的内核升级
? 尝试检测基于解释器的守护进程所需的重启(支持 Perl、Python、Ruby)
? 使用钩子完全集成到 apt/dpkg 中
它在默认仓库中也可以使用。所以,你可以使用如下命令安装它:
$ sudo apt-get install needrestart
现在,你可以使用以下命令检查更新系统后需要重新启动的守护程序列表:
$ sudo needrestart
Scanning processes...
Scanning linux images...
Running kernel seems to be up-to-date.
Failed to check for processor microcode upgrades.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
好消息是 Needrestart 同样也适用于其它 Linux 发行版。例如,你可以从 Arch Linux 及其衍生版的 AUR 或者其它任何 AUR 帮助程序来安装,就像下面这样:
$ yaourt -S needrestart
在 Fedora:
$ sudo dnf install needrestart
2、 check-enhancements
check-enhancements 实用程序用于查找那些用于增强已安装的包的软件包。此实用程序将列出增强其它包但不是必须运行它的包。你可以通过 -ip 或 –installed-packages 选项来查找增强单个包或所有已安装包的软件包。
例如,我将列出增强 gimp 包功能的包:
$ check-enhancements gimp
gimp =& gimp-data: Installed: (none) Candidate: 2.8.22-1
gimp =& gimp-gmic: Installed: (none) Candidate: 1.7.9+zart-4build3
gimp =& gimp-gutenprint: Installed: (none) Candidate: 5.2.13-2
gimp =& gimp-help-ca: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-de: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-el: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-en: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-es: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-fr: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-it: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-ja: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-ko: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-nl: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-nn: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-pt: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-ru: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-sl: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-help-sv: Installed: (none) Candidate: 2.8.2-0.1
gimp =& gimp-plugin-registry: Installed: (none) Candidate: 7.ubuntu3
gimp =& xcftools: Installed: (none) Candidate: 1.0.7-6
要列出增强所有已安装包的,请运行:
$ check-enhancements -ip
autoconf =& autoconf-archive: Installed: (none) Candidate:
btrfs-progs =& snapper: Installed: (none) Candidate: 0.5.4-3
ca-certificates =& ca-cacert: Installed: (none) Candidate:
cryptsetup =& mandos-client: Installed: (none) Candidate: 1.7.19-1
dpkg =& debsig-verify: Installed: (none) Candidate: 0.18
顾名思义,dgrep 用于根据给定的正则表达式搜索制指定包的所有文件。例如,我将在 Vim 包中搜索包含正则表达式 “text” 的文件。
$ sudo dgrep "text" vim
Binary file /usr/bin/vim.tiny matches
/usr/share/doc/vim-tiny/copyright: that they must include this license text. You can also distribute
/usr/share/doc/vim-tiny/copyright: include this license text. You are also allowed to include executables
/usr/share/doc/vim-tiny/copyright: 1) This license text must be included unmodified.
/usr/share/doc/vim-tiny/copyright: text under a) applies to those changes.
/usr/share/doc/vim-tiny/copyright: context diff. You can choose what license to use for new code you
/usr/share/doc/vim-tiny/copyright: context diff will do. The e-mail address to be used is
/usr/share/doc/vim-tiny/copyright: On Debian systems, the complete text of the GPL version 2 license can be
dgrep 支持大多数 grep 的选项。参阅以下指南以了解 grep 命令。
? 献给初学者的 Grep 命令教程[1]
dglob 实用程序生成与给定模式匹配的包名称列表。例如,找到与字符串 “vim” 匹配的包列表。
$ sudo dglob vim
vim-tiny:amd64
vim-common:all
vim-runtime:all
默认情况下,dglob 将仅显示已安装的软件包。如果要列出所有包(包括已安装的和未安装的),使用 -a 标志。
$ sudo dglob vim -a
5、 debget
debget 实用程序将在 APT 的数据库中下载一个包的 .deb 文件。请注意,它只会下载给定的包,不包括依赖项。
$ debget nano
Get:1 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 nano amd64 2.9.3-2 [231 kB]
Fetched 231 kB in 2s (113 kB/s)
这是此次集合中另一个有用的实用程序。dpigs 实用程序将查找并显示那些占用磁盘空间最多的已安装包。
260644 linux-firmware
167195 linux-modules-extra-4.15.0-20-generic
75186 linux-headers-4.15.0-20
64217 linux-modules-4.15.0-20-generic
55620 snapd
31070 libicu60
28420 vim-runtime
25971 gcc-7
24349 g++-7
如你所见,linux-firmware 包占用的磁盘空间最多。默认情况下,它将显示占用磁盘空间的 前 10 个包。如果要显示更多包,例如 20 个,运行以下命令:
$ dpigs -n 20
debman 实用程序允许你轻松查看二进制文件 .deb 中的手册页而不提取它。你甚至不需要安装 .deb 包。以下命令显示 nano 包的手册页。
$ debman -f nano_2.9.3-2_amd64.deb nano
如果你没有 .deb 软件包的本地副本,使用 -p 标志下载并查看包的手册页。
$ debman -p nano nano
建议阅读:
? 每个 Linux 用户都应该知道的 3 个 man 的替代品[2]
8、 debmany
安装的 Debian 包不仅包含手册页,还包括其它文件,如确认、版权和自述文件等。debmany实用程序允许你查看和读取那些文件。
$ debmany vim
使用方向键选择要查看的文件,然后按回车键查看所选文件。按 q 返回主菜单。
如果未安装指定的软件包,debmany 将从 APT 数据库下载并显示手册页。应安装 dialog包来阅读手册页。
9、 popbugs
如果你是开发人员,popbugs 实用程序将非常有用。它将根据你使用的包显示一个定制的发布关键 bug 列表(使用 popularity-contest 数据)。对于那些不关心的人,popularity-contest 包设置了一个 cron (定时)任务,它将定期匿名向 Debian 开发人员提交有关该系统上最常用的 Debian 软件包的统计信息。这些信息有助于 Debian 做出决定,例如哪些软件包应该放在第一张 CD 上。它还允许 Debian 改进未来的发行版本,以便为新用户自动安装最流行的软件包。
要生成严重 bug 列表并在默认 Web 浏览器中显示结果,运行:
此外,你可以将结果保存在文件中,如下所示。
$ popbugs --output=bugs.txt
10、 which-pkg-broke
此命令将显示给定包的所有依赖项以及安装每个依赖项的时间。通过使用此信息,你可以在升级系统或软件包之后轻松找到哪个包可能会在什么时间损坏了另一个包。
$ which-pkg-broke vim
Package &debconf-2.0& has no install time info
debconf Wed Apr 25 08:08:40 2018
gcc-8-base:amd64 Wed Apr 25 08:08:41 2018
libacl1:amd64 Wed Apr 25 08:08:41 2018
libattr1:amd64 Wed Apr 25 08:08:41 2018
dpkg Wed Apr 25 08:08:41 2018
libbz2-1.0:amd64 Wed Apr 25 08:08:41 2018
libc6:amd64 Wed Apr 25 08:08:42 2018
libgcc1:amd64 Wed Apr 25 08:08:42 2018
liblzma5:amd64 Wed Apr 25 08:08:42 2018
libdb5.3:amd64 Wed Apr 25 08:08:42 2018
11、 dhomepage
dhomepage 实用程序将在默认 Web 浏览器中显示给定包的官方网站。例如,以下命令将打开 Vim 编辑器的主页。
$ dhomepage vim
这就是全部了。Debian-goodies 是你武器库中必备的工具。即使我们不经常使用所有这些实用程序,但它们值得学习,我相信它们有时会非常有用。
我希望这很有用。更多好东西要来了。敬请关注!
via: https://www.ostechnix.com/debian-goodies-a-set-of-useful-utilities-for-debian-and-ubuntu-users/
作者:SK[4]选题:lujun9972译者:MjSeven校对:wxy
本文由 LCTT原创编译,Linux中国
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点linux网卡流量/进程网速查看
时间: 16:42:37
&&&& 阅读:7402
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&1、&&&&sar&-n&DEV&1&100&&&&&1代表一秒统计并显示一次&&&&&100代表统计一百次&&&&&使用ntop等工具,就更方便简单了,不过这个更灵活2、nload3、nethogs 详细查看每个进程的即时网速&&&&默认是eth0,使用nethogs eth1 查看eth1NetHogs&version&0.8.0
&&PID&USER&&&&&PROGRAM&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&DEV&&&&&&&&SENT&&&&&&RECEIVED&&&&&&&
23705&zabbix&&&..al/zabbix/sbin/zabbix_proxy:&trapper&#1&[processing&data]&&eth0&&&&&&&0.100&&&&&&&0.147&KB/sec
23721&zabbix&&&..l/zabbix/sbin/zabbix_proxy:&trapper&#13&[processing&data]&&eth0&&&&&&&0.096&&&&&&&0.133&KB/sec
23717&zabbix&&&..l/zabbix/sbin/zabbix_proxy:&trapper&#11&[processing&data]&&eth0&&&&&&&0.100&&&&&&&0.133&KB/sec
23715&zabbix&&&..al/zabbix/sbin/zabbix_proxy:&trapper&#9&[processing&data]&&eth0&&&&&&&0.100&&&&&&&0.133&KB/sec
23706&zabbix&&&..al/zabbix/sbin/zabbix_proxy:&trapper&#2&[processing&data]&&eth0&&&&&&&0.096&&&&&&&0.133&KB/sec
23712&zabbix&&&..al/zabbix/sbin/zabbix_proxy:&trapper&#6&[processing&data]&&eth0&&&&&&&0.100&&&&&&&0.132&KB/sec
23746&zabbix&&&..l/zabbix/sbin/zabbix_proxy:&trapper&#19&[processing&data]&&eth0&&&&&&&0.100&&&&&&&0.132&KB/sec
23720&zabbix&&&..l/zabbix/sbin/zabbix_proxy:&trapper&#12&[processing&data]&&eth0&&&&&&&0.295&&&&&&&0.132&KB/sec
8815&&root&&&&&sshd:&root@pts/0,pts/1,pts/2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&eth0&&&&&&&1.514&&&&&&&0.082&KB/sec
57093&root&&&&&/usr/java/j2sdk/bin/java & & & &3、iftop&& & & & & & & & & & & & &在类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用。一、iftop是什么?是类似于top的实时流量监控工具。官方网站:二、iftop有什么用?可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。三、安装iftop安装方法1、编译安装如果采用编译安装可以到下载最新的源码包。安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。CentOS上安装所需依赖包:yum install flex byacc& libpcap ncurses ncurses-devel libpcap-develDebian上安装所需依赖包:apt-get install flex byacc& libpcap0.8 libncurses5下载iftopwget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gztar zxvf iftop-0.17.tar.gzcd iftop-0.17./configuremake && make install安装方法2:(懒人办法,最简单)直接省略上面的步骤CentOS系统:yum install flex byacc& libpcap ncurses ncurses-develwget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpmrpm -ivh iftop-0.17-1.el5.rf.i386.rpmDebian系统 运行:apt-get install iftop四、运行iftop直接运行: iftop效果如下图:650) this.width=650;" class="alignnone size-full wp-image-1407" title="iftop-interface" src="http://vpser.b0.upaiyun.com/uploads/2010/07/iftop-interface.jpg"
width="646" height="341" />五、相关参数及说明1、iftop界面相关说明界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。中间的&= =&这两个左右箭头,表示的是流量的方向。TX:发送流量RX:接收流量TOTAL:总流量Cumm:运行iftop到目前时间的总流量peak:流量峰值rates:分别表示过去 2s 10s 40s 的平均流量2、iftop相关参数常用的参数-i设定监测的网卡,如:# iftop -i eth1-B 以bytes为单位显示流量(默认是bits),如:# iftop -B-n使host信息默认直接都显示IP,如:# iftop -n-N使端口信息默认直接都显示端口号,如: # iftop -N-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0-h(display this message),帮助,显示参数信息-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;-b使流量图形条默认就显示;-f这个暂时还不太会用,过滤计算包用的;-P使host信息及端口信息默认就都显示;-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M进入iftop画面后的一些操作命令(注意大小写)按h切换是否显示帮助;按n切换显示本机的IP或主机名;按s切换是否显示本机的host信息;按d切换是否显示远端目标主机的host信息;按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;按N切换显示端口号或端口服务名称;按S切换是否显示本机的端口信息;按D切换是否显示远端目标主机的端口信息;按p切换是否显示端口信息;按P切换暂停/继续显示;按b切换是否显示平均流量图形条;按B切换计算2秒或10秒或40秒内的平均流量;按T切换是否显示每个连接的总流量;按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;按j或按k可以向上或向下滚动屏幕显示的连接记录;按1或2或3可以根据右侧显示的三列流量数据进行排序;按&根据左边的本机名或IP排序;按&根据远端目标主机的主机名或IP排序;按o切换是否固定只显示当前的连接;按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!按q退出监控。六、常见问题1、make: yacc: Command not foundmake: *** [grammar.c] Error 127解决方法:apt-get install byacc&& /&& yum install byacc2、configure: error: Curses! Foiled again!(Can‘t find a curses library supporting mvchgat.)Consider installing ncurses.解决方法:apt-get install libncurses5-dev& / && yum& install ncurses-devel标签:&&&&&&&&&原文:http://pynliu.blog.51cto.com/5936
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!Linux如何查看进程、杀死进程、启动进程等常用命令
ps 命令用于查看当前正在运行的进程。
grep 是搜索
例如: ps -ef | grep java
表示查看所有进程里 CMD 是 java 的进程信息
ps -aux | grep java
-aux 显示所有状态
ps kill 命令用于终止进程
例如: kill -9 [PID]
-9 表示强迫进程立即停止
通常用 ps 查看进程 PID ,用 kill 命令终止进程
关键字: linux 查进程、杀进程、起进程
ps命令查找与进程相关的PID号:
ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定&A&参数相同。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t&终端机编号& 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
ps aux | grep program_filter_word,ps -ef |grep tomcat
ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。
使用kill命令结束进程:kill xxx
常用:kill -9 324
下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME
3.进入到进程的执行文件所在的路径下,执行文件 ./文件名ubuntu查看内存占用和查看cpu使用情况的简单方法(ubuntu内存管理)
& 发布时间: 16:14:43 & 作者:佚名 &
本文主要介绍了ubuntu查看内存占用和查看cpu使用情况的简单方法,大家参考使用吧
单独查看内存使用情况的命令:free -m查看内存及cpu使用情况的命令:top也可以安装htop工具,这样更直观,安装命令如下:sudo apt-get install htop安装完后,直接输入命令:htop就可以看到内存或cpu的使用情况了。
大家感兴趣的内容
12345678910
最近更新的内容Debian的init进程初始化工作原理-红联Linux系统门户
Debian的init进程初始化工作原理
init和inittab
=============
  Linux下为什么会要有个init?用过windows 9.x的人应该知道有个批处理文件autoexec.bat,用过windows NT/2000系统的人应该在控制面板中见过system service工具,它们的目的是相同的。只是比较起来windows下的这些东西功能太弱(当然用法也更简单)。
  init是Linux启动的最后一步,它帮助用户完成每次启动系统都必须完成的一些重复性任务,如加载文件系统、各类网络服务等等程序;它还有一个重要用途,让用户自定义系统运行环境,只启动需要的进程,关闭不用的进程,释放内存和处理器资源,让系统运行得更快更稳。
  init会按任务表执行我们下的命令,这个任务表就是/etc/inittab文件。我们可以为系统制定多个运行环境以满足不同任务的需要,在 inittab中称之为运行等级(runlevel)。例如,计算机要用来完成一种联网编译任务(与其它系统共享CPU周期,合作编译软件),这样情况需占用大量CPU能力和内存,所以当计算机用作这种用途时,其他程序的运行要尽可能少。可设置一个运行等级(如:runlevel 4),把其它程序包括X Window全关闭,只启动联网编译进程;其他时段,你的计算机要与Windows系统共享文件,需要启动Samba,可以再定义一个运行等级(如: runlevel 2)。
  现在当你要进行联网编译时可运行init 4,而不用手工去关闭每个暂不需要的进程;要与Windows系统共享文件可运行init 2。
Debian系统对某些运行等级进行了预先配置(而且是无法修改的)
runlevel 0:它的任务就是关闭所有程序,关机。如果计算机及内核支持APM,系统电源可自动切断。
runlevel 1:为单用户模式保留的。在这个运行等级下,除了一个root shell外,没有其它程序运行。除了root文件系统以只读方式安装外,不安装其它文件系统。该运行等级通常在恢复系统时用。
runlevel 6:与runlevel 0非常相似,只是它是重启系统而不是关闭系统。
runlevel 2、3、4、5:Debian系统对它们没有具体规定,通常可自由进行定制,它们都属于多用户模式。其中runlevel 3是Debian使用的默认运行等级。启动Debian系统时,用的就是这个运行等级。
下面是inittab文件的例子
引用:# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91
13:35:21 miquels Exp $
# The default runlevel.
id:2:initdefault:
# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS
# What to do in single-user mode.
~~:S:wait:/sbin/sulogin
# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin
# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."
# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop
# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
# :::
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3
  该文件有一个基本类型的指令,它们指定命令行,命令行所采取的动作,在何种运行等级下激活命令。这引起命令行的格式大体如下:
id:runlevels:action:command
  id是任意一个名称(具体是什么并不重要),runlevels是一个数字串(代表运行等级),action描述何时执行命令,command指定执行的实际命令。拿启动getty的命令行举例:
1:2345:respawn:/sbin/getty 38400 tty1
  该命令告诉init,它应该在引导后以运行等级2-5运行命令/sbin/getty 38400 tty1。动作标记respawn表示命令在退出时重新运行(当用户在shell输入exit的时候)。
  从方面的文件中可以看到,运行等级2和3有六个活动的gettys,而等级4和5只有一个。假设运行等级4下有三个shell运行在虚拟控制台。你在ID为2和3的命令行的运行等级字段添加了数字4,也就是说你将
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
2:234:respawn:/sbin/getty 38400 tty2
3:234:respawn:/sbin/getty 38400 tty3
然后重启或执行以下命令:
对inittab进行修改。telinit q命令指示init重新加载它的配置。参阅telinit(8)。
/etc/inittab的其它行看起来比较复杂,我们先看看还有哪些动作标记:
?respawn:启动命令并监视命令的执行,当进程退出时,再次执行该命令(通常用于虚拟终端设备上的登录提示)。 ?wait:进入指定运行等级时,启动进程。init会停下来,直到执行完成。这个标记用于设置特定等级下软件的启动。
?once:进入指定的任一运行等级时,启动一次进程。
?boot:该命令在系统引导时运行。这种类型的指令忽略运行等级。
?bootwait:该命令在系统引导时运行,init等到它退出后才能继续做别的事。
?off:禁用所有运行等级下的某个命令。
?initdefault:这种类型的项指定在系统引导时进入哪个运行等级。
?powerwait:这类指令给出在电源不足时需要执行的命令。init直到进程完成后才继续工作。
?powerfail:与powerwait类似,但init不等待进程完成。
?powerworkwait:电源正常后执行。init暂停,直到进程结束。
?powerfailnow:当便携机电池或外部UPS电池电量不足时执行。
?ctrlaltdel:指定init在捕获ctrl+alt+del组合键时执行的命令。
?kbdrequest:把特殊动作映射到特定的按键。Debian中的是alt+UpArrow。
现在再看上面的文件是不是清楚了许多?
更强大的sysvinit
================
  inittab的主要功能是描述引导及正常操作时,应该在何种运行等级下启动什么程序,每个运行等级的具体项目完全可以通常/etc/inittab来定义,但Debian有一个更健壮的方案sysvinit,它被认为是init最强大的应用程序之一。Debian组织inittab的方式是把运行等级的大部分定义从inittab中移出来,移到一个脚本层次中去。惟一直接从inittab启动的程序只有getty,它用于虚拟设备上启动登录提示符,保留它因为它们要求特殊处理,在inittab之外处理要困难得多。
  inittab来启动所有软件当然是可能的,但将所有配置写在同一个文件既不方便查看也不方便维护,所以文件里会加上这许多行:
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
  这些行实际决定了系统在各个运行等级下的行为。它们如何做到的也许并不明显,但至少我们知道主要意思:首先每行都有个符号ID lx,lx表示runlevel x;其次,每行只在一个运行等级下激活,该运行等级对应着符号ID中的数字x。命令执行时,init停下来,直到进程结束。最后,每个命令行调用一个脚本 /etc/init.d/rc x,这里x代表当前运行等级的数字。显然各运行等级的具体任务在/etc/init.d/rc脚本中安排。
  Debian init设置的核心在/etc/init.d目录。该目录包含了启动或停止重要软件的脚本,为了简化操作,规定每个脚本都使用相同的一套参数----start或stop。个别软件包维护者为用户着想,往这些脚本中加了其他功能,但init不会去调用它们。
  举个例子,可调用:#/etc/init.d/apache start来启动Apache,调用:#/etc/init.d/apache stop来关闭它。
  作为一个用户工具,这是非常有用的,它让用户轻松启动和关闭Debian所带的复杂程序,不过在考虑如何启动程序前,先检查/etc/init.d,看看是不是已经有脚本可以做这件事了。借助于这种机制,可以按自己的需求来调整运行等级,/etc/init.d/rc可以把系统引入所需的运行等级。 /etc/rcx.d是一组指向/etc/init.d的符号链接。进行运行等级时,rc在运行等级目录中按逻辑顺序处理每个脚本。首先前缀为K的每个文件都以参数stop(按字母和数字顺序)执行;其次,以S为前缀的每个脚本都以参数start(按字母和数字顺序)执行。
  了解了工作原理,下面试着自己来构造一个运行等级。我们使用运行等级5和与之相关的rc目录/etc/rc5.d。首先,看看该目录下的内容:找出每个符号链接所做的工作;查看文件,判断它来自哪个文件。经过仔细查看,找出启动无用程序的S打头的脚本,把它们删掉,在/etc/init.d中找出需要运行但未包括在内的脚本,例如假设你想在运行等级5下启动Samba,执行命令:
ln -s /etc/init.d/samba /etc/rc5.d/S20samba
  看到这里是不是对init有了新的了解,那么来测试一下学习成果:关闭Debian默认安装时加载的gdm/xdm/kdm进程,让Debian启动到命令行终端而不是X。
深入学习:
inittab(5)
init(8)
telinit(8)
/usr/doc/sysvinit/*}

我要回帖

更多关于 debian和centos 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信