遵循PowerShell的隐藏特性和堆栈溢出的其他特性,在工作中您发现了哪些Linux命令或命令组合?
另见:
MySQL的隐藏特性
PowerShell的隐藏function
Oracle数据库的隐藏function
Windows 2008的隐藏function
Solaris / OpenSolaris的隐藏function
SQL Server的隐藏function
IIS的隐藏function(6.0 / 7.0)
为了让球走,我觉得屏幕是必不可less的:
当屏幕被调用时,它会创build一个带有shell的单个窗口(或者指定的命令),然后自动退出,这样就可以像平常一样使用该程序。 然后,在任何时候,你可以创build新的(全屏)窗口与其他程序(包括更多的炮弹),杀死当前窗口,查看活动窗口的列表,打开和closures输出日志,复制窗口,查看回滚历史logging,在窗口之间切换等等。所有窗口完全相互独立地运行它们的程序。 当他们的窗口当前不可见,甚至当整个屏幕会话从用户terminal分离时,程序继续运行。
也许我不是每天都用这些东西,但我经常使用它们:
我惊讶地发现,你可以使用“-X”参数通过SSH运行远程GUI应用程序。 例如:
# on my machine $ ssh -X linuxserver # on remote machine $ gedit /etc/my.cnf &
gedit窗口出现在我的本地机器上,在服务器上编辑“my.cnf”文件。
我假设这只适用于您的客户机有X环境 – 换句话说,不在Windows上。 但是,它在我的Mac上很好用!
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:~ #
现在我看到我在另一个terminal上login了一个shell,而/ mnt / hardy是我当前的工作目录。 所以我可以杀死那个shell,或者去另一个terminal,离开那个目录,这样它就可以被卸载了。
这真是一个微不足道的例子,它非常方便地清理偶尔的“僵尸”感染。 选项很广泛,请参阅man lsof了解更多。
要切换到您所在的最后一个目录:
cd -
networking堆栈可以在系统暂停后保持运行。 我不知道2.6.x系列内核是否是最新版本,但是在旧版本中,可以configuration防火墙/路由,然后停止系统而不closures ,只保留networking堆栈运行。 这将允许你制作一个“不能被黑客入侵”的廉价(尽pipe是静态的)防火墙 – 因为没有任何东西可以破解,因为没有程序或服务,只是内核的networking堆栈部分来回传递数据包。 ..
我喜欢“定位” – 比粗糙的“find。-name xxxx -print”更容易find文件。 请注意,您必须使用updatedb命令以及您的文件索引; 有关详细信息,请参阅手册页。
我发现“ngrep”对debugging远程服务器上的networking代码非常有用,而不必在周围放置tcpdump文件:
ngrep -d any -W byline port 80
例如,会显示你的HTTP请求和响应。
我经常发现有用的另一件事是“-e”切换到strace:
strace -p <pid> -e trace=open
将显示给定的PID和所有open()系统调用
strace -p <pid> -e trace=\!rt_sigprocmask
将从输出中排除对rt_sigprocmask()的所有调用(对于debuggingRoR代码很有用,在构build使用pthread时似乎使这些调用非常多)。
apropos
描述每个手册页都有一个简短的描述。 apropossearch关键字实例的描述。
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)
幸运的是我只需要几次,但Magic SysRq键仍然是我最喜欢的隐藏function之一。
Alt + SysRq的+ RSEIUB
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
这并不是真的那么隐蔽,但对于那些没有经验的人来说可能是这样,但是我真的很喜欢能够列出并让bash扩展它们,如:
cp arq{,.bak}
这与打字相同
cp arq arq.bak
我也使用历史快捷键(我不认为这是正确的术语,但…)
!!
重复上一个命令,或者
^foo^bar
在最后一个命令中用bar代替foo
ssh-copy-id用于传输ssh密钥。 旧的方法是通过SSH的关键,甚至更年长的是scp的关键,然后猫的关键。 如果你使用的是一个非标准的ssh端口,那么这将为你做诡计。
ssh-copy-id -i / path / to / key'-p nonstandardport hostname'
除此以外..
ssh-copy-id -i / path / to / key主机名
虚拟控制台。 大多数人知道如何使用(Ctrl-)Alt-F1去第一个控制台等等,但是如果你有超过12个的话? 您可以使用Alt-Left和Alt-Right循环切换其余部分。 😀
我喜欢debian-goodies包:
描述:用于Debian系统的小型工具箱式实用程序 这些程序旨在与标准shell工具集成, 扩展它们在Debian包装系统上运行。 。 dgrep - 在指定的包中search正则expression式的所有文件 dglob - 生成一个匹配模式的软件包名称列表 。 这些也包括在内,因为它们是有用的,不合理的 自己的套餐: 。 debget - 在APT的数据库中获取一个.deb包 dpigs - 显示哪些安装的软件包占用最多的空间 debman - 轻松查看二进制.deb中的手册页而无需解压 debmany - select已安装或已卸载软件包的联机帮助页 checkrestart - 帮助find并重新使用旧的进程 升级文件的版本(如库) popbugs - 基于显示一个定制的发行关键错误列表 你使用的软件包(使用stream行比赛数据)
也moreutils,这是轮子上基本上真棒pipe道工具:
说明:额外的Unix工具 这是一个越来越多的unix工具,没有人认为 写三十年前。 。 到目前为止,它包括以下工具: - 海绵:吸收标准input并写入文件 - ifdata:获取networking接口信息,而不分析ifconfig输出 - ifne:如果标准input不为空,则运行一个程序 - vidir:在你的文本编辑器中编辑一个目录 - vipe:插入一个文本编辑器到pipe道中 - ts:时间戳标准input - 组合:使用布尔操作在两个文件中合并行 - 小便:三通标准inputpipe道 - zrun:自动解压参数到命令 - 错误pipe道:pipe道两个命令,返回第一个的退出状态 - isutf8:检查文件或标准input是否是utf-8 - lckdo:执行一个locking的程序 主页:http://kitenet.net/~joey/code/moreutils/
我每天在工作中使用的一个很好的“function”:能够让SSH在443端口上侦听,这样我就可以创build一个绕过我的工作防火墙的隧道,允许我运行一个通过SSH隧道传输的本地SOCKS代理服务器, 。
我完全可以忽略我的公司防火墙。
我一直很喜欢帮助那些对这个系统陌生的人。
也许与Windows相比,Linux的强大function之一就是在devise上没有隐藏的function。 希望如果任何没有logging的function足够重要,以了解社区的工作。
这里有一些我经常使用的:
sar
– 显示系统活动 vmstat
– 虚拟内存统计信息 iostat
– io统计 pkill
– 像pgrep
但允许你杀死返回的进程ID xargs -I<string>
– 允许用pipe道数据replacestring at
– 安排一项任务 tkdiff
– graphicsdiff
实用程序 这些可能不是“隐藏”的,但我觉得它们非常有用:
df -hk
– 以可读格式显示磁盘使用情况 ls -ltr
– 按datesorting的文件列表 while :; do...done
while :; do...done
– (Bash)更换watch
如果不可用 perl -e
– 在命令行上运行一个Perl
代码片段 free -kt
– 显示内存信息(千字节总数) 从一些很棒的Linux技巧开始这篇文章 。 我最喜欢的是pstree,它以树形格式显示你的进程,所以你可以看到哪个进程产生了哪个进程。
curl击败wget的地狱几乎任何你会使用wget的。
zgrep和zless非常适合searchgzip日志文件,因此您不必通过gunzippipe道或在/ var / log中保留未压缩的东西。
这个概念是, Linux中的一切都是一个文件 。
所有configuration都在文本文件中,Linux中的所有内容都被视为一个文件。 这是一个非常简单的方法,这使得在Linux中改变事物变得非常容易。 在Linux甚至你的文件系统本身可以被视为一个文件。
ESC + 。
将上一行的最后一个参数粘贴到当前提示中
例如
ls -l /home/someuser/somedir/somefile
其次是
rm
ESC + 。
翻译成
rm /home/someuser/somedir/somefile
我看到了很好的命令:
yes | do_you_agree
从手册页:
NAME yes - output a string repeatedly until killed SYNOPSIS yes [STRING]... yes OPTION
它是开源的。 如果你懒得看,没有什么是“隐藏的”。
隐藏的function是没有隐藏的function。 该系统提供了您可以完全访问的大量电力。 你必须了解它的每一个部分和每一个可用的工具,以了解你的指尖是什么力量。
您应该先了解/ bin,/ sbin,/ usr / bin,/ usr / sbin中的每个命令以及/ proc中的每个虚拟文件。 根据需要阅读联机帮助页,其他文档和源代码。
如果您不舒服阅读手册页或阅读源代码,那是您的隐藏function。
grep , awk和sed
最佳
od
– 以八进制和其他格式转储文件。 用于检查例如在文件开头是否有一些BOM废物 file
– 可能是给定文件的文件types? lshw
, lsusb
, lspci
– 列表硬件 tracepath
– 我们在这里处理MTU问题吗? netwox
包含200多个networking相关的工具 ip
– 用于networkingconfiguration/信息 sysctl
– 文件系统/networking/内核信息 ebtables
– iptables的桥梁 vconfig
– VLANconfiguration brctl
– 网桥configuration socat
– netcat
的类固醇 ipgrab
– ipgrab
tcpdump
的实用程序,可以打印详细的标题信息 dig
– 现在怎么了DNS服务器? tee
真棒。 输出到屏幕和日志文件? 检查。
今天刚刚find这个:
dmidecode :
按照SMBIOS / DMI标准报告系统BIOS中所述的有关系统硬件的信息。 这些信息通常包括系统制造商,型号名称,序列号,BIOS版本,资产标签以及许多不同级别的兴趣和可靠性的其他细节,具体取决于制造商。 这通常包括CPU插槽,扩展插槽(例如AGP,PCI,ISA)和内存模块插槽以及I / O端口列表(例如串行,并行,USB)的使用状态。
它绝对使得在colo设备上关于一些随机服务器27的问题更容易回答!
不是真正的Linux事情,更多的是Bash的事情:进程替代,
diff some_local_file <(ssh somehost "cat some_remote_file")
这可以将通过SSH检索到的本地文件和远程文件在一行中区分开来。