[极客]每个极客都应该知道的Linux技巧 (1)

简介:

1:检查不是由你运行的程序

难度:高级

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

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

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

1
psaux |  grep - v ` whoami `

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

1
psaux-- sort =-%cpu |  grep -m 11 - v ` whoami `

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

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

难度:中等

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

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

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

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

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

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

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

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

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

难度:简单

应用程序:bash

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

1
reset

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

4:简单地备份你的网站

难度:简单

应用程序:Backups

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

1
rsync -vare sshjono@192.168.0.2: /home/jono/importantfiles/ /home/jono/backup/

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

5:找到最大的文件

难度:简单

应用程序:Shell

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

1
ls -lSrh

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

1
ls -lSrh *.mp*

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

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

6:同化你的构造

难度:简单

应用程序:GCC

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

1
make -j4;  make -j4 modules

7:节省电池电源

难度:中等

应用程序:hdparm

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

1
2
3
hdparm -y  /dev/hdb
hdparm -Y  /dev/hdb
hdparm -S 36  /dev/hdb

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

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

8:疏通开端口

难度:中等

应用程序:netstat

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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进程。如果你不是超级用户,系统将不会显示哪个程序是运行在哪个端口上的。


9:卸载忙碌状态的驱动

难度:简单

应用程序:bash

你应该很熟悉这种情况-尝试去卸载一个驱动,但是系统却告诉你它处于忙碌状态。但是什么程序在占用呢?一个短小的单行代码将告诉你:

1
lsof +D  /mnt/windows

这将返回命令和进程ID以及任何正在访问/mnt/windows目录的任务。接下来你就可以定位它们,或者使用kill命令来终结它们。

10:只列出今天的文件

难度:简单

应用程序:Various

你可能熟悉这个问题,今天早些时候你创建了一个文本文档,而现在立刻就需要它。然而,你想不起来你给它起了个什么可笑的名字,作为一个熟练的geek,你的家文件夹被836个不同的文件填满了。那你要如何找到它呢?哈哈,这里有很多方法,但是这个小技巧告诉你管道和结合使用两个强力的shell命令是多么有效:

1
ls -al -- time -style=+%D |  grep ` date +%D`

ls命令的参数使得这个日期戳以一种特殊的方式呈现。这个狡猾的位就是这样传递给grep来输出的。grep的参数是它自己的命令(因为是倒引号所以执行),用来将当前的日期替代成匹配的字符。你可以轻易的修改它来搜索其他特别的日期、时间、文件大小或者任何东西。结合它与HACK 26是非常节省输入的。

11:直接打开一个SVG

难度:简单

应用程序:Inkscape

你可以通过shell运行Inkscape,然后直接通过一个URL来立刻编辑一张图片。只用输入:

1
inkscape http: //www .somehost.com /graphic .svg

记得要另存为一下!

12:不用编辑器来进行编辑

难度:中等

应用程序:好多

通常非常长的文件是很难用文本编辑器来进行操作的。如果你不时地要做这件事,可能你会发现用某些趁手的命令行工具会更快一些,就像下面这个例子一样。

从文件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

通常这是一个比打开文本编辑器更快得到结果的方式。

13:备份你的bootsector(引导扇区)

难度:高级

应用程序:Shell

妨碍引导装入,双启动和很多其他下热闹的程序会留给你一个混乱的引导扇区。为什么不在你可以备份的时候给它创建一个备份呢:

引导装载器混乱、双启动及许多其他的可怕的进程可能造成乱七八糟的启动区。

dd if = /dev/hda of=bootsector.img bs=512 count=1

很显然,你应该改变这个装置来显示你的boot驱动(有可能是SCSI的sda)。还要非常小心,别把事情搞砸——你可能会轻而易举地毁掉你的驱动!恢复时使用:

ddif=bootsector.img of=/dev/hda


14:资源扫描

难度:中等

应用程序: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输出性能,一点点的脚本,还有一个数据库,你可以创造一个更强大的可以在你的网络上监测未授权的服务和机器的工具。

15:当登出的时候清理KDE

难度:简单

应用程序: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


16:备份一个Debian包清单

难度:简单

应用程序:Debian

如果你正在运行Debian并且找不到你正在运行的包,为你当前正在安装的包做一个备份是非常有用的。你可以运行如下得到一个清单:

dpkg --get-selections > debianlist.txt

这将把全部的清单放到debianlist.txt中,这样你就可以通过如下代码在不同的计算机上安装相同的包。

dpkg -- set -selections < debianlist.txt

当你复制你的系统到一个新的计算机上时,你要记住你还需要从/etc中复制配置文件。

要实际安装这些选项,使用如下指令:

apt-get -u dselect-upgrade                                          本文转自lilin9105 51CTO博客,原文链接:http://blog.51cto.com/7071976/1379782,如需转载请自行联系原作者
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Linux 区块链 vr&ar
Linux:当极客灵魂遇上网络热梗,一场跨界“笑”果非凡的盛宴!🎉
在这个笑点遍地的网络时代,技术界的“老炮儿”Linux与时俱进,化身技术与娱乐的跨界“段子手”。从“万物皆可盘”到“万物皆可跑”,Linux让智能设备飞速运转;面对“内卷”,它倡导自由进化而非恶性竞争;教“打工人”成为自己的Boss;在“元宇宙”中,Linux打造了一个等待探索的“平行宇宙”。Linux不仅是技术基石,更是一位幽默风趣的伙伴。
241 6
|
缓存 分布式计算 Ubuntu
Linux性能优化实战-极客课程笔记(3)
Linux性能优化实战-极客课程笔记(3)
409 0
|
缓存 监控 网络协议
Linux性能优化实战-极客课程笔记(2)
Linux性能优化实战-极客课程笔记(2)
467 0
|
存储 监控 NoSQL
Linux性能优化实战-极客课程笔记(1)
Linux性能优化实战-极客课程笔记(1)
647 0
|
运维 Kubernetes Unix
学习Linux如何能事半功倍,明确这7点技巧!一位Linux大牛的心得分享
如今有很多关于Linux的书籍,博客。大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多Linux初学者望而却步,未入其门就路过了。
|
网络协议 应用服务中间件 Linux
|
Linux 应用服务中间件 nginx
|
Web App开发 Shell Linux
【极客blog图文讲解】Jekyll教程(针对mac linux)
(转载请注明出处:http://blog.csdn.net/buptgshengod)        上一章我们已经配置了Jekyll的环境。这一节讲解一下具体的使用。 第一步 首先我们要启动ruby语言。        打开shell,在里面输入下列命令 rvm ruby-2.0.0 第二步 定义一个文件夹然后cd到那个目录下 第三步 可以使用命令如下建立一个模板blog
1014 0
|
3月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
二、Linux文本处理与文件操作核心命令