难度:高级
应用程序:bash(译注:UNIX或者LINUX的shell)
想象下这个场景-你已经准备好了要和同事在办公室里对战一局快速的Crack Attack(译注:一款免费的OpenGL游戏,类似俄罗斯方块),不料却发现,当你正准备要击败你这个傲慢的下属时,方块却停止了-是什么让你的机器变得这么慢?这肯定是因为其他的用户运用他们娴熟的经验来盗取你宝贵的CPU时间、服务器或者其他的诡异方式,真烦人!
好,让我们列举出系统中所有不是由你运行的程序!
psaux | grep-v`whoami`
或者,更巧妙些的是,为什么不列出最占用时间的前十个程序呢:
psaux--sort=-%cpu | grep-m 11 -v`whoami`
也许最好使用root权限来运行这条指令,因为这样可以过滤出大部分活跃的后台程序。现在你有了这些信息,你可以终止他们的进程,但是更“卑鄙”的是反复地在他们的桌面上运行xeyes(译注:Linux下的一条好玩的命令)!
难度:中等
应用程序:find(译注:Linux下的一条命令)/Perl
如果你有个文件,想在多个位置进行替换,这里有很多方法来实现。调用test[someting]把当前目录里所有文件中的Windows替换成Linux,你可以像这样运行它:
perl -i -pe 's/Windows/Linux/;'test*
要替换当前目录以及下层目录里所有文件中的Windows为Linux,你可以这样运行:
find. -name '*.txt'-print | xargsperl -pi -e's/Windows/Linux/ig'*.txt
或者如果你更需要让它只作用于普通文件上:
find-typef -name '*.txt'-print0 | xargs--null perl -pi -e 's/Windows/Linux
节省了大量的时间并且获得了高水平的大师等级!
难度:简单
应用程序:bash
我们都已经做过这件事了-偶尔使用less或者cat来列出一个文件,或者以浏览二进制文件而结束,这通常包含各种可以轻易弄乱你的终端显示的控制代码、警报声、一些有趣的字符,以及一些奇怪的颜色组合,最后,你的字体将会被一些难以辨认的字符所替代,而你却不知道该怎么办。显然bash仍然继续工作着,但是你就是不能明白到底发生了什么!发送一个初始化命令给这个终端:
reset
然后一切就再次恢复正常了。
难度:简单
应用程序:Backups
如果你想要从一台电脑上备份一个目录,但你仅仅想要复制改变的文件到它的备份而不是复制所有的东西到各自的备份,你可以使用工具rsync来实现它。你需要在这个远程的源备份计算机上有一个账户。下面是这条命令:
rsync-vare [email protected]:/home/jono/importantfiles/* /home/jono/backup/
这样我们就备份了192.168.0.2地址上/home/jono/importantfiles/目录下的所有文件到当前机器上的/home/jono/backup目录下。
难度:简单
应用程序:Shell
计算机中一个常见的问题是,你可能想删一部分大的文件(类似音频或视频片段)。如下你可以找到当前目录中最大的那个文件:
ls-lSrh
“r”的作用是将大的文件列在后面,而“h”则是给出易于人们阅读的输出(MB或者诸如此类)。你也可以搜寻最大的MP3/MPEG文件:
ls-lSrh *.mp*
你也可以通过下面这条命令搜寻最大的目录:
du-kx | egrep-v"\./.+/"| sort-n
难度:简单
应用程序:GCC
如果你运行一个拥有适量RAM的多处理机系统(SMP),你会发现,在写代码时,运行一个parallel make很有好处。与按照默认方式运行make并执行serial builds相比,parallel build 是一种很有效的改善方法。让make在building的时候允许同时存在多个child,用如下的-j转换即可:
make-j4; make-j4 modules
难度:中等
应用程序:hdparm
很可能你已经对使用hdparm来调整一个硬件驱动很熟悉了,但是它还能节约你的笔记本的电池寿命,或者通过降低硬盘转速来使生活更宁静。
hdparm -y /dev/hdb hdparm -Y /dev/hdb hdparm -S 36 /dev/hdb
按顺序,这些命令将让硬件转换成Standby(待命)模式,再转换成Sleep(睡眠)模式,并且最终设置Automatic(自动)旋转超时。这个结尾包含一个以5秒为单位的一块块数字变量(例如,值为12就等同于一分钟)。
顺便说一下,这个降低旋转时间至5秒为单位的习惯真值得拿一个特别的用户友好奖――这个值的设置也许有什么历史原因,但我们不知道。如果你恰好知道为什么,请来信告知我们!
难度:中等
应用程序:netstat
要获取在Linux服务器上处于监听状态的网络服务器的列表,可使用netstat程序:
root@catlin:~# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Programname 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进程。如果你不是超级用户,系统将不会显示哪个程序是运行在哪个端口上的。
难度:简单
应用程序:bash
你应该很熟悉这种情况-尝试去卸载一个驱动,但是系统却告诉你它处于忙碌状态。但是什么程序在占用呢?一个短小的单行代码将告诉你:
lsof+D /mnt/windows
这将返回命令和进程ID以及任何正在访问/mnt/windows目录的任务。接下来你就可以定位它们,或者使用kill命令来终结它们。
难度:简单
应用程序:Various
你可能熟悉这个问题,今天早些时候你创建了一个文本文档,而现在立刻就需要它。然而,你想不起来你给它起了个什么可笑的名字,作为一个熟练的geek,你的家文件夹被836个不同的文件填满了。那你要如何找到它呢?哈哈,这里有很多方法,但是这个小技巧告诉你管道和结合使用两个强力的shell命令是多么有效:
ls-al --time-style=+%D | grep`date+%D`
ls命令的参数使得这个日期戳以一种特殊的方式呈现。这个狡猾的位就是这样传递给grep来输出的。grep的参数是它自己的命令(因为是倒引号所以执行),用来将当前的日期替代成匹配的字符。你可以轻易的修改它来搜索其他特别的日期、时间、文件大小或者任何东西。结合它与HACK 26是非常节省输入的。
难度:简单
应用程序:Inkscape
你可以通过shell运行Inkscape,然后直接通过一个URL来立刻编辑一张图片。只用输入:
inkscape http://www.somehost.com/graphic.svg
记得要另存为一下!
难度:中等
应用程序:好多
通常非常长的文件是很难用文本编辑器来进行操作的。如果你不时地要做这件事,可能你会发现用某些趁手的命令行工具会更快一些,就像下面这个例子一样。
从文件file1中打印第一列和第三列到文件file2中,我们可以使用awk:
awk
'{print $1, $3}'
file1 > file2
只输出file1中第八列到第十五列中的字符,我们可以使用cut:
cut
-c 8-15 file1 > file2
要使用单词word2来替换文件file1中的单词word1,我们可以使用sed命令:
sed
"s/word1/word2/g"
file1 > file2
通常这是一个比打开文本编辑器更快得到结果的方式。
难度:高级
应用程序:Shell
妨碍引导装入,双启动和很多其他下热闹的程序会留给你一个混乱的引导扇区。为什么不在你可以备份的时候给它创建一个备份呢:
引导装载器混乱、双启动及许多其他的可怕的进程可能造成乱七八糟的启动区。
dd
if
=
/dev/hda
of=bootsector.img bs=512 count=1
很显然,你应该改变这个装置来显示你的boot驱动(有可能是SCSI的sda)。还要非常小心,别把事情搞砸――你可能会轻而易举地毁掉你的驱动!恢复时使用:
dd
if
=bootsector.img of=
/dev/hda
难度:中等
应用程序:nmap
例如,简单的TCP连接扫描可以在不需要root特权时进行:
一般来说,当人们想到nmap时,都假设nmap是用来进行一些违法的网络侦查,并为恶意攻击做准备的。但是作为一个强大的工具,nmap可以成为一个白帽子,做一些比入侵网络有意义得多的事。
nmap rigel
nmap也可以通过指定范围或者CIDR符号来扫描IP地址:
nmap 192.168.0.1-254
nmap 192.168.0.0
/24
nmap如果以root身份运行,可以提供更多的信息。当它以root身份运行时,通过使用-O标志,它可以使用特殊的数据包来决定远程机器的操作系统。此外,你可以通过使用-sS标志来实现半开的TCP扫描。nmap将会发送一个SYN数据包到远程的主机,然后等待接收它回应的ACK。如果nmap收到一个ACK,它就知道这个端口是开放的。
这不同于普通的TCP三次握手,客户端会发送一个SYN包,如果它收到了初始的服务器ACK,客户端随后会将一个ACK送回服务器。攻击者们时常使用这个选项来避免使他们的扫描登陆到远程机器上。
nmap -sS -O rigel
Starting nmap V. 3.00 ( www.insecure.org
/nmap/
)
Interesting ports on rigel.nnc (192.168.0.61):
(The 1578 ports scanned but not shown below are
in
state: filtered)
Port State Service
7
/tcpopen
echo
9
/tcpopen
discard
13
/tcp
open
daytime
19
/tcp
open
chargen
21
/tcp
open
ftp
22
/tcp
open
ssh
23
/tcp
open
telnet
25
/tcp
open
smtp
37
/tcp
open
time
79
/tcp
open
finger
111
/tcpopen
sunrpc
512
/tcpopen
exec
513
/tcpopen
login
514
/tcpopen
shell
587
/tcpopen
submission
7100
/tcp
open
font-service
32771
/tcpopen
sometimes-rpc5
32772
/tcpopen
sometimes-rpc7
32773
/tcpopen
sometimes-rpc9
32774
/tcpopen
sometimes-rpc11
32777
/tcpopen
sometimes-rpc17
Remote operating system guess: Solaris 9 Beta through Release on SPARC
Uptime 44.051 days (since Sat Nov1 16:41:50 2003)
Nmap run completed -- 1 IP address (1 host up) scanned
in
166 seconds
伴随着OS探测的激活,nmap可以确认OS是Solaris,但是现在你还可以知道,它可能是运行在SPARC处理器上的Version 9。
一个强大的功能是可以被用于和你的nmap的XML输出性能保持联系。使用-oX命令行转换而激活,就像这样:
nmap -sS -O -oX scandata.xml rigel
这在扫描IP地址范围或者你全部的网络时是特别有用的,你可以将所有通过扫描收集起来的信息放到一个XML文件里,并经过解析后插入到数据库中。这里是一个开放的端口的XML入口:
nmap是一个强大的工具。通过使用它的XML输出性能,一点点的脚本,还有一个数据库,你可以创造一个更强大的可以在你的网络上监测未授权的服务和机器的工具。
难度:简单
应用程序:bash
在Windows中有很多程序会做一些清除网络缓存,移除临时文件事情。Linux上如果也可以这样是不是很cool呢?使用KDE,你甚至不需要安装任何新的软件,startkde脚本将会自动的执行你放在特殊地方的脚本。
首先,你需要在你的.kde目录下创建一个命令shutdown的目录:
mkdir
/home/username/
.kde
/shutdown
现在创建一个脚本,用来在关机时执行一些你想要的事情。这里是一个例子:
#!/bin/bash
#clear up temp folder
rm
-rf ~
/tmp/
*
#clear out caches
rm
-rf ~/.ee
/minis/
*
rm
-rf ~/.kde
/share/cache/http/
*
# delete konqueror form completions
rm
~/.kde
/share/apps/khtml/formcompletions
现在确保你设置了正确的权限:
chmod
ug+x ~/.kde
/shutdown/cleanup
.sh
(或者随便你叫它什么)。可以清除敏感文件,也可以通过将脚本放在你的默认KDE文件夹中有一个名为shutdown的子文件夹里,给所有用户一个全局的关机脚本。找出你的默认KDE目录在哪里,试一下:
kde-config --path exe
难度:简单
应用程序:Debian
如果你正在运行Debian并且找不到你正在运行的包,为你当前正在安装的包做一个备份是非常有用的。你可以运行如下得到一个清单:
dpkg --get-selections > debianlist.txt
这将把全部的清单放到debianlist.txt中,这样你就可以通过如下代码在不同的计算机上安装相同的包。
dpkg --
set
-selections < debianlist.txt
当你复制你的系统到一个新的计算机上时,你要记住你还需要从/etc中复制配置文件。
要实际安装这些选项,使用如下指令:
apt-get -u dselect-upgrade