回到顶部
您的当前位置: 操作系统> LINUX> 进阶应用
每个极客都应该知道的Linux技巧
2014-03-10 15:45:56
标签: 转载 Linux 技巧
1.检查不属于你运行的程序

    应用程序:bash(译注:UNIX或者LINUX的shell)

    想象下这个场景-你已经准备好了要和同事在办公室里对战一局快速的Crack Attack(译注:一款免费的OpenGL游戏,类似俄罗斯方块),不料却发现,当你正准备要击败你这个傲慢的下属时,方块却停止了-是什么让你的机器变得这么慢?这肯定是因为其他的用户运用他们娴熟的经验来盗取你宝贵的CPU时间、服务器或者其他的诡异方式,真烦人!

    好,让我们列举出系统中所有不是由你运行的程序!

ps aux | grep -v `whoami`

    或者,更巧妙些的是,为什么不列出最占用时间的前十个程序呢:

ps aux--sort=-%cpu | grep -m 11 -v `whoami`

    也许最好使用root权限来运行这条指令,因为这样可以过滤出大部分活跃的后台程序。现在你有了这些信息,你可以终止他们的进程,但是更“卑鄙”的是反复地在他们的桌面上运行xeyes(译注:Linux下的一条好玩的命令)!

2.在多个文件中替换掉相同的文本

    应用程序:find(译注:Linux下的一条命令)/Perl

    如果你有个文件,想在多个位置进行替换,这里有很多方法来实现。调用test[someting]把当前目录里所有文件中的Windows替换成Linux,你可以像这样运行它:

perl -i -pe 's/Windows/Linux/;' test*

    要替换当前目录以及下层目录里所有文件中的Windows为Linux,你可以这样运行:

find . -name '*.txt' -print | xargs perl -pi -e's/Windows/Linux/ig' *.txt

    或者如果你更需要让它只作用于普通文件上:

find -type f -name '*.txt' -print0 | xargs --null perl -pi -e 's/Windows/Linux/'

    节省了大量的时间并且获得了高水平的大师等级!

3.合并一个不稳定的终端

    应用程序:bash

    我们都已经做过这件事了-偶尔使用less或者cat来列出一个文件,或者以浏览二进制文件而结束,这通常包含各种可以轻易弄乱你的终端显示的控制代码、警报声、一些有趣的字符,以及一些奇怪的颜色组合,最后,你的字体将会被一些难以辨认的字符所替代,而你却不知道该怎么办。显然bash仍然继续工作着,但是你就是不能明白到底发生了什么!发送一个初始化命令给这个终端:

reset

    然后一切就再次恢复正常了。

4.创造Mozilla关键词

    应用程序:Firefox/Mozilla

    在浏览器上的一个有用的特征是,它们有一种能力,可以通过输入gg onion来通过Google搜索onion这个词的一切。同一功能在Mozilla上也可实现,通过单击Bookmarks(书签)>Manage Bookmarks(管理书签)然后添加一个新的书签,添加的URL就像这样:

http://www.google.com/search?q=%s

    现在选择书签编辑器中的条目并且点击Properties(属性)按钮,现在输入一个类似gg的关键字(或者可以是你选择的任何字符)就行了。在URL中的%s将被关键字之后的文本内容替代。你可以用这种方法向其他一些依赖你当前URL信息的网站发送请求。

    或者,右击一个搜索区域然后选择菜单选项“为这个搜索添加一个关键词…”。接下来的会话将允许你使用一个指定的关键词。

5.运行多种X会话

    应用程序:X

    如果你给别人分享了你的Linux box(),而厌烦了不断的登入、登出,当你知道了这不是必要的时候,可能会如释重负。假设你的电脑以图形模式启动(runlevel 5),通过同时按下Control+Alt+F1键-你将得到一个登陆提示。输入你的登录名以及密码然后执行:

startx -- :1

    来进入你的图形环境。按下Ctrl+Alt+F7来回到在你之前的用户会话,如果想回到你自己的用户会话则按下Ctrl+Alt+F8。

    你可以重复使用这项技巧:F1键到F6键可以识别六个控制台会话,而F7到F12可以识别六个X会话。警告:尽管这在多数情况下是适用的,但是不同的变种可能用不同的方式来实现这项功能。

6.更快地浏览

    应用程序:KDE(译注:一种Linux的桌面环境)

    KDE是一个虽然小众,但是在提升你的网页浏览经验方面很有用的选择。启动一个KDE控制中心,然后从工具条中选择System(系统)>KDE performance。现在你可以选择预加载浏览器实例。实际上,这意味著浏览器在开机的时候就开始运行,在你用之前都保持隐藏状态。当你想要使用它的时候,它几乎是瞬间出现。

7.简单地备份你的网站

    应用程序:Backups

    如果你想要从一台电脑上备份一个目录,但你仅仅想要复制改变的文件到它的备份而不是复制所有的东西到各自的备份,你可以使用工具rsync来实现它。你需要在这个远程的源备份计算机上有一个账户。下面是这条命令:

rsync -vare ssh jono@192.168.0.2:/home/jono/importantfiles/* /home/jono/backup/

    这样我们就备份了192.168.0.2地址上/home/jono/importantfiles/目录下的所有文件到当前机器上的/home/jono/backup目录下。

8.使你的时钟保持准时

    应用程序:NTP

    如果你发现电脑上的时钟似乎与时间脱轨了,你可以使用一个特殊的NTP工具,来确保它准到只有穿实验服的人才会需要的程度。你需要安装ntpdate工具,它通常包含在NTP包中,然后你就可以与NTP服务器保持同步了:

ntpdate ntp.blueyonder.co.uk

    可以在www.eecis.udel.edu/~mills/ntp/clock1b.html上获得相应的NTP服务器的列表。如果你修改了你的开机程序并且在脚本中包含这些命令,就可以确保无论何时你启动电脑都是完全准时的。你还可以运行一个定时任务来校对时间。

9.找到最大的文件

    应用程序:Shell

    计算机中一个常见的问题是,你可能想删一部分大的文件(类似音频或视频片段)。如下你可以找到当前目录中最大的那个文件:

ls -lSrh

    “r”的作用是将大的文件列在后面,而“h”则是给出易于人们阅读的输出(MB或者诸如此类)。你也可以搜寻最大的MP3/MPEG文件:

ls -lSrh *.mp*

    你也可以通过下面这条命令搜寻最大的目录:

du -kx | egrep -v "\./.+/" | sort -n

10.Nautilus快捷键

    应用程序:Nautilus(译注:Linux图形界面中的一个文件管理器)

    尽管很多文件管理器近日来被设计为使用鼠标进行管理,但有时用键盘还是方便些。Nautilus有一些键盘快捷键,可以使你快速浏览文件:

    打开一个定位文件 – Ctrl+L

    打开父文件夹 – Ctrl+Up

    用方向键来浏览当前文件夹

    你也可以使用‘emblems’来定制文件图标。这里有少量的应用于个别文件或者组的图象展示。打开Edit(编辑) > Backgrounds and Emblems(背景和符号)菜单条目,然后拖放你想要的图片即可。

11.整理你的数据库

    应用程序:MySQL

    无论何时你改变一个MySQL数据库的结构,或者从中删掉大量的数据,文件都有可能被分散,并导致一些性能损失。尤其是当运行查询命令时这个情况最容易发生。每当你要改动数据库的时候,记得运行这个优化器:

mysqlcheck -o

    也许你会发现,如果你使用VARCHAR文件,有必要定期的整理你的数据库表:这个变长列(variable-length columns)是非常倾向于分裂的。

12.更快的邮件

    应用程序:KMail

    连三秒钟都不想花费在找邮箱客户端上面?不想被桌面上堆积成山日渐腐烂的图标搞得找不到鼠标指针?不管你正在KDE里干什么,按几下键盘就可以发邮件了。输入:

mailto:plop@ploppypants.com

    按下return,KMail将会自动启动,为你的至理名言做好准备。你甚至不需要填写完整的邮件地址。这对Internet地址也是有效的:尝试输入www.slashdot.org来启动浏览器。

13.同化你的构造

    应用程序:GCC

    如果你运行一个拥有适量RAM的多处理机系统(SMP),你会发现,在写代码时,运行一个parallel make很有好处。与按照默认方式运行make并执行serial builds相比,parallel build 是一种很有效的改善方法。让make在building的时候允许同时存在多个child,用如下的-j转换即可:

make -j4; make -j4 modules
14.节省电池电源

    应用程序:hdparm

    很可能你已经对使用hdparm来调整一个硬件驱动很熟悉了,但是它还能节约你的笔记本的电池寿命,或者通过降低硬盘转速来使生活更宁静。

hdparm -y /dev/hdb
hdparm -Y /dev/hdb
hdparm -S 36 /dev/hdb

    按顺序,这些命令将让硬件转换成Standby(待命)模式,再转换成Sleep(睡眠)模式,并且最终设置Automatic(自动)旋转超时。这个结尾包含一个以5秒为单位的一块块数字变量(例如,值为12就等同于一分钟)。

    顺便说一下,这个降低旋转时间至5秒为单位的习惯真值得拿一个特别的用户友好奖——这个值的设置也许有什么历史原因,但我们不知道。如果你恰好知道为什么,请来信告知我们!

15.无线速度管理

    应用程序:iwconfig

    一个radio发送/接受设备和其他设备间的传输速度,取决于有多少可用信号。在信号减弱的时候如需维持传输,就需要降低radio的传输速度。一般情况下,radio都会自己找到可用信号,并自动选择最快的速度。

    在边缘区域中,信号强度勉强够用,这时候就可能因radio不断调试连接速度而造成不必要的包丢失。如果不能加强天线增益,或移动设备位置来获取更充足的信号,可以尝试强制让card同步到一个较低的速率。这样,radio就会减少调试频率,实际上,还会比使用持续触发的链接传输得快一些。不同的驱动器有不同的链接速度设置方法。在Linux中,可用iwconfig来设置速度:

iwconfig eth0 rate 2M

    这个指令能强制使广播总是同步在2Mbps,即使还存在其他可用速度。你也可以设置一个明确的速度作为上限,允许卡自动按照任何低于这个上限的速度来工作,但是不能高于它。例如,你可以把它作用于上文举例的连接上:

iwconfig eth0 rate 5.5M auto

    如上的指令可以让驱动器将速度上限设为5.5Mbps,只慢不快。想要将card恢复为全自动缩放,只需要制定它自己自动工作。

iwconfig eth0 rate auto

    通常卡在1Mbps时比它们在11Mbps时可以延伸的更远。在这两种速率之间,Orinoco卡有12dB的差别,即降低数据速率可获得的潜在传输距离的四倍。

16.疏通开端口

    应用程序:netstat

    要获取在Linux服务器上处于监听状态的网络服务器的列表,可使用netstat程序:

root@catlin:~# netstat -lnp
Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 

tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN 698/perl
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 217/httpd
tcp 0 0 10.42.3.2:53 0.0.0.0:* LISTEN 220/named
tcp 0 0 10.42.4.6:53 0.0.0.0:* LISTEN 220/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 220/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 200/sshd
udp 0 0 0.0.0.0:32768 0.0.0.0:* 220/named
udp 0 0 10.42.3.2:53 0.0.0.0:* 220/named
udp 0 0 10.42.4.6:53 0.0.0.0:* 220/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 220/named
udp 0 0 0.0.0.0:67 0.0.0.0:* 222/dhcpd
raw 0 0 0.0.0.0:1 0.0.0.0:* 7 222/dhcpd

    如上消息告诉你PID为698的进程是一个绑定在5280端口的Perl进程。如果你不是超级用户,系统将不会显示哪个程序是运行在哪个端口上的。

17.更快的硬件驱动

    应用程序:hdparm

    也许你已经知道hkparm工具可以用于测试硬盘速度和更改一些设置。它还可以用于优化驱动性能,并且开启一些默认关闭的功能。在我们开始之前,敬告您,改变驱动选项可能会造成数据损坏,所以首先请备份你所有的重要数据。如下命令可以用来测试速度:

hdparm -Tt /dev/hda

    你将会看到类似于这样的东西:

/dev/hda:
Timing buffer-cache reads: 128 MB in1.64 seconds =78.05 MB/sec
Timing buffered disk reads:64 MB in 18.56 seconds = 3.45MB/sec

    现在我们可以尝试让它提速。找出你的驱动目前设置使用的是哪个选项,然后传递给hdparm这个硬件的名称:

hdparm /dev/hda

/dev/hda:

multcount=16 (on)

I/O support=0 (default 16-bit)

unmaskirq=0 (off)

using_dma=0 (off)

keepsettings =0 (off)

readonly =0 (off)

readahead=8 (on)

geometry = 40395/16/63, sectors = 40718160, start = 0

    这相当于一个默认设置。多数的Linux发行版本都会选择一个可以运行在多数硬件上的安全选项。为了获得更快的速度,你可能想要激活dma模式,然后当然要调整I/O支持。多数现代计算机支持模式3,这是一个近乎双倍通量的32位转换模式。你也可以尝试:

hdparm -c3 -d1/dev/hda

    然后返回这个速度,查看一下不同。检验你的硬件支持哪些模式,然后可以在hdparm的man手册中学习如何设置它们。

18.在你手中的可用时间

    应用程序:Perl

    对计算来说,浪费的资源就是那些本可以派上更好的用场的资源。不管你还运行了什么别的程序,为什么不尝试运行一个进程,在终端标题栏实时显示当前的平均负载呢?

    将这个存为一个脚本并命名为tl,然后把它存到你的~/bin目录下:

#!/usr/bin/perl -w
 
use strict;
$|++;

my $host=`/bin/hostname`;
chomp $host;

while(1) {

open(LOAD,"/proc/loadavg") || die "Couldn't open /proc/loadavg: $!\n";

my @load=split(/ /,);
close(LOAD);

print "$host: $load[0] $load[1] $load[2] at ", scalar(localtime);

print "07";

sleep 2;
}

    如果你想用用load average和你登陆的机器的当前时间,来替换titlebar名字,运行tl&即可。它会很恰当的在后台运行,即使你运行一个类似Vim的交互式程序。

19.不使用X完成抓取一次屏幕截图

    应用程序:Shell

    确实有很多屏幕捕获的工具,但是他们大部分都是基于X的。这导致了一个问题,当你运行一个X应用程序时,将会干扰这个你想要抓取的应用程序——或许是一个游戏或者甚至是一个Linux安装程序。但如果你使用了超棒的ImageMagick(译注:一个开源的图片处理工具集和开发包)导入命令,你就可以通过控制台来对X模块进行抓取。很简单,打开一个虚拟终端(例如Ctrl+Alt+F1)然后输入如下:

chvt 7; sleep 2; import -display :0.0 -window root sshot1.png; chvt 1;

    chvt命令改变了虚拟终端,而sleep命令给重绘屏幕提供了一个时间。导入命令会在最后的chvt命令把你再次打回到虚拟终端之前,捕获所有的显示并且保存到一个文件中。请确保你把所有的命令都输入在同一行中。

    这是甚至在Linux安装程序上也是有效的,很多安装程序都只留下一个控制台而转去后台运行——一个一流的到处运行的屏幕抓取器只需要加载一些它所需要的库到一个floppy(译注:磁盘)/CD上。

20.远程访问你的程序

    应用程序:X

    如果你想要躺在床上使用你的Linux笔记本从你的Window机器上访问你的应用程序,可以使用SSH来实现。首先你需要在/etc/ssh/sshd_config中激活以下设置:

X11Forwarding yes

    现在我们可以使用如下命令在192.168.0.2上运行GIMP:

ssh -X 192.168.0.2 gimp