Linux的隐藏功能


Answers:


52

为了使球前进,我发现屏幕必不可少:

调用screen时,它将创建一个带有外壳的单个窗口(或指定的命令),然后不碍事,以便您可以正常使用该程序。然后,您可以随时创建带有其他程序(包括更多外壳程序)的新(全屏)窗口,杀死当前窗口,查看活动窗口的列表,打开和关闭输出日志记录,在Windows,查看回滚历史记录,在Windows之间切换等。所有Windows都完全独立于彼此运行它们的程序。当程序的窗口当前不可见时,甚至整个屏幕会话都与用户终端分离时,程序仍将继续运行。


有没有人对ubuntu 9.04推出的屏幕配置文件有什么话要说?我看了他们一会儿,但没有给他们足够的时间来说出它们是否真正有用或看起来不错
xkcd150

12
我的天啊!屏幕再次出现?
setatakahashi

@ xkcd150,它们非常相似,但是最大的胜利是状态栏。它显示了您所有的窗口以及有关该计算机的大量内容。
staticsan 2010年

而且,如果您想要一个好的屏幕版本,请使用tmux;)
好人2012年

45

也许我不是每天都使用这些,但是我经常使用它们:

  • strace检查该进程加载了哪些文件。
  • htop更好的上衣。
  • 地铁 ping + traceroute结合
  • lynx / 链接 / w3m如果您需要控制台浏览
  • ettercap出色的 网络嗅探器(我更喜欢Wireshark)
  • 脚本 bash的 每一个* nix的管理员应该知道这一点。
  • 一种编程语言。对于更复杂的事情,请远离bash脚本,并使用python / perl / ruby​​ / tcl / ...之类的东西(我使用Lisp)
  • 午夜指挥官可能是喜欢诺顿指挥官的人的最佳选择。
  • irssi您永远不知道何时只想在IRC上提问。
  • wget / curl 从命令行下载内容。
  • SCP通过SSH复制内容
  • lftp / ncftp 良好(可编写脚本)的控制台FTP客户端。
  • iotop检查什么给您的磁盘造成压力
  • nmap良好端口扫描程序

我想补充的顶上太
PIL

这两个TLDP bash文件都非常糟糕。
适配器

33

我惊讶地发现您可以使用“ -X”参数通过SSH运行远程GUI应用程序。例如:

# on my machine
$ ssh -X linuxserver
# on remote machine
$ gedit /etc/my.cnf &

gedit窗口出现在我的本地计算机上,编辑服务器上的“ my.cnf”文件。

我假设这仅在您的客户端计算机具有X环境的情况下有效-换句话说,在Windows上不行。但这在我的Mac上效果很好!


9
使用xming sourceforge.net/projects/xming也可以在Windows上运行它!
xkcd150

3
SSH转发会进行加密,这会使一切变慢。如果您使用的是安全局域网,则可以将程序从一个Linux桌面发送到另一台Linux计算机X会话。非常便利。我曾经通过mplayer来运行电影,就像在我的主桌面上那样,它被插入休息室一端的立体声扬声器中。然后,mplayer音频将离开立体声,但图像将通过休息室的另一端(通过以太网)到达我的笔记本电脑,该休息室已插入数据投影仪。家庭电影很棒。
加雷斯2009年

5
不必每次都添加-X,而是可以使用与内部主机和地址空间'Host .domain.org 192.168。匹配的主机行来更新ssh_config 。*”并启用选项“ ForwardX11 yes”
Zoredache

我已经习惯了-Y,但是从没学会区别。
Notmyfault

-Y是受信任的X11转发。它比-X(简单的X11转发)更安全。顺便说一句,许多默认的sshd设置现在不允许-X,仅允许-Y。如果使用-X,则遇到奇怪的错误,应用程序关闭并显示“ MIT MAGIC COOKIE”错误,然后使用-Y。结论:不使用-X,仅使用-Y
wazoox

33

lsof经常被忽略,它是一个非常有用的工具。通过lsof,您可以查看系统上每个打开的文件的列表,正在使用的文件的人/对象等等。

例如:

root@tower:~ # umount /mnt/hardy
umount: /mnt/hardy: device is busy
umount: /mnt/hardy: device is busy
root@tower:~ # lsof | grep /mnt/hardy
bash       5966       root  cwd       DIR      253,2     1024          2 /mnt/hardy
root@tower:~ #

现在,我看到我已经在另一个终端中登录了shell,并且/ mnt / hardy是我当前的工作目录。因此,我可以杀死该外壳,或转到另一个终端并退出该目录,以便将其卸载。

这确实是一个简单的例子,它对于清理偶尔的“机器人”感染也非常方便。选项是广泛的,有关更多信息,请参见man lsof。


2
如果您只对一个文件或一个挂载点感兴趣,则融合器是另一个不错的技巧。
布多伦

1
肯定是隐藏的。我多年来一直在寻找此功能。(虽然我是
菜鸟

lsof确实很棒。结合UNIX(几乎所有内容)都作为文件的想法,它可以完成令人惊奇的事情。借助lsof的某些选项,一开始看起来很多事情似乎是不可能的或很难做到的,但现在可以用oneliner解决。
ptman 2010年


26

系统停止后,网络堆栈可以保持运行状态。我不知道这是2.6.x系列内核中的最新版本,但是在较旧的版本上,您可以配置防火墙/路由,然后在不关机的情况下暂停系统,仅使网络堆栈处于运行状态。这将使您能够制造出一种廉价的(尽管是静态的)防火墙,“无法被黑客入侵”-因为没有什么可以黑客入侵的,因为没有程序或服务,只是内核的网络堆栈部分来回传递数据包。 ..


哇。真酷!+1我肯定会在有空余时间的情况下在2.6内核上进行尝试。
wzzrd

太棒了,但是它如何不可破解?内核还不是必须要运行吗?还是最小内核?
cdeszaq,2009年

7
“核心”?您所说的“内核”是什么?进入此模式时,唯一正在运行的代码是/ network stack /。没有任务调度,没有API,代码,服务,用户空间,没有任何东西,zip,nada ...只是通过以太网回荡的数据包的微弱声音...将其视为生活中具有两种功能的更多嵌入式设备-接受,然后发送数据包。我想您可以在某种意义上“破解”您可以尝试偷偷通过的数据包,但是堆栈本身没有什么可以直接攻击的。
艾利·佩恩

24

我喜欢“查找”-一种比粗糙的“查找。-name xxxx -print”查找文件容易得多的方法。注意,您必须将updatedb命令与最新的文件索引一起使用;有关详细信息,请参见手册页。


4
幸运的是,许多Linux发行版在cron.daily :-)中都包含了updatedb。
马特·索尔尼特

1
它的速度也比查找速度快得多。
cgp

应当指出,有些人将定位视为安全风险。话虽如此,我一直在使用它:-)
baudtack

最新版本的locate具有-i开关,用于忽略大小写,非常方便。
niXar

至于安全性,有一些安全的定位版本,可让您“查找”登录用户实际看到的那些文件。
尔根·艾哈德

19

我发现“ ngrep”对于调试远程服务器上的网络代码确实很有用,而不必在周围拖拉tcpdump文件:

ngrep -d any -W byline port 80

例如,将向您显示实时HTTP请求和响应。

我发现经常有用的另一件事是切换到strace的“ -e”:

strace -p <pid> -e trace=open

将显示给定pid的所有open()系统调用,并且

strace -p <pid> -e trace=\!rt_sigprocmask

将从输出中排除所有对rt_sigprocmaskmask()的调用(对于调试RoR代码很有用,当构建为使用pthreads时,这些调用似乎很多)。


现在我真的开始喜欢Linux。:)
然后

17
apropos

说明每个手册页都有简短的说明。apropos在描述中搜索关键字的实例。

gyaresu@debian:~/bin$ apropos ettercap
etter.conf (5)       - Ettercap configuration file
ettercap (8)         - (unknown subject)
ettercap_curses (8)  - (unknown subject)
ettercap_plugins (8) - (unknown subject)

我总是man -k改用,但拼写受损。
mctylr 2010年

15

幸运的是,我只需要几次,但是Magic SysRq键仍然是我一直以来最喜欢的隐藏功能之一。

Alt + SysRq + RSEIUB


1
+1 Magic SysRQ是金色的。记住“举起大象太无聊了”作为提示使用按键的提示,尽管顺序不是一成不变的。这就是为什么在上面使用RSEIUB的原因:它在发出“终止”和“杀死”命令之前将数据同步到磁盘,而不是相反。正确的命令值得商bat。
wzzrd

另一个记忆辅助工具:BUSIER(反拼)。
梅,

13
NAME
 units -- conversion program

DESCRIPTION
 The units program converts quantities expressed in various scales to their 
equivalents in other scales.  The units program can only handle multiplicative
scale changes.  It cannot convert Celsius to Fahrenheit, for example.
It works interactively by prompting the user for input:

     You have: meters
     You want: feet
             * 3.2808399
             / 0.3048

     You have: cm^3
     You want: gallons
             * 0.00026417205
             / 3785.4118

     You have: meters/s
     You want: furlongs/fortnight
             * 6012.8848
             / 0.00016630952

     You have: 1|2 inch
     You want: cm
             * 1.27
             / 0.78740157

12

它并不是真正的隐藏,但是对于那些没有经验的人可能是如此,但是我真的很喜欢能够给出列表并让bash像下面这样扩展它们:

cp arq{,.bak}

和打字一样

cp arq arq.bak

我还使用了历史记录快捷方式(我认为这不是正确的术语,但是...)

!! 

重复上一条命令,或者

^foo^bar 

在最后一个命令中用bar替换foo


12

ssh-copy-id用于传输ssh密钥。过去的方法是在ssh上分配密钥,而更老的方法是先捕获密钥然后再分配密钥。如果您使用的是非标准的ssh端口,那么这将为您解决问题。

ssh-copy-id -i / path / to / key'-p非标准端口主机名'

除此以外..

ssh-copy-id -i / path / to / key主机名


11

虚拟控制台。大多数人都知道如何使用(Ctrl-)Alt-F1进入第一个控制台,依此类推,但是如果您拥有超过12个,该怎么办?您可以使用Alt-Left和Alt-Right来循环浏览其余部分。:-D


哇,伙计,那时候,只需使用屏幕即可。呵呵:)我在我的.screenrc中放了它,在底部显示了一个任务栏,让我知道屏幕已打开
Roy Rico 2010年

以及第12个控制台正在运行桌面环境(例如gnome)的ID是什么?
Behrooz

11

我喜欢debian-goodies软件包:

说明:用于Debian系统的小型工具箱式实用程序
 这些程序旨在与标准Shell工具集成,
 扩展它们以在Debian打包系统上运行。
 。
  dgrep-在指定软件包中的所有文件中搜索正则表达式
  dglob-生成与模式匹配的软件包名称列表
 。
 这些也包括在内,因为它们是有用的,并不合理
 自己的软件包:
 。
  debget-在APT数据库中获取软件包的.deb
  dpigs-显示哪些已安装的软件包占用最多的空间
  debman-从二进制.deb轻松查看手册页,而无需提取
  debmany-选择已安装或已卸载软件包的联机帮助页
  checkrestart-帮助查找和重新启动使用旧版本的进程
                 升级文件的版本(例如库)
  popbugs-根据以下内容显示自定义的关键发布漏洞列表:
                 您使用的软件包(使用流行度竞赛数据)

还有moreutils,这基本上是车轮上很棒的管道工具:

说明:其他unix实用程序
 这是一个越来越多的unix工具集合,没人认为
 写三十年前。
 。
 到目前为止,它包括以下实用程序:
  -海绵:吸收标准输入并写入文件
  -ifdata:获取网络接口信息而无需解析ifconfig输出
  -ifne:如果标准输入不为空,请运行程序
  -vidir:在文本编辑器中编辑目录
  -vipe:将文本编辑器插入管道
  -ts:时间戳标准输入
  -合并:使用布尔运算将行合并到两个文件中
  -小便:三通标准输入到管道
  -zrun:自动解压缩命令的参数
  -mispipe:用管道输送两个命令,返回第一个命令的退出状态
  -isutf8:检查文件或标准输入是否为utf-8
  -lckdo:执行带有锁的程序
主页:http://kitenet.net/~joey/code/moreutils/

8

我每天在工作中使用的一个很棒的“功能”:能够在端口443上进行SSH侦听,因此我可以创建一个绕过我的工作防火墙的隧道,从而允许我运行通过SSH隧道连接到面向Internet的Linux服务器的本地SOCKS代理。 。

我可以完全忽略我的公司防火墙。


3
想到那些相信您可以“锁定”网络的人,我总是很不高兴。如果只留一个端口供流量通过,那您就很麻烦。
2009年

如果他们看到3GB数据从您的计算机通过端口443流怎么办?
Wadih M.

将开瓶器添加到nix中,甚至https代理也不成问题!!
Niall Donegan

@ Wadih.M:方法是这样:ssh到443,使用netcat将udp数据包从远程计算机发送回另一个端口。从您所在的位置将另一个udp数据包发送到远程计算机。恭喜。端口被打孔。
Behrooz


8

与Windows相比,Linux的一项重要功能就是设计上几乎没有隐藏功能。希望是否有任何未记录的功能足够重要,足以使社区了解其工作。


7

以下是我定期使用的一些方法:

  • sar -显示系统活动
  • vmstat -虚拟内存统计
  • iostat -io统计
  • pkill-像,pgrep但可以杀死返回的进程ID
  • xargs -I<string> -允许用管道数据替换字符串
  • at -安排任务
  • tkdiff-图形diff实用程序

这些可能不是“隐藏”的,但是我发现它们非常有用:

  • df -hk -以可读格式显示磁盘使用情况
  • ls -ltr -列出按日期排序的文件
  • while :; do...done-(bash)替换(watch如果不可用)
  • perl -e- Perl在命令行上运行一个代码段
  • free -kt -显示内存信息(千字节/总)

我认为写起来while true; do ...while [ 1 ]; do ...
ptman 2010年

6

本文开始,了解一些很棒的Linux技巧。我最喜欢的是pstree,它以树格式显示您的进程,因此您可以看到哪个进程产生了。

curl几乎可以用wget击败wget。

zgrep和zless非常适合搜索压缩的日志文件,因此您不必通过gunzip传送它们,也无需在/ var / log中留下未压缩的内容。


概要,对于懒惰的;-) 1.pgrep(就像ps遇见grep)2.pstree(以树格式列出进程)3.bc(任意精度计算器语言)4.split(将大文件分割成块)5 .nl(数字行)6.mkfifo(使两个命令通过命名管道进行通信)7.ldd(打印共享库依赖项)8.col(分批换行)9.xmlwf(检查XML文档是否格式正确) 10.lsof(列出打开的文件)
用户名

(GNU)ps具有用于打印树的标志。除了让pstree记忆起来更容易之外,还有其他事情吗?
ptman 2010年

为什么curl比wget更好?并且:zgrep和zless仅仅是开始;还有zcat和zmore。

6

ESC + .

将上一行的最后一个参数“粘贴”到当前提示中

例如

ls -l /home/someuser/somedir/somefile

其次是

rm ESC + .

转换为

rm /home/someuser/somedir/somefile

棒极了。不知道
Andrew Taylor

5

我看到yes命令非常好:

yes | do_you_agree

从手册页:

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

5

概念是Linux中的所有内容都是文件

所有配置都在文本文件中,Linux中的所有内容都视为文件。这是一种非常简单的方法,可以很轻松地更改Linux中的内容。在Linux中,甚至您的文件系统本身也可以视为文件。


如果您喜欢这个基本的Unix概念,那么您将喜欢Plan9 OS。
wazoox

4

它是开源的。如果您不愿意看,没有什么是“隐藏的”。


不幸的是,开源往往会使您很难看到“隐藏”的东西。
Spoike

5
我反过来说-如果某个功能隐藏在封闭源应用程序中,则取决于开发商店来公开它。在开源应用程序中,该功能可供所有人查看。此外,积极发展的人数通常要多得多(更多的人知道和谈论“隐藏”功能)。最后,开源开发主要面向社区,因此人们通常会相互讲述隐藏的功能。
汤姆·赖特

我根本不遵循@Spoike的推理。是的,还有更多要看的东西,但是您看到的就是得到的东西。
Paul Tomblin,2009年

我认为您在争论语义。我们如何重命名为“ Linux的混淆功能”呢?
Spoulson,2009年

我会部分支持Spoike的观点,即由于普遍缺乏最新的文档,所以事情可能被“隐藏” 。并不是说此声明对所有项目都适用,但是很多项目中都缺少完整的文档(我并不意味着只是如何使用用户指南)。KDE的管理功能,特别是在管理rc文件中的设置以及设置不可变的特定字段的实际效果方面,就是一个很好的例子。在许多情况下,我发现自己正在寻找源代码,以了解事物的处理方式。
杰森·莫克

4

隐藏的功能是没有隐藏的功能。该系统提供了您完全可以访问的强大功能。您必须了解其中的每一项内容和每种可用的工具,才能掌握触手可及的功能。

您应该首先了解/ bin,/ sbin,/ usr / bin,/ usr / sbin中的每个命令以及/ proc中的每个虚拟文件。阅读手册页,其他文档和必要的资料。

如果您不习惯阅读手册页或阅读源代码,那是您的隐藏功能。



3
  • od-以八进制和其他格式转储文件。例如,对检查文件开头是否存在BOM废品很有用
  • file -给定文件的文件类型是什么?
  • lshwlsusblspci-硬件列表
  • tracepath -我们在这里处理MTU问题吗?
  • netwox 包含200多种与网络相关的工具
  • ip -用于网络配置/信息
  • sysctl -文件系统/网络/内核信息
  • ebtables -桥接iptables
  • vconfig -VLAN配置
  • brctl -网桥配置
  • socat- netcat类固醇
  • ipgrab- tcpdump类似的实用程序,可打印详细的标题信息
  • dig -DNS服务器现在怎么了?


3

今天刚刚找到这个:

dmidecode
根据SMBIOS / DMI标准,报告有关系统BIOS中所描述的系统硬件的信息。此信息通常包括系统制造商,型号名称,序列号,BIOS版本,资产标签以及许多其他细节,这些细节取决于制造商的关注程度和可靠性。这通常包括CPU插槽,扩展插槽(例如AGP,PCI,ISA)和内存模块插槽的使用状态,以及I / O端口列表(例如串行,并行,USB)。

它无疑使在colo设施中回答关于somerandomserver27的问题变得容易得多!


您也会喜欢lspci,lsscsi,lsusb :)
wazoox

是的,我定期使用ls *命令-我只是不知道有任何事情可以拉BIOS级别的信息:)
gharper 2010年

3

并不是真正的Linux,更像是Bash:进程替换,

diff some_local_file <(ssh somehost "cat some_remote_file")

这会将通过SSH检索的本地文件和远程文件在一行中进行比较。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.