Linux命令行find小技巧
命令行一直是Linux用户用来解决问题的首要选择,当需要做某件事时,你只要想好如何去做,从那时起你就知道该如何做了。
不过很少有人花些时间系统地了解处理工具在处理过程中的输入和输出。因此对于最基本实用工具的功能可能并不是很了解。在本文中,我们将讨论所有shell工具箱中都有的一个重要工具:find实用工具。
正如它的名字所表示的,find是在磁盘中查找满足给定标准的文件和目录的应用程序。默认情况下,它从当前目录开始,向下扫描所有子目录。find基于各种不同的文件属性来进行查询,而且可以对查询结果执行某种操作,通常是对每个查询结果运行一些程序。
让我们来看一些例子:首先,为了在当前目录或子目录中查找所有html文件,我们可以使用:
$ find -name "*.html" -type f
该命令有两个测试条件,第一个,"-name"用于检验搜索过程中的每个文件名,如果你需要对大小写敏感,可以使用"-iname"代替。第二个参数是"-type",它用于指定你感兴趣的文件类型。"f"表示我们查找的是普通文件,我们可以使用"d"表示目录或使用"l"表示符号连接。在find 手册中可以看到该工具的所有选项。
在上面的这个例子中,因为我们要在当前目录中搜索,所以没有指定路径。你可以从你的系统中的任何目录开始搜索,例如,你知道html文件存放在两个位置之一中,那么我们就可以通过指定一个开始搜索点使查询更快更准确。
$ find /var/www /home/nickg/public_html -name "*.html" -type f
这个查询从web服务器的根目录开始,搜索我的html根目录和它的子目录,希望能够得到我们想要的结果,而不是像web浏览器缓存或html帮助文件。
默认情况下,find遍历所有子目录,但是你可以通过指定最大深度来控制这个行为。在前面的例子中,如果我们只想搜索这两个目录不想搜索下一层,你可以添加"-maxdepth 1"到命令中。设置最大深度为0表示只检验命令行中的给定文件。同样,你可以设定最小深度,从而避免搜索位于根目录的文件。
Linux关机命令详解
在Linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各种关机命令。
1、shutdown
shutdown命令安全地将系统关机。有些用户会使用直接断掉电源的方式来关闭Linux,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备。
而在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结,即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的,还可能重启。这是由所有进程(process)都会收到系统所送达的信号(signal)决定的。这让像vi之类的程序有时间储存目前正在编辑的文档,而像处理邮件(mail)和新闻(news)的程序则可以正常地离开等等。
shutdown执行它的工作是送信号(signal)给init程序,要求它改变runlevel。
runlevel 0被用来停机(halt),runlevel 6是用来重新激活(reboot)系统,而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的,假定没有-h也没有-r参数给shutdown。要想了解在停机(halt)或者重新开机(reboot)过程中做了哪些动作,你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。
shutdown 参数说明:
[-t] 在改变到其它runlevel之前,告诉init多久以后关机。
[-r] 重启计算器。
[-k] 并不真正关机,只是送警告信号给每位登录者(login)。
[-h] 关机后关闭电源(halt)。
[-n] 不用init,而是自己来关机。不鼓励使用这个选项,而且该选项所产生的后果往往不总是你所预期得到的。
[-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。
[-f] 在重启计算器(reboot)时忽略fsck。
[-F] 在重启计算器(reboot)时强迫fsck。
[-time] 设定关机(shutdown)前的时间。
Ubuntu更新源列表时NO_PUBKEY(找不到公钥)问题的解决方法
在使用Ubuntu的过程中,有时我们会因为想试一下一些新奇的东东,于是我们可能会修改软件源的配置文件(/etc/apt/sources.list)。修改完成之后当然要“update”一下,但在“update”完成之后却发现出现了“GPG签名验证错误:××××,由于没有公钥,下列签名无法进行验证: NO_PUBKEY ×××××”的问题,如下图:
此时要如何解决呢?其实Ubuntu社区为我们提供了解决方案,在“http://keyserver.ubuntu.com/”里一般都可以找到我们所需要的公钥(PUBKEY)。当然,不是说直接访问这个网页去搜索下载再导入,而是通过终端来实现。下面是解决方法:
$ gpg --keyserver keyserver.ubuntu.com --recv 21C022AA985E0E11 # 后面的字符串是NO_PUBKEY后的提供字符 $ gpg --export --armor 21C022AA985E0E11 | sudo apt-key add - # 注意命令最后面还有一个“-”,千万不要忘记了它!
通过运行这两个简单的终端命令之后,我们已经把公钥(PUBKEY)成功的导入了(如果失败了,会出现提示的,本文就不多加说明了)。现在再来“update”一下,是不是就没问题了呢?